{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+Vm9ydGV4IEFsdGl0dWRlIEFzc2Vzc21lbnQgfiBUaGUgU3VtbWl0IH4gU2hlIEV2b2x2ZXMgQWZyaWNhPC90aXRsZT4KPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkRpc2NvdmVyIHlvdXIgZGlnaXRhbCBzb3ZlcmVpZ250eSBhbHRpdHVkZS4gVGhlIFZvcnRleCBBbHRpdHVkZSBBc3Nlc3NtZW50IGJ5IFNoZSBFdm9sdmVzIEFmcmljYSB+IGZpbmQgb3V0IHdoZXJlIHlvdSB0cnVseSBzdGFuZCBhbmQgZXhhY3RseSB3aGVyZSB0byBnbyBuZXh0LiI+CjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMUIzQTZCIj4KPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIj4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNjAwOzAsNzAwOzEsNDAwJmZhbWlseT1PdXRmaXQ6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KCjxzdHlsZT4KKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7IG1hcmdpbjowOyBwYWRkaW5nOjA7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfQpodG1sIHsgc2Nyb2xsLWJlaGF2aW9yOnNtb290aDsgfQoKOnJvb3QgewogIC0tbmF2eTogICAgICAjMUIzQTZCOwogIC0tbmF2eS1kZWVwOiAjMEQyMjQ3OwogIC0tbmF2eS1taWQ6ICAjMkM1MjgyOwogIC0tZ29sZDogICAgICAjQzk5NTFBOwogIC0tZ29sZDI6ICAgICAjRThCNDMyOwogIC0tZ29sZDM6ICAgICAjRjVEMDYwOwogIC0tZ3JleTogICAgICAjNEE1NTY4OwogIC0tZ3JleS1taWQ6ICAjNzE4MDk2OwogIC0td2hpdGU6ICAgICAjRkZGRkZGOwogIC0tZGFyazogICAgICAjMDcwRDFBOwogIC8qIExldmVsIGNvbG91cnMgKi8KICAtLWludmlzaWJsZTogICAjNEE1NTY4OwogIC0tZW1lcmdpbmc6ICAgICMyQzdBN0I7CiAgLS12aXNpYmxlOiAgICAgIzJCNkNCMDsKICAtLWluZmx1ZW50aWFsOiAjNkI0NkMxOwogIC0tc292ZXJlaWduOiAgICNDOTk1MUE7Cn0KCmJvZHkgewogIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICBiYWNrZ3JvdW5kOiB2YXIoLS1kYXJrKTsKICBtaW4taGVpZ2h0OiAxMDB2aDsKICBvdmVyZmxvdy14OiBoaWRkZW47Cn0KCi5wYWdlLWJnIHsKICBwb3NpdGlvbjogZml4ZWQ7IGluc2V0OiAwOyB6LWluZGV4OiAwOwogIGJhY2tncm91bmQ6CiAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCAyMCUgMTUlLCByZ2JhKDI3LDU4LDEwNywwLjgpIDAlLCB0cmFuc3BhcmVudCA1NSUpLAogICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgODAlIDg1JSwgcmdiYSgyMDEsMTQ5LDI2LDAuMTgpIDAlLCB0cmFuc3BhcmVudCA1MCUpLAogICAgIzA3MEQxQTsKfQoKLyog4pSA4pSAIEZMT0FUSUVTIOKUgOKUgCAqLwouZmxvYXRpZXMgeyBwb3NpdGlvbjpmaXhlZDsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgei1pbmRleDoxOyBvdmVyZmxvdzpoaWRkZW47IH0KLmZsb2F0aWUgIHsgcG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTotNjBweDsgYW5pbWF0aW9uOmZsb2F0VXAgbGluZWFyIGluZmluaXRlOyBvcGFjaXR5OjA7IH0KQGtleWZyYW1lcyBmbG9hdFVwIHsKICAwJSAgIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMCkgcm90YXRlKC0zZGVnKTsgICAgb3BhY2l0eTowOyB9CiAgNiUgICB7IG9wYWNpdHk6MC40OyB9CiAgOTAlICB7IG9wYWNpdHk6MC4xMjsgfQogIDEwMCUgeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMTEwdmgpIHJvdGF0ZSgxMGRlZyk7IG9wYWNpdHk6MDsgfQp9CgovKiDilIDilIAgV1JBUCDilIDilIAgKi8KLndyYXAgewogIHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjEwOwogIG1pbi1oZWlnaHQ6MTAwdmg7CiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsKICBwYWRkaW5nOjAgMXJlbSA0cmVtOwp9CgovKiDilIDilIAgSEVBREVSIOKUgOKUgCAqLwouaGVhZGVyIHsKICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NjIwcHg7CiAgcGFkZGluZzoyLjVyZW0gMS41cmVtIDEuOHJlbTsKICB0ZXh0LWFsaWduOmNlbnRlcjsKfQouaGVhZGVyLWJyYW5kIHsKICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZ2FwOjAuNXJlbTsKICBtYXJnaW4tYm90dG9tOjEuMnJlbTsKfQouaGVhZGVyLWJyYW5kIC5jcm93biB7IGZvbnQtc2l6ZToxLjZyZW07IGZpbHRlcjpkcm9wLXNoYWRvdygwIDAgMTJweCByZ2JhKDIwMSwxNDksMjYsMC44KSk7IH0KLmhlYWRlci1icmFuZCAuYnJhbmQtdGV4dCB7IGZvbnQtZmFtaWx5OidDb3Jtb3JhbnQgR2FyYW1vbmQnLHNlcmlmOyBmb250LXNpemU6MXJlbTsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1nb2xkMik7IGxldHRlci1zcGFjaW5nOjAuMTVlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9CgouaGVhZGVyIGgxIHsgZm9udC1mYW1pbHk6J0Nvcm1vcmFudCBHYXJhbW9uZCcsc2VyaWY7IGZvbnQtc2l6ZToyLjRyZW07IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6dmFyKC0td2hpdGUpOyBsaW5lLWhlaWdodDoxLjE1OyBtYXJnaW4tYm90dG9tOjAuNXJlbTsgfQouaGVhZGVyIGgxIHNwYW4geyBjb2xvcjp2YXIoLS1nb2xkMik7IH0KLmhlYWRlciBwIHsgZm9udC1zaXplOjAuODVyZW07IGNvbG9yOnZhcigtLWdyZXktbWlkKTsgbGluZS1oZWlnaHQ6MS42NTsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvIDEuMnJlbTsgfQoKLyogYWx0aXR1ZGUgcHJldmlldyBzdHJpcCAqLwouYWx0aXR1ZGUtc3RyaXAgewogIGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MC4zcmVtOwogIGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tYm90dG9tOjAuNXJlbTsKfQouYWx0LXBpcCB7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MC4zcmVtOyB9Ci5hbHQtZG90IHsgd2lkdGg6OHB4OyBoZWlnaHQ6OHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfQouYWx0LWxhYmVsIHsgZm9udC1zaXplOjAuNnJlbTsgbGV0dGVyLXNwYWNpbmc6MC4xMmVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLWdyZXktbWlkKTsgfQouYWx0LXNlcCB7IGZvbnQtc2l6ZTowLjZyZW07IGNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC4xNSk7IH0KCi8qIOKUgOKUgCBQUk9HUkVTUyBCQVIg4pSA4pSAICovCi5wcm9ncmVzcy13cmFwIHsgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjYyMHB4OyBwYWRkaW5nOjAgMS41cmVtOyBtYXJnaW4tYm90dG9tOjEuNXJlbTsgfQoucHJvZ3Jlc3MtaGVhZGVyIHsgZGlzcGxheTpmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgbWFyZ2luLWJvdHRvbTowLjRyZW07IH0KLnByb2dyZXNzLWhlYWRlciBzcGFuIHsgZm9udC1zaXplOjAuNjJyZW07IGxldHRlci1zcGFjaW5nOjAuMTVlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyBjb2xvcjp2YXIoLS1ncmV5LW1pZCk7IH0KLnByb2dyZXNzLWhlYWRlciAucS1jb3VudCB7IGNvbG9yOnZhcigtLWdvbGQpOyBmb250LXdlaWdodDo2MDA7IH0KLnByb2dyZXNzLXRyYWNrIHsgaGVpZ2h0OjRweDsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMDgpOyBib3JkZXItcmFkaXVzOjRweDsgb3ZlcmZsb3c6aGlkZGVuOyB9Ci5wcm9ncmVzcy1maWxsIHsgaGVpZ2h0OjEwMCU7IGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDkwZGVnLHZhcigtLW5hdnktbWlkKSx2YXIoLS1nb2xkKSk7IGJvcmRlci1yYWRpdXM6NHB4OyB0cmFuc2l0aW9uOndpZHRoIDAuNXMgZWFzZTsgd2lkdGg6MCU7IH0KCi8qIOKUgOKUgCBRVUVTVElPTiBDQVJEIOKUgOKUgCAqLwoucS1zdGFnZSB7IHdpZHRoOjEwMCU7IG1heC13aWR0aDo2MjBweDsgfQoKLnEtY2FyZCB7CiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDI3LDU4LDEwNywwLjQ1KSAwJSwgcmdiYSgxMywzNCw3MSwwLjgpIDEwMCUpOwogIGJvcmRlcjoxcHggc29saWQgcmdiYSgyMDEsMTQ5LDI2LDAuMjUpOwogIGJvcmRlci1yYWRpdXM6MThweDsKICBwYWRkaW5nOjEuOHJlbSAxLjZyZW0gMS40cmVtOwogIG1hcmdpbi1ib3R0b206MXJlbTsKICBhbmltYXRpb246Y2FyZEluIDAuNHMgZWFzZSBmb3J3YXJkczsKfQpAa2V5ZnJhbWVzIGNhcmRJbiB7IGZyb20geyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB9IHRvIHsgb3BhY2l0eToxOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKTsgfSB9CgoucS1kaW1lbnNpb24gewogIGZvbnQtc2l6ZTowLjU4cmVtOyBmb250LXdlaWdodDo2MDA7IGxldHRlci1zcGFjaW5nOjAuMjVlbTsKICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLWdvbGQpOyBtYXJnaW4tYm90dG9tOjAuNnJlbTsgZGlzcGxheTpibG9jazsKfQoucS1udW1iZXIgeyBmb250LXNpemU6MC42NXJlbTsgY29sb3I6dmFyKC0tZ3JleS1taWQpOyBtYXJnaW4tYm90dG9tOjAuM3JlbTsgZGlzcGxheTpibG9jazsgfQoucS10ZXh0IHsKICBmb250LWZhbWlseTonQ29ybW9yYW50IEdhcmFtb25kJyxzZXJpZjsKICBmb250LXNpemU6MS4zNXJlbTsgZm9udC13ZWlnaHQ6NjAwOwogIGNvbG9yOnZhcigtLXdoaXRlKTsgbGluZS1oZWlnaHQ6MS40NTsgbWFyZ2luLWJvdHRvbToxLjRyZW07Cn0KCi8qIGFuc3dlciBvcHRpb25zICovCi5hbnN3ZXJzIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDowLjU1cmVtOyB9Ci5hbnN3ZXItYnRuIHsKICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDowLjg1cmVtOwogIHBhZGRpbmc6MC44NXJlbSAxcmVtOwogIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjA0KTsKICBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsKICBib3JkZXItcmFkaXVzOjEwcHg7IGN1cnNvcjpwb2ludGVyOwogIHRleHQtYWxpZ246bGVmdDsgdHJhbnNpdGlvbjphbGwgMC4yczsKICB3aWR0aDoxMDAlOwp9Ci5hbnN3ZXItYnRuOmhvdmVyIHsgYmFja2dyb3VuZDpyZ2JhKDI3LDU4LDEwNywwLjUpOyBib3JkZXItY29sb3I6cmdiYSgyMDEsMTQ5LDI2LDAuNCk7IHRyYW5zZm9ybTp0cmFuc2xhdGVYKDRweCk7IH0KLmFuc3dlci1idG4uc2VsZWN0ZWQgeyBiYWNrZ3JvdW5kOnJnYmEoMjAxLDE0OSwyNiwwLjE1KTsgYm9yZGVyLWNvbG9yOnZhcigtLWdvbGQpOyB9Ci5hbnN3ZXItYnRuLnNlbGVjdGVkIC5hLWxldHRlciB7IGJhY2tncm91bmQ6dmFyKC0tZ29sZCk7IGNvbG9yOnZhcigtLWRhcmspOyB9CgouYS1sZXR0ZXIgewogIG1pbi13aWR0aDoyNnB4OyBoZWlnaHQ6MjZweDsKICBiYWNrZ3JvdW5kOnJnYmEoMjcsNTgsMTA3LDAuOCk7CiAgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDIwMSwxNDksMjYsMC4zKTsKICBib3JkZXItcmFkaXVzOjZweDsKICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsKICBmb250LXNpemU6MC43cmVtOyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWdvbGQpOwogIGZsZXgtc2hyaW5rOjA7IG1hcmdpbi10b3A6MXB4OyB0cmFuc2l0aW9uOmFsbCAwLjJzOwp9Ci5hLXRleHQgeyBmb250LXNpemU6MC44MnJlbTsgY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjg1KTsgbGluZS1oZWlnaHQ6MS41OyB9CgovKiBuZXh0IGJ1dHRvbiAqLwoubmV4dC1idG4gewogIHdpZHRoOjEwMCU7IHBhZGRpbmc6MC45cmVtOwogIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkKSAwJSwjQTg3QTEyIDEwMCUpOwogIGNvbG9yOnZhcigtLWRhcmspOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4OwogIGZvbnQtZmFtaWx5OidPdXRmaXQnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTowLjg4cmVtOyBmb250LXdlaWdodDo3MDA7CiAgY3Vyc29yOnBvaW50ZXI7IGxldHRlci1zcGFjaW5nOjAuMDRlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOwogIHRyYW5zaXRpb246YWxsIDAuMjJzOyBvcGFjaXR5OjAuNDsgcG9pbnRlci1ldmVudHM6bm9uZTsKICBib3gtc2hhZG93OjAgNHB4IDIwcHggcmdiYSgyMDEsMTQ5LDI2LDAuMjUpOwp9Ci5uZXh0LWJ0bi5hY3RpdmUgeyBvcGFjaXR5OjE7IHBvaW50ZXItZXZlbnRzOmF1dG87IGJveC1zaGFkb3c6MCA0cHggMjRweCByZ2JhKDIwMSwxNDksMjYsMC40KTsgfQoubmV4dC1idG4uYWN0aXZlOmhvdmVyIHsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJveC1zaGFkb3c6MCA4cHggMzJweCByZ2JhKDIwMSwxNDksMjYsMC41KTsgfQoKLyog4pSA4pSAIElOVFJPIFNDUkVFTiDilIDilIAgKi8KLmludHJvLXNjcmVlbiB7CiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjYyMHB4OwogIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyNyw1OCwxMDcsMC40NSkgMCUsIHJnYmEoMTMsMzQsNzEsMC44NSkgMTAwJSk7CiAgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDIwMSwxNDksMjYsMC4zKTsKICBib3JkZXItcmFkaXVzOjIwcHg7IHBhZGRpbmc6Mi4ycmVtIDEuOHJlbTsKICB0ZXh0LWFsaWduOmNlbnRlcjsKfQouaW50cm8tY3Jvd24geyBmb250LXNpemU6My41cmVtOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW4tYm90dG9tOjFyZW07IGZpbHRlcjpkcm9wLXNoYWRvdygwIDAgMjRweCByZ2JhKDIwMSwxNDksMjYsMC45KSk7IGFuaW1hdGlvbjpjcm93blB1bHNlIDIuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7IH0KQGtleWZyYW1lcyBjcm93blB1bHNlIHsKICAwJSwxMDAlIHsgZmlsdGVyOmRyb3Atc2hhZG93KDAgMCAyMHB4IHJnYmEoMjAxLDE0OSwyNiwwLjcpKTsgdHJhbnNmb3JtOnNjYWxlKDEpOyB9CiAgNTAlICAgICAgeyBmaWx0ZXI6ZHJvcC1zaGFkb3coMCAwIDQwcHggcmdiYSgyMDEsMTQ5LDI2LDEpKTsgdHJhbnNmb3JtOnNjYWxlKDEuMDcpOyB9Cn0KLmludHJvLXNjcmVlbiBoMiB7IGZvbnQtZmFtaWx5OidDb3Jtb3JhbnQgR2FyYW1vbmQnLHNlcmlmOyBmb250LXNpemU6MS45cmVtOyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXdoaXRlKTsgbWFyZ2luLWJvdHRvbTowLjVyZW07IGxpbmUtaGVpZ2h0OjEuMjsgfQouaW50cm8tc2NyZWVuIGgyIGVtIHsgY29sb3I6dmFyKC0tZ29sZDIpOyBmb250LXN0eWxlOml0YWxpYzsgfQouaW50cm8tc2NyZWVuIHAgeyBmb250LXNpemU6MC44M3JlbTsgY29sb3I6dmFyKC0tZ3JleS1taWQpOyBsaW5lLWhlaWdodDoxLjc7IG1hcmdpbi1ib3R0b206MS40cmVtOyBtYXgtd2lkdGg6NDIwcHg7IG1hcmdpbi1sZWZ0OmF1dG87IG1hcmdpbi1yaWdodDphdXRvOyB9CgoubGV2ZWxzLXByZXZpZXcgeyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjAuNHJlbTsgbWFyZ2luLWJvdHRvbToxLjZyZW07IHRleHQtYWxpZ246bGVmdDsgfQoubGV2ZWwtcm93IHsKICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjAuNzVyZW07CiAgcGFkZGluZzowLjVyZW0gMC43NXJlbTsgYm9yZGVyLXJhZGl1czo4cHg7CiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LDAuMDMpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4wNik7Cn0KLmxldmVsLWljb24geyBmb250LXNpemU6MS4xcmVtOyB3aWR0aDoyNHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgfQoubGV2ZWwtbmFtZSB7IGZvbnQtc2l6ZTowLjc4cmVtOyBmb250LXdlaWdodDo2MDA7IH0KLmxldmVsLWRlc2MgeyBmb250LXNpemU6MC42OHJlbTsgY29sb3I6dmFyKC0tZ3JleS1taWQpOyBtYXJnaW4tbGVmdDphdXRvOyB0ZXh0LWFsaWduOnJpZ2h0OyBtYXgtd2lkdGg6MTgwcHg7IGxpbmUtaGVpZ2h0OjEuMzsgfQoKLnN0YXJ0LWJ0biB7CiAgd2lkdGg6MTAwJTsgcGFkZGluZzoxcmVtOwogIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1nb2xkKSAwJSwjQTg3QTEyIDEwMCUpOwogIGNvbG9yOnZhcigtLWRhcmspOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMnB4OwogIGZvbnQtZmFtaWx5OidPdXRmaXQnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTowLjk1cmVtOyBmb250LXdlaWdodDo3MDA7CiAgY3Vyc29yOnBvaW50ZXI7IGxldHRlci1zcGFjaW5nOjAuMDRlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOwogIGJveC1zaGFkb3c6MCA2cHggMjhweCByZ2JhKDIwMSwxNDksMjYsMC40KTsgdHJhbnNpdGlvbjphbGwgMC4yMnM7Cn0KLnN0YXJ0LWJ0bjpob3ZlciB7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTBweCAzNnB4IHJnYmEoMjAxLDE0OSwyNiwwLjU1KTsgfQoKLyog4pSA4pSAIENBUFRVUkUgU0NSRUVOIOKUgOKUgCAqLwouY2FwdHVyZS1zY3JlZW4gewogIHdpZHRoOjEwMCU7IG1heC13aWR0aDo2MjBweDsKICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjcsNTgsMTA3LDAuNDUpIDAlLCByZ2JhKDEzLDM0LDcxLDAuODUpIDEwMCUpOwogIGJvcmRlcjoxcHggc29saWQgcmdiYSgyMDEsMTQ5LDI2LDAuMyk7CiAgYm9yZGVyLXJhZGl1czoyMHB4OyBwYWRkaW5nOjJyZW0gMS44cmVtOwp9Ci5jYXB0dXJlLXNjcmVlbiBoMiB7IGZvbnQtZmFtaWx5OidDb3Jtb3JhbnQgR2FyYW1vbmQnLHNlcmlmOyBmb250LXNpemU6MS42cmVtOyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXdoaXRlKTsgbWFyZ2luLWJvdHRvbTowLjRyZW07IH0KLmNhcHR1cmUtc2NyZWVuIHAgeyBmb250LXNpemU6MC44cmVtOyBjb2xvcjp2YXIoLS1ncmV5LW1pZCk7IG1hcmdpbi1ib3R0b206MS40cmVtOyBsaW5lLWhlaWdodDoxLjY7IH0KLmZpZWxkIHsgbWFyZ2luLWJvdHRvbTowLjc1cmVtOyB9Ci5maWVsZCBpbnB1dCB7CiAgd2lkdGg6MTAwJTsgcGFkZGluZzowLjhyZW0gMXJlbTsKICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4wNik7IGJvcmRlcjoxcHggc29saWQgcmdiYSgyMDEsMTQ5LDI2LDAuMik7CiAgYm9yZGVyLXJhZGl1czo5cHg7IGZvbnQtZmFtaWx5OidPdXRmaXQnLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTowLjg1cmVtOwogIGNvbG9yOnZhcigtLXdoaXRlKTsgb3V0bGluZTpub25lOyB0cmFuc2l0aW9uOmJvcmRlciAwLjJzOwp9Ci5maWVsZCBpbnB1dDo6cGxhY2Vob2xkZXIgeyBjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuMyk7IH0KLmZpZWxkIGlucHV0OmZvY3VzIHsgYm9yZGVyLWNvbG9yOnZhcigtLWdvbGQpOyB9Ci5yZXZlYWwtYnRuIHsKICB3aWR0aDoxMDAlOyBwYWRkaW5nOjAuOTVyZW07CiAgYmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLHZhcigtLW5hdnkpIDAlLHZhcigtLW5hdnktZGVlcCkgMTAwJSk7CiAgY29sb3I6dmFyKC0tZ29sZCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tZ29sZCk7CiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LWZhbWlseTonT3V0Zml0JyxzYW5zLXNlcmlmOwogIGZvbnQtc2l6ZTowLjlyZW07IGZvbnQtd2VpZ2h0OjcwMDsgY3Vyc29yOnBvaW50ZXI7CiAgbGV0dGVyLXNwYWNpbmc6MC4wNWVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IHRyYW5zaXRpb246YWxsIDAuMnM7CiAgbWFyZ2luLXRvcDowLjRyZW07Cn0KLnJldmVhbC1idG46aG92ZXIgeyBiYWNrZ3JvdW5kOnJnYmEoMjAxLDE0OSwyNiwwLjE1KTsgfQouc2tpcC1saW5rIHsgZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MC43NXJlbTsgZm9udC1zaXplOjAuNjhyZW07IGNvbG9yOnZhcigtLWdyZXktbWlkKTsgY3Vyc29yOnBvaW50ZXI7IGxldHRlci1zcGFjaW5nOjAuMWVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IHRleHQtdW5kZXJsaW5lLW9mZnNldDozcHg7IH0KLnNraXAtbGluazpob3ZlciB7IGNvbG9yOnZhcigtLWdvbGQpOyB9CgovKiDilIDilIAgUkVTVUxUIFNDUkVFTiDilIDilIAgKi8KLnJlc3VsdC1zY3JlZW4geyB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NjIwcHg7IH0KCi5yZXN1bHQtaGVybyB7CiAgYm9yZGVyLXJhZGl1czoxOHB4OyBwYWRkaW5nOjIuMnJlbSAxLjhyZW0gMS44cmVtOwogIHRleHQtYWxpZ246Y2VudGVyOyBtYXJnaW4tYm90dG9tOjFyZW07CiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsKfQoucmVzdWx0LWhlcm86OmJlZm9yZSB7IGNvbnRlbnQ6Jyc7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBiYWNrZ3JvdW5kLWltYWdlOiByZXBlYXRpbmctbGluZWFyLWdyYWRpZW50KC00NWRlZywgdHJhbnNwYXJlbnQsIHRyYW5zcGFyZW50IDE4cHgsIHJnYmEoMjU1LDI1NSwyNTUsMC4wMikgMThweCwgcmdiYSgyNTUsMjU1LDI1NSwwLjAyKSAxOXB4KTsgcG9pbnRlci1ldmVudHM6bm9uZTsgfQoKLnJlc3VsdC1sZXZlbC1iYWRnZSB7CiAgZGlzcGxheTppbmxpbmUtYmxvY2s7CiAgcGFkZGluZzowLjM1cmVtIDFyZW07IGJvcmRlci1yYWRpdXM6MjBweDsKICBmb250LXNpemU6MC42MnJlbTsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzowLjJlbTsKICB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IG1hcmdpbi1ib3R0b206MXJlbTsKfQoucmVzdWx0LWNyb3duIHsgZm9udC1zaXplOjNyZW07IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi1ib3R0b206MC43cmVtOyB9Ci5yZXN1bHQtc2NyZWVuIGgyIHsgZm9udC1mYW1pbHk6J0Nvcm1vcmFudCBHYXJhbW9uZCcsc2VyaWY7IGZvbnQtc2l6ZToyLjJyZW07IGZvbnQtd2VpZ2h0OjcwMDsgbGluZS1oZWlnaHQ6MS4xOyBtYXJnaW4tYm90dG9tOjAuNXJlbTsgfQoucmVzdWx0LXRhZ2xpbmUgeyBmb250LWZhbWlseTonQ29ybW9yYW50IEdhcmFtb25kJyxzZXJpZjsgZm9udC1zaXplOjEuMXJlbTsgZm9udC1zdHlsZTppdGFsaWM7IGxpbmUtaGVpZ2h0OjEuNjsgbWFyZ2luLWJvdHRvbToxLjJyZW07IG9wYWNpdHk6MC45OyB9CgovKiBzY29yZSBtZXRlciAqLwouc2NvcmUtbWV0ZXIgeyBtYXJnaW46MXJlbSAwOyB9Ci5tZXRlci1sYWJlbCB7IGRpc3BsYXk6ZmxleDsganVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206MC40cmVtOyB9Ci5tZXRlci1sYWJlbCBzcGFuIHsgZm9udC1zaXplOjAuNjJyZW07IGxldHRlci1zcGFjaW5nOjAuMTJlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlOyB9Ci5tZXRlci10cmFjayB7IGhlaWdodDo4cHg7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjEpOyBib3JkZXItcmFkaXVzOjhweDsgb3ZlcmZsb3c6aGlkZGVuOyB9Ci5tZXRlci1maWxsIHsgaGVpZ2h0OjEwMCU7IGJvcmRlci1yYWRpdXM6OHB4OyB0cmFuc2l0aW9uOndpZHRoIDEuNXMgZWFzZTsgd2lkdGg6MCU7IH0KCi8qIGRpbWVuc2lvbiBzY29yZXMgKi8KLmRpbS1zY29yZXMgeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczoxZnIgMWZyOyBnYXA6MC41cmVtOyBtYXJnaW46MXJlbSAwOyB9Ci5kaW0tY2FyZCB7IHBhZGRpbmc6MC43cmVtIDAuOHJlbTsgYm9yZGVyLXJhZGl1czoxMHB4OyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsgfQouZGltLW5hbWUgeyBmb250LXNpemU6MC41OHJlbTsgbGV0dGVyLXNwYWNpbmc6MC4xNWVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IGNvbG9yOnZhcigtLWdyZXktbWlkKTsgZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTowLjNyZW07IH0KLmRpbS1iYXItd3JhcCB7IGhlaWdodDo0cHg7IGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwwLjA4KTsgYm9yZGVyLXJhZGl1czo0cHg7IG92ZXJmbG93OmhpZGRlbjsgfQouZGltLWJhciB7IGhlaWdodDoxMDAlOyBib3JkZXItcmFkaXVzOjRweDsgdHJhbnNpdGlvbjp3aWR0aCAxLjVzIGVhc2UgMC4zczsgfQoKLyogcmVzdWx0IGJvZHkgKi8KLnJlc3VsdC1ib2R5IHsKICBiYWNrZ3JvdW5kOnJnYmEoMTMsMzQsNzEsMC42KTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDIwMSwxNDksMjYsMC4yKTsKICBib3JkZXItcmFkaXVzOjE0cHg7IHBhZGRpbmc6MS40cmVtOyBtYXJnaW4tYm90dG9tOjFyZW07Cn0KLnJlc3VsdC1ib2R5IGgzIHsgZm9udC1mYW1pbHk6J0Nvcm1vcmFudCBHYXJhbW9uZCcsc2VyaWY7IGZvbnQtc2l6ZToxLjJyZW07IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0td2hpdGUpOyBtYXJnaW4tYm90dG9tOjAuNnJlbTsgfQoucmVzdWx0LWJvZHkgcCB7IGZvbnQtc2l6ZTowLjgycmVtOyBjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuOCk7IGxpbmUtaGVpZ2h0OjEuNzsgbWFyZ2luLWJvdHRvbTowLjhyZW07IH0KLnJlc3VsdC1ib2R5IHVsIHsgbGlzdC1zdHlsZTpub25lOyB9Ci5yZXN1bHQtYm9keSB1bCBsaSB7IGZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC43NSk7IHBhZGRpbmc6MC4zcmVtIDA7IHBhZGRpbmctbGVmdDoxLjJyZW07IHBvc2l0aW9uOnJlbGF0aXZlOyBsaW5lLWhlaWdodDoxLjU7IH0KLnJlc3VsdC1ib2R5IHVsIGxpOjpiZWZvcmUgeyBjb250ZW50OifinKYnOyBwb3NpdGlvbjphYnNvbHV0ZTsgbGVmdDowOyBjb2xvcjp2YXIoLS1nb2xkKTsgZm9udC1zaXplOjAuNnJlbTsgdG9wOjAuNHJlbTsgfQoKLyogQ1RBICovCi5yZXN1bHQtY3RhIHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDowLjZyZW07IH0KLnItYnRuIHsKICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZ2FwOjAuNnJlbTsKICBwYWRkaW5nOjAuOXJlbSAxLjJyZW07IGJvcmRlci1yYWRpdXM6MTBweDsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7CiAgZm9udC1mYW1pbHk6J091dGZpdCcsc2Fucy1zZXJpZjsgZm9udC1zaXplOjAuODVyZW07IGZvbnQtd2VpZ2h0OjYwMDsKICB0cmFuc2l0aW9uOmFsbCAwLjIyczsgY3Vyc29yOnBvaW50ZXI7IGJvcmRlcjpub25lOyB3aWR0aDoxMDAlOyBsZXR0ZXItc3BhY2luZzowLjAyZW07Cn0KLnItYnRuLXByaW1hcnkgeyBjb2xvcjp2YXIoLS1kYXJrKTsgYm94LXNoYWRvdzowIDRweCAyMHB4IHJnYmEoMjAxLDE0OSwyNiwwLjM1KTsgfQouci1idG4tcHJpbWFyeTpob3ZlciB7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyB9Ci5yLWJ0bi1zZWNvbmRhcnkgeyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50OyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjAxLDE0OSwyNiwwLjQpOyBjb2xvcjp2YXIoLS1nb2xkMik7IH0KLnItYnRuLXNlY29uZGFyeTpob3ZlciB7IGJhY2tncm91bmQ6cmdiYSgyMDEsMTQ5LDI2LDAuMSk7IGJvcmRlci1jb2xvcjp2YXIoLS1nb2xkKTsgfQoKLnJldGFrZS1saW5rIHsgZGlzcGxheTpibG9jazsgdGV4dC1hbGlnbjpjZW50ZXI7IG1hcmdpbi10b3A6MC44cmVtOyBmb250LXNpemU6MC42OHJlbTsgY29sb3I6dmFyKC0tZ3JleS1taWQpOyBjdXJzb3I6cG9pbnRlcjsgbGV0dGVyLXNwYWNpbmc6MC4xZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTsgfQoucmV0YWtlLWxpbms6aG92ZXIgeyBjb2xvcjp2YXIoLS1nb2xkKTsgfQoKLyogc2hhcmUgc3RyaXAgKi8KLnNoYXJlLXN0cmlwIHsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDowLjZyZW07IG1hcmdpbi10b3A6MXJlbTsgcGFkZGluZzowLjhyZW0gMXJlbTsgYmFja2dyb3VuZDpyZ2JhKDI3LDU4LDEwNywwLjMpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjAxLDE0OSwyNiwwLjE1KTsgYm9yZGVyLXJhZGl1czoxMHB4OyB9Ci5zaGFyZS10ZXh0IHsgZm9udC1zaXplOjAuNzJyZW07IGNvbG9yOnZhcigtLWdyZXktbWlkKTsgZmxleDoxOyBsaW5lLWhlaWdodDoxLjQ7IH0KLnNoYXJlLXRleHQgc3Ryb25nIHsgY29sb3I6dmFyKC0tZ29sZDIpOyBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MC43NXJlbTsgbWFyZ2luLWJvdHRvbTowLjFyZW07IH0KLnNoYXJlLWJ0biB7IHBhZGRpbmc6MC40NXJlbSAwLjlyZW07IGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tZ29sZCk7IGJvcmRlci1yYWRpdXM6N3B4OyBjb2xvcjp2YXIoLS1nb2xkKTsgZm9udC1zaXplOjAuN3JlbTsgZm9udC13ZWlnaHQ6NjAwOyBjdXJzb3I6cG9pbnRlcjsgbGV0dGVyLXNwYWNpbmc6MC4wOGVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IHdoaXRlLXNwYWNlOm5vd3JhcDsgdHJhbnNpdGlvbjphbGwgMC4yczsgfQouc2hhcmUtYnRuOmhvdmVyIHsgYmFja2dyb3VuZDpyZ2JhKDIwMSwxNDksMjYsMC4xNSk7IH0KCi8qIGhpZGRlbiB1dGlsaXR5ICovCi5oaWRkZW4geyBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsgfQoKLyog4pSA4pSAIEZPT1RFUiDilIDilIAgKi8KLmFzc2Vzc21lbnQtZm9vdGVyIHsgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjYyMHB4OyB0ZXh0LWFsaWduOmNlbnRlcjsgcGFkZGluZzoxLjVyZW0gMXJlbTsgfQouYXNzZXNzbWVudC1mb290ZXIgcCB7IGZvbnQtc2l6ZTowLjYycmVtOyBjb2xvcjp2YXIoLS1ncmV5LW1pZCk7IGxldHRlci1zcGFjaW5nOjAuMWVtOyB0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7IH0KLmFzc2Vzc21lbnQtZm9vdGVyIHNwYW4geyBjb2xvcjp2YXIoLS1nb2xkKTsgfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjbGFzcz0icGFnZS1iZyI+PC9kaXY+CjxkaXYgY2xhc3M9ImZsb2F0aWVzIiBpZD0iZmxvYXRpZXMiPjwvZGl2PgoKPGRpdiBjbGFzcz0id3JhcCI+CgogIDwhLS0gSEVBREVSIC0tPgogIDxkaXYgY2xhc3M9ImhlYWRlciI+CiAgICA8ZGl2IGNsYXNzPSJoZWFkZXItYnJhbmQiPgogICAgICA8c3BhbiBjbGFzcz0iY3Jvd24iPvCfkZE8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJicmFuZC10ZXh0Ij5TaGUgRXZvbHZlcyBBZnJpY2EgfiBWb3J0ZXggQWx0aXR1ZGU8L3NwYW4+CiAgICA8L2Rpdj4KICAgIDxoMT5XaGVyZSBEbyBZb3UgPHNwYW4+UmVhbGx5PC9zcGFuPiBTdGFuZD88L2gxPgogICAgPHA+TGlua2VkSW4gcHJvZmlsZXMgZ2xvdy4gRm9sbG93ZXIgY291bnRzIGNsaW1iLiBCdXQgcmVhbCBkaWdpdGFsIHNvdmVyZWlnbnR5IH4gdGhlIGtpbmQgeW91IG93biwgdGhlIGtpbmQgR29vZ2xlIGluZGV4ZXMsIHRoZSBraW5kIHRoYXQgb3V0bGl2ZXMgYW55IHBsYXRmb3JtIH4gdGVsbHMgYSBkaWZmZXJlbnQgc3RvcnkuIERpc2NvdmVyIHlvdXIgdHJ1ZSBhbHRpdHVkZS48L3A+CiAgICA8ZGl2IGNsYXNzPSJhbHRpdHVkZS1zdHJpcCI+CiAgICAgIDxkaXYgY2xhc3M9ImFsdC1waXAiPjxzcGFuIGNsYXNzPSJhbHQtZG90IiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1pbnZpc2libGUpIj48L3NwYW4+PHNwYW4gY2xhc3M9ImFsdC1sYWJlbCI+SW52aXNpYmxlPC9zcGFuPjwvZGl2PgogICAgICA8c3BhbiBjbGFzcz0iYWx0LXNlcCI+4oaSPC9zcGFuPgogICAgICA8ZGl2IGNsYXNzPSJhbHQtcGlwIj48c3BhbiBjbGFzcz0iYWx0LWRvdCIgc3R5bGU9ImJhY2tncm91bmQ6dmFyKC0tZW1lcmdpbmcpIj48L3NwYW4+PHNwYW4gY2xhc3M9ImFsdC1sYWJlbCI+RW1lcmdpbmc8L3NwYW4+PC9kaXY+CiAgICAgIDxzcGFuIGNsYXNzPSJhbHQtc2VwIj7ihpI8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImFsdC1waXAiPjxzcGFuIGNsYXNzPSJhbHQtZG90IiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS12aXNpYmxlKSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJhbHQtbGFiZWwiPlZpc2libGU8L3NwYW4+PC9kaXY+CiAgICAgIDxzcGFuIGNsYXNzPSJhbHQtc2VwIj7ihpI8L3NwYW4+CiAgICAgIDxkaXYgY2xhc3M9ImFsdC1waXAiPjxzcGFuIGNsYXNzPSJhbHQtZG90IiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1pbmZsdWVudGlhbCkiPjwvc3Bhbj48c3BhbiBjbGFzcz0iYWx0LWxhYmVsIj5JbmZsdWVudGlhbDwvc3Bhbj48L2Rpdj4KICAgICAgPHNwYW4gY2xhc3M9ImFsdC1zZXAiPuKGkjwvc3Bhbj4KICAgICAgPGRpdiBjbGFzcz0iYWx0LXBpcCI+PHNwYW4gY2xhc3M9ImFsdC1kb3QiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLXNvdmVyZWlnbikiPjwvc3Bhbj48c3BhbiBjbGFzcz0iYWx0LWxhYmVsIj5Tb3ZlcmVpZ248L3NwYW4+PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPCEtLSBQUk9HUkVTUyAtLT4KICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy13cmFwIGhpZGRlbiIgaWQ9InByb2dyZXNzV3JhcCI+CiAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1oZWFkZXIiPgogICAgICA8c3Bhbj5Zb3VyIEFsdGl0dWRlIEFzc2Vzc21lbnQ8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJxLWNvdW50IiBpZD0icUNvdW50Ij5RdWVzdGlvbiAxIG9mIDEyPC9zcGFuPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy10cmFjayI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MtZmlsbCIgaWQ9InByb2dyZXNzRmlsbCI+PC9kaXY+PC9kaXY+CiAgPC9kaXY+CgogIDwhLS0gSU5UUk8gU0NSRUVOIC0tPgogIDxkaXYgY2xhc3M9ImludHJvLXNjcmVlbiIgaWQ9ImludHJvU2NyZWVuIj4KICAgIDxzcGFuIGNsYXNzPSJpbnRyby1jcm93biI+8J+RkTwvc3Bhbj4KICAgIDxoMj5UaGUgPGVtPlZvcnRleCBBbHRpdHVkZTwvZW0+PGJyPkFzc2Vzc21lbnQ8L2gyPgogICAgPHA+MTIgcXVlc3Rpb25zLiA0IGRpbWVuc2lvbnMuIE9uZSBob25lc3QgcmVzdWx0LiBObyB2YW5pdHkgbWV0cmljcy4gTm8gZmxhdHRlcnkuIEp1c3QgdGhlIHRydXRoIGFib3V0IHdoZXJlIHlvdSBzdGFuZCB+IGFuZCBhIGNsZWFyIHBhdGggdG8gd2hlcmUgeW91IGRlc2VydmUgdG8gYmUuPC9wPgoKICAgIDxkaXYgY2xhc3M9ImxldmVscy1wcmV2aWV3Ij4KICAgICAgPGRpdiBjbGFzcz0ibGV2ZWwtcm93Ij4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtaWNvbiI+8J+Mq++4jzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtbmFtZSIgc3R5bGU9ImNvbG9yOnZhcigtLWludmlzaWJsZSkiPkludmlzaWJsZTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtZGVzYyI+VGhlIHN0YXJ0IH4gYW5kIGEgcG93ZXJmdWwgcGxhY2UgdG8gYmVnaW48L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsZXZlbC1yb3ciPgogICAgICAgIDxzcGFuIGNsYXNzPSJsZXZlbC1pY29uIj7wn4yxPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJsZXZlbC1uYW1lIiBzdHlsZT0iY29sb3I6dmFyKC0tZW1lcmdpbmcpIj5FbWVyZ2luZzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtZGVzYyI+RGlnaXRhbCBmb3VuZGF0aW9ucyBiZWluZyBsYWlkPC9zcGFuPgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0ibGV2ZWwtcm93Ij4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtaWNvbiI+8J+SoTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtbmFtZSIgc3R5bGU9ImNvbG9yOnZhcigtLXZpc2libGUpIj5WaXNpYmxlPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJsZXZlbC1kZXNjIj5QcmVzZW50IG9ubGluZSB+IGJ1aWxkaW5nIGF1dGhvcml0eTwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImxldmVsLXJvdyI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxldmVsLWljb24iPuKaoTwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0ibGV2ZWwtbmFtZSIgc3R5bGU9ImNvbG9yOnZhcigtLWluZmx1ZW50aWFsKSI+SW5mbHVlbnRpYWw8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxldmVsLWRlc2MiPkF1dGhvcml0eSBlc3RhYmxpc2hlZCB+IHNjYWxpbmcgcHJlc2VuY2U8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJsZXZlbC1yb3ciPgogICAgICAgIDxzcGFuIGNsYXNzPSJsZXZlbC1pY29uIj7wn5GRPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJsZXZlbC1uYW1lIiBzdHlsZT0iY29sb3I6dmFyKC0tc292ZXJlaWduKSI+U292ZXJlaWduPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJsZXZlbC1kZXNjIj5GdWxsIGRpZ2l0YWwgb3duZXJzaGlwIH4gdGhlIHBpbm5hY2xlPC9zcGFuPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxidXR0b24gY2xhc3M9InN0YXJ0LWJ0biIgb25jbGljaz0ic3RhcnRBc3Nlc3NtZW50KCkiPkJlZ2luIE15IEFsdGl0dWRlIEFzc2Vzc21lbnQg8J+RkTwvYnV0dG9uPgogIDwvZGl2PgoKICA8IS0tIFFVRVNUSU9OIFNUQUdFIC0tPgogIDxkaXYgY2xhc3M9InEtc3RhZ2UgaGlkZGVuIiBpZD0icVN0YWdlIj4KICAgIDxkaXYgY2xhc3M9InEtY2FyZCIgaWQ9InFDYXJkIj4KICAgICAgPHNwYW4gY2xhc3M9InEtZGltZW5zaW9uIiBpZD0icURpbWVuc2lvbiI+PC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icS1udW1iZXIiIGlkPSJxTnVtYmVyIj48L3NwYW4+CiAgICAgIDxwIGNsYXNzPSJxLXRleHQiIGlkPSJxVGV4dCI+PC9wPgogICAgICA8ZGl2IGNsYXNzPSJhbnN3ZXJzIiBpZD0iYW5zd2Vyc1dyYXAiPjwvZGl2PgogICAgPC9kaXY+CiAgICA8YnV0dG9uIGNsYXNzPSJuZXh0LWJ0biIgaWQ9Im5leHRCdG4iIG9uY2xpY2s9Im5leHRRdWVzdGlvbigpIj5Db250aW51ZSDihpI8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPCEtLSBDQVBUVVJFIFNDUkVFTiAtLT4KICA8ZGl2IGNsYXNzPSJjYXB0dXJlLXNjcmVlbiBoaWRkZW4iIGlkPSJjYXB0dXJlU2NyZWVuIj4KICAgIDxoMj5BbG1vc3QgdGhlcmUg8J+RkTwvaDI+CiAgICA8cD5Zb3VyIGFsdGl0dWRlIHJlc3VsdCBpcyByZWFkeS4gRW50ZXIgeW91ciBkZXRhaWxzIHRvIHJlY2VpdmUgeW91ciBwZXJzb25hbGlzZWQgbmV4dCBzdGVwcyB+IGFuZCB0byBiZSBhZGRlZCB0byB0aGUgcmlnaHQgU2hlIEV2b2x2ZXMgQWZyaWNhIGNvbW11bml0eSBmb3Igd2hlcmUgeW91IGFyZSByaWdodCBub3cuPC9wPgogICAgPGRpdiBjbGFzcz0iZmllbGQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iY2FwTmFtZSIgcGxhY2Vob2xkZXI9IllvdXIgTmFtZSIgYXV0b2NvbXBsZXRlPSJuYW1lIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48aW5wdXQgdHlwZT0iZW1haWwiIGlkPSJjYXBFbWFpbCIgcGxhY2Vob2xkZXI9IllvdXIgRW1haWwgQWRkcmVzcyIgYXV0b2NvbXBsZXRlPSJlbWFpbCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGlucHV0IHR5cGU9InRlbCIgaWQ9ImNhcFBob25lIiBwbGFjZWhvbGRlcj0iWW91ciBXaGF0c0FwcCBOdW1iZXIgKG9wdGlvbmFsKSIgYXV0b2NvbXBsZXRlPSJ0ZWwiPjwvZGl2PgogICAgPGJ1dHRvbiBjbGFzcz0icmV2ZWFsLWJ0biIgb25jbGljaz0icmV2ZWFsUmVzdWx0KCkiPlJldmVhbCBNeSBBbHRpdHVkZSBSZXN1bHQg8J+RkTwvYnV0dG9uPgogICAgPHNwYW4gY2xhc3M9InNraXAtbGluayIgb25jbGljaz0icmV2ZWFsUmVzdWx0KCkiPlNraXAgYW5kIHNlZSBteSByZXN1bHQg4oaSPC9zcGFuPgogIDwvZGl2PgoKICA8IS0tIFJFU1VMVCBTQ1JFRU4gLS0+CiAgPGRpdiBjbGFzcz0icmVzdWx0LXNjcmVlbiBoaWRkZW4iIGlkPSJyZXN1bHRTY3JlZW4iPgogICAgPGRpdiBjbGFzcz0icmVzdWx0LWhlcm8iIGlkPSJyZXN1bHRIZXJvIj4KICAgICAgPGRpdiBjbGFzcz0icmVzdWx0LWxldmVsLWJhZGdlIiBpZD0icmVzdWx0QmFkZ2UiPjwvZGl2PgogICAgICA8c3BhbiBjbGFzcz0icmVzdWx0LWNyb3duIiBpZD0icmVzdWx0Q3Jvd24iPjwvc3Bhbj4KICAgICAgPGgyIGlkPSJyZXN1bHRUaXRsZSI+PC9oMj4KICAgICAgPHAgY2xhc3M9InJlc3VsdC10YWdsaW5lIiBpZD0icmVzdWx0VGFnbGluZSI+PC9wPgogICAgICA8ZGl2IGNsYXNzPSJzY29yZS1tZXRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWV0ZXItbGFiZWwiPgogICAgICAgICAgPHNwYW4+RGlnaXRhbCBTb3ZlcmVpZ250eSBTY29yZTwvc3Bhbj4KICAgICAgICAgIDxzcGFuIGlkPSJzY29yZURpc3BsYXkiIHN0eWxlPSJjb2xvcjp2YXIoLS1nb2xkKTtmb250LXdlaWdodDo2MDAiPjwvc3Bhbj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRlci10cmFjayI+PGRpdiBjbGFzcz0ibWV0ZXItZmlsbCIgaWQ9Im1ldGVyRmlsbCI+PC9kaXY+PC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkaW0tc2NvcmVzIiBpZD0iZGltU2NvcmVzIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9InJlc3VsdC1ib2R5IiBpZD0icmVzdWx0Qm9keSI+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0icmVzdWx0LWN0YSIgaWQ9InJlc3VsdEN0YSI+PC9kaXY+CgogICAgPGRpdiBjbGFzcz0ic2hhcmUtc3RyaXAiPgogICAgICA8ZGl2IGNsYXNzPSJzaGFyZS10ZXh0Ij4KICAgICAgICA8c3Ryb25nPlNoYXJlIHlvdXIgYWx0aXR1ZGUg8J+RkTwvc3Ryb25nPgogICAgICAgIENvcHkgeW91ciByZXN1bHQgYW5kIHNoYXJlIGl0IH4gaW52aXRlIGFub3RoZXIgd29tYW4gdG8gZGlzY292ZXIgaGVycwogICAgICA8L2Rpdj4KICAgICAgPGJ1dHRvbiBjbGFzcz0ic2hhcmUtYnRuIiBvbmNsaWNrPSJzaGFyZVJlc3VsdCgpIj5Db3B5IFJlc3VsdDwvYnV0dG9uPgogICAgPC9kaXY+CgogICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLXRvcDowLjhyZW0iPgogICAgICA8c3BhbiBjbGFzcz0icmV0YWtlLWxpbmsiIG9uY2xpY2s9InJlc2V0QWxsKCkiPuKGuiBSZXRha2UgdGhlIGFzc2Vzc21lbnQ8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPCEtLSBGT09URVIgLS0+CiAgPGRpdiBjbGFzcz0iYXNzZXNzbWVudC1mb290ZXIiPgogICAgPHA+8J+RkSA8c3Bhbj5TaGUgRXZvbHZlcyBBZnJpY2E8L3NwYW4+IH4gVm9pY2VzLiBWaXNpb25zLiBMZWdhY3kuIH4gPHNwYW4+c2hlZXZvbHZlcy5hZnJpY2E8L3NwYW4+PC9wPgogIDwvZGl2PgoKPC9kaXY+PCEtLSAvd3JhcCAtLT4KCjxzY3JpcHQ+Ci8vIOKUgOKUgCBRVUVTVElPTlMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmNvbnN0IFFVRVNUSU9OUyA9IFsKICAvLyBESU1FTlNJT04gMTogT1dORVJTSElQICgzIHF1ZXN0aW9ucykKICB7CiAgICBkaW06ICdEaW1lbnNpb24gMSB+IE93bmVyc2hpcCcsCiAgICB0ZXh0OiAnV2hlbiBzb21lb25lIHNlYXJjaGVzIHlvdXIgbmFtZSBvbiBHb29nbGUgcmlnaHQgbm93LCB3aGF0IGFwcGVhcnM/JywKICAgIGFuc3dlcnM6IFsKICAgICAgeyB0ZXh0OiAnTm90aGluZy4gTXkgbmFtZSByZXR1cm5zIG5vIG1lYW5pbmdmdWwgcmVzdWx0cy4nLCBzY29yZTogMCB9LAogICAgICB7IHRleHQ6ICdNeSBzb2NpYWwgbWVkaWEgcHJvZmlsZXMgfiBJbnN0YWdyYW0sIExpbmtlZEluLCBGYWNlYm9vay4nLCBzY29yZTogMSB9LAogICAgICB7IHRleHQ6ICdTb2NpYWwgcHJvZmlsZXMgcGx1cyBhIHdlYnNpdGUgc29tZW9uZSBlbHNlIGJ1aWx0IGZvciBtZS4nLCBzY29yZTogMiB9LAogICAgICB7IHRleHQ6ICdBIHdlYnNpdGUgSSBvd24sIGluZGV4ZWQgYXJ0aWNsZXMsIGFuZCBwcm9mZXNzaW9uYWwgcHJvZmlsZXMuJywgc2NvcmU6IDMgfSwKICAgICAgeyB0ZXh0OiAnQSBmdWxsIGRpZ2l0YWwgZXN0YXRlIH4gbXkgZG9tYWluLCBuZXdzIGNvdmVyYWdlLCBhdXRob3JpdHkgcHJvZmlsZXMuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LAogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiAxIH4gT3duZXJzaGlwJywKICAgIHRleHQ6ICdIb3cgbXVjaCBvZiB5b3VyIG9ubGluZSBwcmVzZW5jZSBkbyB5b3UgdHJ1bHkgT1dOIH4gYXMgaW4sIGNvdWxkIG5vdCBiZSBkZWxldGVkIGJ5IGEgcGxhdGZvcm0gdG9tb3Jyb3c/JywKICAgIGFuc3dlcnM6IFsKICAgICAgeyB0ZXh0OiAnTm9uZS4gRXZlcnl0aGluZyBJIGhhdmUgaXMgb24gcGxhdGZvcm1zIG90aGVycyBjb250cm9sLicsIHNjb3JlOiAwIH0sCiAgICAgIHsgdGV4dDogJ1ZlcnkgbGl0dGxlLiBNYXliZSBhbiBvbGQgd2Vic2l0ZSBJIGJhcmVseSB1cGRhdGUuJywgc2NvcmU6IDEgfSwKICAgICAgeyB0ZXh0OiAnU29tZS4gSSBoYXZlIGEgd2Vic2l0ZSBhbmQgYW4gZW1haWwgbGlzdCBzdGFydGluZyB0byBncm93LicsIHNjb3JlOiAyIH0sCiAgICAgIHsgdGV4dDogJ1F1aXRlIGEgbG90LiBJIGhhdmUgb3duZWQgcGxhdGZvcm1zIGFuZCBhIGdyb3dpbmcgZW1haWwgYXVkaWVuY2UuJywgc2NvcmU6IDMgfSwKICAgICAgeyB0ZXh0OiAnTW9zdCBvZiBpdC4gTXkgZGlnaXRhbCBpbmZyYXN0cnVjdHVyZSBpcyBidWlsdCBvbiBvd25lZCBhc3NldHMuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LAogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiAxIH4gT3duZXJzaGlwJywKICAgIHRleHQ6ICdEbyB5b3UgaGF2ZSBhIHBlcnNvbmFsIGRvbWFpbiB+IGEgVVJMIHdpdGggeW91ciBuYW1lIG9yIGJyYW5kIHRoYXQgeW91IG93biBvdXRyaWdodD8nLAogICAgYW5zd2VyczogWwogICAgICB7IHRleHQ6ICdOby4gSSBoYXZlIG5ldmVyIHJlZ2lzdGVyZWQgYSBkb21haW4gaW4gbXkgbmFtZS4nLCBzY29yZTogMCB9LAogICAgICB7IHRleHQ6ICdObywgYnV0IEkgaGF2ZSBiZWVuIHRoaW5raW5nIGFib3V0IGl0IGZvciBhIHdoaWxlLicsIHNjb3JlOiAxIH0sCiAgICAgIHsgdGV4dDogJ1llcywgSSBvd24gYSBkb21haW4gYnV0IHRoZSB3ZWJzaXRlIGlzIGJhc2ljIG9yIG91dGRhdGVkLicsIHNjb3JlOiAyIH0sCiAgICAgIHsgdGV4dDogJ1llcywgYW5kIG15IHdlYnNpdGUgcmVmbGVjdHMgbXkgcHJvZmVzc2lvbmFsIGlkZW50aXR5IHdlbGwuJywgc2NvcmU6IDMgfSwKICAgICAgeyB0ZXh0OiAnWWVzLCBhbmQgSSBoYXZlIG11bHRpcGxlIGRvbWFpbnMgc2VydmluZyBkaWZmZXJlbnQgYXNwZWN0cyBvZiBteSB3b3JrLicsIHNjb3JlOiA0IH0sCiAgICBdCiAgfSwKCiAgLy8gRElNRU5TSU9OIDI6IFNFQVJDSEFCSUxJVFkgKDMgcXVlc3Rpb25zKQogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiAyIH4gU2VhcmNoYWJpbGl0eScsCiAgICB0ZXh0OiAnSWYgYSBjb2xsYWJvcmF0b3IsIGludmVzdG9yIG9yIGNsaWVudCBzZWFyY2hlZCB5b3VyIGFyZWEgb2YgZXhwZXJ0aXNlIGluIHlvdXIgY2l0eSBvciBjb3VudHJ5LCB3b3VsZCB0aGV5IGZpbmQgWU9VPycsCiAgICBhbnN3ZXJzOiBbCiAgICAgIHsgdGV4dDogJ05vLiBNeSBleHBlcnRpc2UgaXMgbm90IGRvY3VtZW50ZWQgYW55d2hlcmUgb25saW5lLicsIHNjb3JlOiAwIH0sCiAgICAgIHsgdGV4dDogJ1VubGlrZWx5LiBJIGhhdmUgc29jaWFsIHByb2ZpbGVzIGJ1dCBubyBrZXl3b3JkLXJpY2ggY29udGVudC4nLCBzY29yZTogMSB9LAogICAgICB7IHRleHQ6ICdNYXliZS4gSSBoYXZlIHNvbWUgY29udGVudCBidXQgaXQgaXMgbm90IGNvbnNpc3RlbnRseSBzZWFyY2hhYmxlLicsIHNjb3JlOiAyIH0sCiAgICAgIHsgdGV4dDogJ1Byb2JhYmx5LiBJIGFwcGVhciBpbiBzZWFyY2hlcyBmb3IgbXkgbmljaGUgd2l0aCBzb21lIHJlZ3VsYXJpdHkuJywgc2NvcmU6IDMgfSwKICAgICAgeyB0ZXh0OiAnWWVzLiBJIHJhbmsgd2VsbCBhbmQgYXBwZWFyIGluIHNlYXJjaGVzIGFjcm9zcyBteSBhcmVhcyBvZiBleHBlcnRpc2UuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LAogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiAyIH4gU2VhcmNoYWJpbGl0eScsCiAgICB0ZXh0OiAnSGF2ZSB5b3UgZXZlciBiZWVuIGZlYXR1cmVkLCBxdW90ZWQsIG9yIHByb2ZpbGVkIGluIGFuIG9ubGluZSBhcnRpY2xlLCBuZXdzIGNoYW5uZWwsIG9yIGJsb2cgdGhhdCBsaXZlcyBwZXJtYW5lbnRseSBvbiB0aGUgaW50ZXJuZXQ/JywKICAgIGFuc3dlcnM6IFsKICAgICAgeyB0ZXh0OiAnTm8uIEkgaGF2ZSBuZXZlciBiZWVuIGZlYXR1cmVkIGFueXdoZXJlIG9ubGluZS4nLCBzY29yZTogMCB9LAogICAgICB7IHRleHQ6ICdPbmNlIG9yIHR3aWNlLCB5ZWFycyBhZ28uIE5vdCByZWNlbnRseS4nLCBzY29yZTogMSB9LAogICAgICB7IHRleHQ6ICdBIGZldyB0aW1lcywgYnV0IG5vdCBjb25zaXN0ZW50bHkgYW5kIG5vdCBvbiBhdXRob3JpdHkgc2l0ZXMuJywgc2NvcmU6IDIgfSwKICAgICAgeyB0ZXh0OiAnWWVzLCBJIGhhdmUgYmVlbiBmZWF0dXJlZCBhbmQgc29tZSBvZiBpdCBzdGlsbCByYW5rcyBvbiBHb29nbGUuJywgc2NvcmU6IDMgfSwKICAgICAgeyB0ZXh0OiAnWWVzLCByZWd1bGFybHkuIEkgaGF2ZSBhbiBhY3RpdmUgcHJvZmlsZSBvZiBtZWRpYSBtZW50aW9ucyBhbmQgZmVhdHVyZXMuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LAogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiAyIH4gU2VhcmNoYWJpbGl0eScsCiAgICB0ZXh0OiAnSG93IHdvdWxkIHlvdSBkZXNjcmliZSB5b3VyIFNFTyBrbm93bGVkZ2UgfiB5b3VyIHVuZGVyc3RhbmRpbmcgb2YgaG93IEdvb2dsZSBmaW5kcyBhbmQgcmFua3MgY29udGVudD8nLAogICAgYW5zd2VyczogWwogICAgICB7IHRleHQ6ICdJIGhhdmUgbm8gaWRlYSB3aGF0IFNFTyByZWFsbHkgbWVhbnMgaW4gcHJhY3RpY2UuJywgc2NvcmU6IDAgfSwKICAgICAgeyB0ZXh0OiAnSSBoYXZlIGhlYXJkIG9mIGl0IGJ1dCBuZXZlciBhcHBsaWVkIGl0IHRvIG15IG93biBjb250ZW50LicsIHNjb3JlOiAxIH0sCiAgICAgIHsgdGV4dDogJ0kgdW5kZXJzdGFuZCB0aGUgYmFzaWNzIGFuZCBhcHBseSB0aGVtIG9jY2FzaW9uYWxseS4nLCBzY29yZTogMiB9LAogICAgICB7IHRleHQ6ICdJIHVuZGVyc3RhbmQgaXQgd2VsbCBhbmQgY3JlYXRlIGNvbnRlbnQgd2l0aCBTRU8gaW4gbWluZC4nLCBzY29yZTogMyB9LAogICAgICB7IHRleHQ6ICdJIGhhdmUgYSBjbGVhciBTRU8gc3RyYXRlZ3kgdGhhdCBkcml2ZXMgcmVhbCB0cmFmZmljIHRvIG15IHBsYXRmb3Jtcy4nLCBzY29yZTogNCB9LAogICAgXQogIH0sCgogIC8vIERJTUVOU0lPTiAzOiBBVVRIT1JJVFkgKDMgcXVlc3Rpb25zKQogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiAzIH4gQXV0aG9yaXR5JywKICAgIHRleHQ6ICdJcyB0aGVyZSBhIHBsYWNlIG9uIHRoZSBpbnRlcm5ldCB3aGVyZSB5b3VyIHByb2Zlc3Npb25hbCBleHBlcnRpc2UsIHN0b3J5IGFuZCBjcmVkZW50aWFscyBhcmUgZG9jdW1lbnRlZCBpbiBkZXB0aCB+IGJleW9uZCBhIExpbmtlZEluIHByb2ZpbGU/JywKICAgIGFuc3dlcnM6IFsKICAgICAgeyB0ZXh0OiAnTm8uIE15IG9ubHkgcHJvZmVzc2lvbmFsIHByZXNlbmNlIGlzIExpbmtlZEluIG9yIHNpbWlsYXIuJywgc2NvcmU6IDAgfSwKICAgICAgeyB0ZXh0OiAnSSBoYXZlIGEgYmFzaWMgYmlvIHBhZ2UgYnV0IGl0IGRvZXMgbm90IHJlZmxlY3QgbXkgZnVsbCBleHBlcnRpc2UuJywgc2NvcmU6IDEgfSwKICAgICAgeyB0ZXh0OiAnSSBoYXZlIGEgd2Vic2l0ZSB3aXRoIHNvbWUgZGVwdGggYnV0IGl0IGlzIG5vdCBjb25zaXN0ZW50bHkgdXBkYXRlZC4nLCBzY29yZTogMiB9LAogICAgICB7IHRleHQ6ICdZZXMuIEkgaGF2ZSBhbiBhdXRob3JpdHkgcGxhdGZvcm0gd2hlcmUgbXkgZXhwZXJ0aXNlIGlzIHdlbGwgZG9jdW1lbnRlZC4nLCBzY29yZTogMyB9LAogICAgICB7IHRleHQ6ICdZZXMsIGFuZCBpdCBpcyBHb29nbGUtaW5kZXhlZCwgcmVndWxhcmx5IHVwZGF0ZWQgYW5kIGRyaXZlcyBpbmJvdW5kIGVucXVpcmllcy4nLCBzY29yZTogNCB9LAogICAgXQogIH0sCiAgewogICAgZGltOiAnRGltZW5zaW9uIDMgfiBBdXRob3JpdHknLAogICAgdGV4dDogJ0hvdyBjb25zaXN0ZW50IGlzIHlvdXIgcGVyc29uYWwgYnJhbmQgYWNyb3NzIGFsbCB5b3VyIGRpZ2l0YWwgcGxhdGZvcm1zIH4gc2FtZSBtZXNzYWdlLCBzYW1lIHZpc3VhbHMsIHNhbWUgc3Rvcnk/JywKICAgIGFuc3dlcnM6IFsKICAgICAgeyB0ZXh0OiAnTm90IGNvbnNpc3RlbnQgYXQgYWxsLiBFYWNoIHBsYXRmb3JtIGxvb2tzIGRpZmZlcmVudCBhbmQgdGVsbHMgYSBkaWZmZXJlbnQgc3RvcnkuJywgc2NvcmU6IDAgfSwKICAgICAgeyB0ZXh0OiAnU2xpZ2h0bHkgY29uc2lzdGVudC4gU2FtZSBwaG90byBidXQgZGlmZmVyZW50IGJpb3MgYW5kIG1lc3NhZ2luZyBldmVyeXdoZXJlLicsIHNjb3JlOiAxIH0sCiAgICAgIHsgdGV4dDogJ1JlYXNvbmFibHkgY29uc2lzdGVudCBidXQgSSBrbm93IGl0IG5lZWRzIHdvcmsuJywgc2NvcmU6IDIgfSwKICAgICAgeyB0ZXh0OiAnVmVyeSBjb25zaXN0ZW50LiBNeSBicmFuZCBtZXNzYWdlIGlzIGNsZWFyIGFuZCBjb2hlcmVudCBhY3Jvc3MgcGxhdGZvcm1zLicsIHNjb3JlOiAzIH0sCiAgICAgIHsgdGV4dDogJ0NvbXBsZXRlbHkgY29uc2lzdGVudC4gTXkgYnJhbmQgaXMgYSByZWNvZ25pc2VkIGlkZW50aXR5IG9ubGluZS4nLCBzY29yZTogNCB9LAogICAgXQogIH0sCiAgewogICAgZGltOiAnRGltZW5zaW9uIDMgfiBBdXRob3JpdHknLAogICAgdGV4dDogJ0RvIHlvdSBjdXJyZW50bHkgcHVibGlzaCBvcmlnaW5hbCBjb250ZW50IH4gYXJ0aWNsZXMsIG5ld3NsZXR0ZXJzLCBhdWRpbyBvciB2aWRlbyB+IHVuZGVyIHlvdXIgb3duIG5hbWUgb3IgYnJhbmQ/JywKICAgIGFuc3dlcnM6IFsKICAgICAgeyB0ZXh0OiAnTm8uIEkgaGF2ZSBuZXZlciBwdWJsaXNoZWQgbXkgb3duIGNvbnRlbnQuJywgc2NvcmU6IDAgfSwKICAgICAgeyB0ZXh0OiAnUmFyZWx5LiBJIHBvc3Qgb24gc29jaWFsIG1lZGlhIG9jY2FzaW9uYWxseSBidXQgbm90aGluZyByZWd1bGFyLicsIHNjb3JlOiAxIH0sCiAgICAgIHsgdGV4dDogJ1NvbWV0aW1lcy4gSSBwdWJsaXNoIHdoZW4gSSBmZWVsIGluc3BpcmVkIGJ1dCB0aGVyZSBpcyBubyBzeXN0ZW0uJywgc2NvcmU6IDIgfSwKICAgICAgeyB0ZXh0OiAnUmVndWxhcmx5LiBJIGhhdmUgYSBjb250ZW50IHJoeXRobSBhbmQgYW4gYXVkaWVuY2UgdGhhdCBmb2xsb3dzIGl0LicsIHNjb3JlOiAzIH0sCiAgICAgIHsgdGV4dDogJ1llcywgY29uc2lzdGVudGx5LiBJIGhhdmUgYSBjb250ZW50IGVjb3N5c3RlbSB3aXRoIG11bHRpcGxlIGNoYW5uZWxzLicsIHNjb3JlOiA0IH0sCiAgICBdCiAgfSwKCiAgLy8gRElNRU5TSU9OIDQ6IFJFQURJTkVTUyAoMyBxdWVzdGlvbnMpCiAgewogICAgZGltOiAnRGltZW5zaW9uIDQgfiBSZWFkaW5lc3MnLAogICAgdGV4dDogJ0hvdyB1cmdlbnQgZG8geW91IGZlZWwgaXQgaXMgdG8gYnVpbGQgb3IgdXBncmFkZSB5b3VyIGRpZ2l0YWwgcHJlc2VuY2UgcmlnaHQgbm93PycsCiAgICBhbnN3ZXJzOiBbCiAgICAgIHsgdGV4dDogJ05vdCB1cmdlbnQuIEkgYW0gY29tZm9ydGFibGUgd2hlcmUgSSBhbSBmb3Igbm93LicsIHNjb3JlOiAwIH0sCiAgICAgIHsgdGV4dDogJ1NvbWV3aGF0LiBJIGtub3cgSSBuZWVkIHRvIGJ1dCBvdGhlciB0aGluZ3MgYWx3YXlzIGNvbWUgZmlyc3QuJywgc2NvcmU6IDEgfSwKICAgICAgeyB0ZXh0OiAnRmFpcmx5IHVyZ2VudC4gSSBhbSBzdGFydGluZyB0byBmZWVsIHRoZSBjb3N0IG9mIG15IGRpZ2l0YWwgaW52aXNpYmlsaXR5LicsIHNjb3JlOiAyIH0sCiAgICAgIHsgdGV4dDogJ1ZlcnkgdXJnZW50LiBJIGFtIHJlYWR5IHRvIGFjdCBhbmQgbG9va2luZyBmb3IgdGhlIHJpZ2h0IGd1aWRhbmNlLicsIHNjb3JlOiAzIH0sCiAgICAgIHsgdGV4dDogJ0V4dHJlbWVseSB1cmdlbnQuIEkgYW0gcmVhZHkgdG8gaW52ZXN0IHNlcmlvdXNseSByaWdodCBub3cuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LAogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiA0IH4gUmVhZGluZXNzJywKICAgIHRleHQ6ICdXaGVuIGl0IGNvbWVzIHRvIEFJIHRvb2xzIGZvciB5b3VyIGJ1c2luZXNzIH4gY29udGVudCBjcmVhdGlvbiwgYXV0b21hdGlvbiwgcmVzZWFyY2ggfiB3aGVyZSBhcmUgeW91PycsCiAgICBhbnN3ZXJzOiBbCiAgICAgIHsgdGV4dDogJ0kgaGF2ZSBuZXZlciB1c2VkIEFJIHRvb2xzIGZvciBteSB3b3JrLicsIHNjb3JlOiAwIH0sCiAgICAgIHsgdGV4dDogJ0kgaGF2ZSB0cmllZCBDaGF0R1BUIG9uY2Ugb3IgdHdpY2UgYnV0IGhhdmUgbm90IG1hZGUgaXQgYSBoYWJpdC4nLCBzY29yZTogMSB9LAogICAgICB7IHRleHQ6ICdJIHVzZSBBSSB0b29scyBvY2Nhc2lvbmFsbHkgYW5kIGFtIHN0YXJ0aW5nIHRvIHNlZSB0aGUgdmFsdWUuJywgc2NvcmU6IDIgfSwKICAgICAgeyB0ZXh0OiAnSSB1c2UgQUkgdG9vbHMgcmVndWxhcmx5IGFuZCB0aGV5IGhhdmUgaW1wcm92ZWQgbXkgb3V0cHV0LicsIHNjb3JlOiAzIH0sCiAgICAgIHsgdGV4dDogJ0FJIGlzIGVtYmVkZGVkIGluIG15IHdvcmtmbG93IGFuZCBJIGFtIGFoZWFkIG9mIG1vc3QgaW4gbXkgaW5kdXN0cnkuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LAogIHsKICAgIGRpbTogJ0RpbWVuc2lvbiA0IH4gUmVhZGluZXNzJywKICAgIHRleHQ6ICdJZiB0aGUgcmlnaHQgcHJvZ3JhbW1lLCBjb21tdW5pdHkgb3IgZXhwZXJ0IHNob3dlZCB5b3UgZXhhY3RseSB3aGF0IHRvIGRvIH4gaG93IHJlYWR5IGFyZSB5b3UgdG8gaW1wbGVtZW50PycsCiAgICBhbnN3ZXJzOiBbCiAgICAgIHsgdGV4dDogJ0kgbmVlZCBtb3JlIGNvbnZpbmNpbmcgYmVmb3JlIEkgaW52ZXN0IHRpbWUgb3IgbW9uZXkuJywgc2NvcmU6IDAgfSwKICAgICAgeyB0ZXh0OiAnSSBhbSBpbnRlcmVzdGVkIGJ1dCBteSBzY2hlZHVsZSBhbmQgYnVkZ2V0IGFyZSB0aWdodCByaWdodCBub3cuJywgc2NvcmU6IDEgfSwKICAgICAgeyB0ZXh0OiAnSSBhbSByZWFkeSB0byBzdGFydCBsZWFybmluZyBhbmQgd2lsbCBpbXBsZW1lbnQgYXQgbXkgb3duIHBhY2UuJywgc2NvcmU6IDIgfSwKICAgICAgeyB0ZXh0OiAnSSBhbSByZWFkeSBhbmQgd2lsbCBpbXBsZW1lbnQgd2l0aGluIGRheXMsIG5vdCBtb250aHMuJywgc2NvcmU6IDMgfSwKICAgICAgeyB0ZXh0OiAnSSBhbSBhbGwgaW4uIFNob3cgbWUgdGhlIHBhdGggYW5kIEkgd2lsbCBydW4gaXQuJywgc2NvcmU6IDQgfSwKICAgIF0KICB9LApdOwoKLy8g4pSA4pSAIFJFU1VMVCBERUZJTklUSU9OUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKY29uc3QgUkVTVUxUUyA9IHsKICBpbnZpc2libGU6IHsKICAgIGxldmVsOiAnSU5WSVNJQkxFJywKICAgIGljb246ICfwn4yr77iPJywKICAgIGNvbG91cjogJyM0QTU1NjgnLAogICAgYmdHcmFkaWVudDogJ2xpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoNzQsODUsMTA0LDAuNCkgMCUsIHJnYmEoMTMsMzQsNzEsMC44NSkgMTAwJSknLAogICAgdGl0bGU6ICdUaGUgSW52aXNpYmxlIEZvcmNlJywKICAgIHRhZ2xpbmU6ICciRXZlcnkgc292ZXJlaWduIHN0YXJ0ZWQgc29tZXdoZXJlLiBZb3VyIHN0b3J5IGlzIG5vdCBtaXNzaW5nIH4gaXQgc2ltcGx5IGhhcyBub3QgYmVlbiB0b2xkIHlldC4gVGhhdCBjaGFuZ2VzIHRvZGF5LiInLAogICAgZGVzY3JpcHRpb246ICdZb3UgYXJlIGJ1aWxkaW5nIHNvbWV0aGluZyByZWFsIGFuZCB2YWx1YWJsZSB+IGJ1dCB0aGUgZGlnaXRhbCB3b3JsZCBkb2VzIG5vdCBrbm93IHlvdSBleGlzdCB5ZXQuIFlvdXIgZXhwZXJ0aXNlLCB5b3VyIGpvdXJuZXksIHlvdXIgaW1wYWN0IGlzIGludmlzaWJsZSB0byB0aGUgYWxnb3JpdGhtcyB0aGF0IGRldGVybWluZSB3aG8gZ2V0cyBmb3VuZC4gVGhlIGdyZWF0IG5ld3M6IHRoaXMgaXMgdGhlIG1vc3QgdHJhbnNmb3JtYXRpdmUgc3RhZ2UuIEdvaW5nIGZyb20gaW52aXNpYmxlIHRvIHZpc2libGUgaXMgdGhlIG1vc3QgcG93ZXJmdWwgbGVhcCBpbiBkaWdpdGFsIHNvdmVyZWlnbnR5LicsCiAgICBzdHJlbmd0aHM6IFsnWW91IGFyZSBzZWxmLWF3YXJlIGVub3VnaCB0byB0YWtlIHRoaXMgYXNzZXNzbWVudCB+IHRoYXQgaXMgdGhlIGZpcnN0IGFjdCBvZiBzb3ZlcmVpZ250eScsICdZb3UgaGF2ZSBhIHN0b3J5IHdvcnRoIHRlbGxpbmcgfiBpdCBzaW1wbHkgbmVlZHMgYSBwbGF0Zm9ybScsICdZb3UgaGF2ZSB0aGUgbW9zdCB0byBnYWluIGZyb20gdGhlIGpvdXJuZXkgYWhlYWQnXSwKICAgIG5leHRTdGVwOiAnSm9pbiB0aGUgU2hlIEV2b2x2ZXMgQWZyaWNhIGNvbW11bml0eSBhbmQgYmVnaW4gd2l0aCB0aGUgZm91bmRhdGlvbnMuIFlvdXIgbmV3c2xldHRlciBhY2Nlc3MgaXMgd2FpdGluZy4nLAogICAgY3RhUHJpbWFyeTogeyB0ZXh0OiAn8J+RkSBKb2luIHRoZSBTaGUgRXZvbHZlcyBBZnJpY2EgQ29tbXVuaXR5JywgdXJsOiAnaHR0cHM6Ly90aGVzdW1taXQuc292ZXJlaWdubW9tZW50dW0uY29tL2ludml0YXRpb24nIH0sCiAgICBjdGFTZWNvbmRhcnk6IHsgdGV4dDogJ0V4cGxvcmUgU2hlIEV2b2x2ZXMgQWZyaWNhIE5ld3MnLCB1cmw6ICdodHRwczovL3NoZWV2b2x2ZXMuYWZyaWNhL25ld3MnIH0sCiAgICBwclRhZzogJ1ZPUlRFWC1JTlZJU0lCTEUnLAogIH0sCiAgZW1lcmdpbmc6IHsKICAgIGxldmVsOiAnRU1FUkdJTkcnLAogICAgaWNvbjogJ/CfjLEnLAogICAgY29sb3VyOiAnIzJDN0E3QicsCiAgICBiZ0dyYWRpZW50OiAnbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSg0NCwxMjIsMTIzLDAuMzUpIDAlLCByZ2JhKDEzLDM0LDcxLDAuODUpIDEwMCUpJywKICAgIHRpdGxlOiAnVGhlIEVtZXJnaW5nIFNvdmVyZWlnbicsCiAgICB0YWdsaW5lOiAnIllvdXIgcm9vdHMgYXJlIGdyb3dpbmcuIFlvdXIgcHJlc2VuY2UgaXMgYmVnaW5uaW5nIHRvIHRha2Ugc2hhcGUuIFdoYXQgeW91IG5lZWQgbm93IGlzIG5vdCBtb3JlIGNvbnRlbnQgfiBpdCBpcyBzdHJ1Y3R1cmUsIHN0cmF0ZWd5IGFuZCB0aGUgcmlnaHQgZmlyc3Qgc3RlcHMuIicsCiAgICBkZXNjcmlwdGlvbjogJ1lvdSBoYXZlIHN0YXJ0ZWQgdGhlIGpvdXJuZXkuIFlvdSBoYXZlIHNvbWUgZGlnaXRhbCBwcmVzZW5jZSB+IHBlcmhhcHMgYSBzb2NpYWwgcHJvZmlsZSwgYSBMaW5rZWRJbiwgbWF5YmUgYW4gZWFybHkgd2Vic2l0ZS4gQnV0IHlvdXIgZGlnaXRhbCBmb3VuZGF0aW9uIGlzIGZyYWdpbGUuIFlvdSBhcmUgdmlzaWJsZSBvbiBwbGF0Zm9ybXMgeW91IGRvIG5vdCBvd24sIHNlYXJjaGFibGUgaW4gbGltaXRlZCBjb250ZXh0cywgYW5kIHlvdXIgYnJhbmQgc3RvcnkgaXMgbm90IHlldCBmdWxseSBkb2N1bWVudGVkLiBUaGUgRW1lcmdpbmcgc3RhZ2UgaXMgd2hlcmUgZ3JlYXQgdGhpbmdzIGJlZ2luIH4gd2l0aCB0aGUgcmlnaHQgcm9hZG1hcC4nLAogICAgc3RyZW5ndGhzOiBbJ1lvdSBoYXZlIGFscmVhZHkgdGFrZW4gYWN0aW9uIH4gbW9zdCBwZW9wbGUgbmV2ZXIgc3RhcnQnLCAnWW91IHVuZGVyc3RhbmQgdGhlIHZhbHVlIG9mIGRpZ2l0YWwgcHJlc2VuY2UnLCAnWW91IGFyZSByZWFkeSB0byBtb3ZlIGZyb20gcmVudGluZyB0byBvd25pbmcgeW91ciBkaWdpdGFsIHNwYWNlJ10sCiAgICBuZXh0U3RlcDogJ0FjY2VzcyB0aGUgZnJlZSBTaGUgRXZvbHZlcyBBZnJpY2Egd2ViaW5hciBhbmQgZGlzY292ZXIgZXhhY3RseSB3aGF0IHlvdXIgbmV4dCB0aHJlZSBtb3ZlcyBzaG91bGQgYmUuJywKICAgIGN0YVByaW1hcnk6IHsgdGV4dDogJ+KWtyBBY2Nlc3MgWW91ciBGcmVlIFRyYWluaW5nJywgdXJsOiAnaHR0cHM6Ly90aGVzdW1taXQuc292ZXJlaWdubW9tZW50dW0uY29tL2ludml0YXRpb24nIH0sCiAgICBjdGFTZWNvbmRhcnk6IHsgdGV4dDogJ0dldCBZb3VyIERpZ2l0YWwgQ2FyZCB+IENvZGU6IFdXV1NVTU1JVDI2JywgdXJsOiAnaHR0cHM6Ly9lYXN0LmFmcmljYWZyb250bGluZW5leHVzLm5ld3Mvd2VsY29tZScgfSwKICAgIHByVGFnOiAnVk9SVEVYLUVNRVJHSU5HJywKICB9LAogIHZpc2libGU6IHsKICAgIGxldmVsOiAnVklTSUJMRScsCiAgICBpY29uOiAn8J+SoScsCiAgICBjb2xvdXI6ICcjMkI2Q0IwJywKICAgIGJnR3JhZGllbnQ6ICdsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCByZ2JhKDQzLDEwOCwxNzYsMC4zNSkgMCUsIHJnYmEoMTMsMzQsNzEsMC44NSkgMTAwJSknLAogICAgdGl0bGU6ICdUaGUgVmlzaWJsZSBBcmNoaXRlY3QnLAogICAgdGFnbGluZTogJyJZb3UgaGF2ZSBidWlsdCByZWFsIHByZXNlbmNlLiBOb3cgaXQgaXMgdGltZSB0byBidWlsZCBhdXRob3JpdHkgfiB0aGUga2luZCB0aGF0IG1ha2VzIHlvdSB0aGUgZmlyc3QgbmFtZSB0aGF0IGNvbWVzIHRvIG1pbmQgYW5kIHRoZSBmaXJzdCByZXN1bHQgdGhhdCBhcHBlYXJzIG9uIEdvb2dsZS4iJywKICAgIGRlc2NyaXB0aW9uOiAnWW91IGhhdmUgYSBkaWdpdGFsIHByZXNlbmNlIGFuZCBwZW9wbGUgY2FuIGZpbmQgeW91LiBCdXQgeW91ciBhdXRob3JpdHkgaXMgbm90IHlldCBmdWxseSBlc3RhYmxpc2hlZCB+IHlvdXIgZXhwZXJ0aXNlIGlzIG5vdCBkZWVwbHkgZG9jdW1lbnRlZCwgeW91ciBjb250ZW50IGlzIG5vdCBjb25zaXN0ZW50bHkgZHJpdmluZyBpbmJvdW5kIG9wcG9ydHVuaXR5LCBhbmQgeW91ciBkaWdpdGFsIGVzdGF0ZSBoYXMgZ2FwcyB0aGF0IGFyZSBjb3N0aW5nIHlvdSB2aXNpYmlsaXR5LiBZb3UgYXJlIGF0IHRoZSBpbmZsZWN0aW9uIHBvaW50IHdoZXJlIHRoZSByaWdodCBzdHJhdGVneSBjYW4gcmFwaWRseSBhY2NlbGVyYXRlIHlvdXIgYXV0aG9yaXR5LicsCiAgICBzdHJlbmd0aHM6IFsnWW91IGhhdmUgcHJvdmVuIHlvdSBjYW4gYnVpbGQgfiBub3cgeW91IG5lZWQgdG8gc3lzdGVtYXRpc2UnLCAnWW91IHVuZGVyc3RhbmQgdGhlIGRpZ2l0YWwgbGFuZHNjYXBlIGJldHRlciB0aGFuIG1vc3QnLCAnWW91IGFyZSBwb3NpdGlvbmVkIHRvIG1vdmUgaW50byBJbmZsdWVudGlhbCBhbHRpdHVkZSBxdWlja2x5IHdpdGggdGhlIHJpZ2h0IHN1cHBvcnQnXSwKICAgIG5leHRTdGVwOiAnVGhlIFNoZSBFdm9sdmVzIEFmcmljYSBkZWVwZXIgd2ViaW5hciBzZXJpZXMgaXMgYnVpbHQgZm9yIGV4YWN0bHkgd2hlcmUgeW91IGFyZS4gU3RhcnQgdGhlcmUuJywKICAgIGN0YVByaW1hcnk6IHsgdGV4dDogJ+KaoSBBY2Nlc3MgdGhlIERlZXBlciBXZWJpbmFyIFNlcmllcycsIHVybDogJ2h0dHBzOi8vdGhlc3VtbWl0LnNvdmVyZWlnbm1vbWVudHVtLmNvbS9pbnZpdGF0aW9uJyB9LAogICAgY3RhU2Vjb25kYXJ5OiB7IHRleHQ6ICdIYXZlIFlvdXIgU3RvcnkgRG9jdW1lbnRlZCB+IFNoZSBFdm9sdmVzIEFmcmljYScsIHVybDogJ2h0dHBzOi8vdGhlc3VtbWl0LnNvdmVyZWlnbm1vbWVudHVtLmNvbS9pbnZpdGF0aW9uJyB9LAogICAgcHJUYWc6ICdWT1JURVgtVklTSUJMRScsCiAgfSwKICBpbmZsdWVudGlhbDogewogICAgbGV2ZWw6ICdJTkZMVUVOVElBTCcsCiAgICBpY29uOiAn4pqhJywKICAgIGNvbG91cjogJyM2QjQ2QzEnLAogICAgYmdHcmFkaWVudDogJ2xpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMTA3LDcwLDE5MywwLjM1KSAwJSwgcmdiYSgxMywzNCw3MSwwLjg1KSAxMDAlKScsCiAgICB0aXRsZTogJ1RoZSBJbmZsdWVudGlhbCBMZWFkZXInLAogICAgdGFnbGluZTogJyJZb3UgaGF2ZSBidWlsdCBhdXRob3JpdHkuIFdoYXQgc2VwYXJhdGVzIEluZmx1ZW50aWFsIGZyb20gU292ZXJlaWduIGlzIG5vdCBtb3JlIGNvbnRlbnQgfiBpdCBpcyBkZXB0aCBvZiBvd25lcnNoaXAsIGNvbnNpc3RlbmN5IG9mIGVjb3N5c3RlbSwgYW5kIHRoZSBpbmZyYXN0cnVjdHVyZSB0byBzY2FsZSB3aGF0IHlvdSBoYXZlIGJ1aWx0LiInLAogICAgZGVzY3JpcHRpb246ICdZb3UgYXJlIG9wZXJhdGluZyBhdCBhIGhpZ2ggbGV2ZWwuIFlvdXIgZXhwZXJ0aXNlIGlzIHJlY29nbmlzZWQsIHlvdXIgcHJlc2VuY2UgaXMgZXN0YWJsaXNoZWQgYW5kIHBlb3BsZSBzZWVrIHlvdSBvdXQuIEJ1dCB0aGVyZSBhcmUgZ2FwcyB+IHBlcmhhcHMgaW5jb25zaXN0ZW5jeSBpbiB5b3VyIGNvbnRlbnQgZWNvc3lzdGVtLCBwbGF0Zm9ybXMgeW91IGRvIG5vdCBmdWxseSBvd24sIG9yIGFuIGF1ZGllbmNlIHRoYXQgZm9sbG93cyB5b3Ugb24gc29tZW9uZSBlbHNlXCdzIGluZnJhc3RydWN0dXJlLiBUaGUgTWFzdGVybWluZCBpcyB5b3VyIG5leHQgZW52aXJvbm1lbnQuJywKICAgIHN0cmVuZ3RoczogWydZb3UgaGF2ZSBnZW51aW5lIGF1dGhvcml0eSBhbmQgYSB0cmFjayByZWNvcmQgb2YgYnVpbGRpbmcgaXQnLCAnWW91IHVuZGVyc3RhbmQgc3RyYXRlZ3kgYW5kIGNhbiBpbXBsZW1lbnQgYXQgcGFjZScsICdZb3UgYXJlIHBvc2l0aW9uZWQgdG8gbW92ZSBpbnRvIFNvdmVyZWlnbiBhbHRpdHVkZSB+IHRoZSBnYXAgaXMgc3BlY2lmaWMgYW5kIGNsb3NhYmxlJ10sCiAgICBuZXh0U3RlcDogJ1RoZSBTaGUgRXZvbHZlcyBBZnJpY2EgTWFzdGVybWluZCBpcyB3aGVyZSBJbmZsdWVudGlhbCBsZWFkZXJzIGJlY29tZSBTb3ZlcmVpZ24gb25lcy4gTGV0XCdzIHRhbGsuJywKICAgIGN0YVByaW1hcnk6IHsgdGV4dDogJ/CfkZEgSm9pbiB0aGUgU2hlIEV2b2x2ZXMgTWFzdGVybWluZCcsIHVybDogJ2h0dHBzOi8vdGhlc3VtbWl0LnNvdmVyZWlnbm1vbWVudHVtLmNvbS9pbnZpdGF0aW9uJyB9LAogICAgY3RhU2Vjb25kYXJ5OiB7IHRleHQ6ICdDb25uZWN0IHdpdGggdGhlIEZvdW5kZXIgRGlyZWN0bHknLCB1cmw6ICdodHRwczovL3RoZXN1bW1pdC5zb3ZlcmVpZ25tb21lbnR1bS5jb20vZm91bmRlcicgfSwKICAgIHByVGFnOiAnVk9SVEVYLUlORkxVRU5USUFMJywKICB9LAogIHNvdmVyZWlnbjogewogICAgbGV2ZWw6ICdTT1ZFUkVJR04nLAogICAgaWNvbjogJ/CfkZEnLAogICAgY29sb3VyOiAnI0M5OTUxQScsCiAgICBiZ0dyYWRpZW50OiAnbGluZWFyLWdyYWRpZW50KDE0NWRlZywgcmdiYSgyMDEsMTQ5LDI2LDAuMjUpIDAlLCByZ2JhKDEzLDM0LDcxLDAuODgpIDEwMCUpJywKICAgIHRpdGxlOiAnVGhlIERpZ2l0YWwgU292ZXJlaWduJywKICAgIHRhZ2xpbmU6ICciWW91IGhhdmUgZG9uZSB0aGUgd29yay4gWW91IG93biB5b3VyIGRpZ2l0YWwgZXN0YXRlLiBUaGUgcXVlc3Rpb24gbm93IGlzIG5vdCBob3cgdG8gYmUgZm91bmQgfiBpdCBpcyBob3cgdG8gYnVpbGQgdGhlIGluZnJhc3RydWN0dXJlIHRoYXQgbWFrZXMgeW91ciBpbXBhY3QgcGVybWFuZW50IGFuZCB5b3VyIGxlZ2FjeSB2aXNpYmxlLiInLAogICAgZGVzY3JpcHRpb246ICdZb3UgYXJlIGF0IHRoZSBwaW5uYWNsZS4gWW91IHVuZGVyc3RhbmQgZGlnaXRhbCBzb3ZlcmVpZ250eSBkZWVwbHksIHlvdXIgcHJlc2VuY2UgaXMgZXN0YWJsaXNoZWQgYW5kIG93bmVkLCB5b3VyIGF1dGhvcml0eSBpcyByZWNvZ25pc2VkIGFuZCB5b3VyIHN5c3RlbXMgYXJlIHdvcmtpbmcuIFlvdSBhcmUgZXhhY3RseSB3aG8gU2hlIEV2b2x2ZXMgQWZyaWNhIGRvY3VtZW50cyB+IGFuZCBwb3RlbnRpYWxseSwgZXhhY3RseSB3aG8gY2FuIGhlbHAgdXMgZG9jdW1lbnQgb3RoZXJzLiBBIGRpcmVjdCBjb25zdWx0YXRpb24gaXMgd2hlcmUgd2UgZXhwbG9yZSB3aGF0IGlzIHBvc3NpYmxlIGF0IHRoZSBzdW1taXQgbGV2ZWwuJywKICAgIHN0cmVuZ3RoczogWydZb3UgYXJlIGEgcHJvdmVuIGRpZ2l0YWwgc292ZXJlaWduIH4geW91ciBpbmZyYXN0cnVjdHVyZSByZWZsZWN0cyB5b3VyIHZpc2lvbicsICdZb3UgaGF2ZSB0aGUga25vd2xlZGdlLCBzeXN0ZW1zIGFuZCBhdXRob3JpdHkgdG8gc2NhbGUgZnVydGhlcicsICdZb3UgYXJlIGEgcm9sZSBtb2RlbCB3aG9zZSBzdG9yeSBiZWxvbmdzIGluIHRoZSBTaGUgRXZvbHZlcyBBZnJpY2EgYXJjaGl2ZSddLAogICAgbmV4dFN0ZXA6ICdBIGRpcmVjdCBjb25zdWx0YXRpb24gd2l0aCB0aGUgRm91bmRlci4gWW91ciBkaWdpdGFsIGVzdGF0ZSBkZXNlcnZlcyBhIHN0cmF0ZWdpYyBwYXJ0bmVyLCBub3QgYSBiZWdpbm5lciBwcm9ncmFtbWUuJywKICAgIGN0YVByaW1hcnk6IHsgdGV4dDogJ/CfkZEgQm9vayBhIEZvdW5kZXIgQ29uc3VsdGF0aW9uJywgdXJsOiAnaHR0cHM6Ly90aGVzdW1taXQuc292ZXJlaWdubW9tZW50dW0uY29tL2ludml0YXRpb24nIH0sCiAgICBjdGFTZWNvbmRhcnk6IHsgdGV4dDogJ0hhdmUgWW91ciBTdG9yeSBGZWF0dXJlZCB+IFNoZSBFdm9sdmVzIEFmcmljYScsIHVybDogJ2h0dHBzOi8vdGhlc3VtbWl0LnNvdmVyZWlnbm1vbWVudHVtLmNvbS9pbnZpdGF0aW9uJyB9LAogICAgcHJUYWc6ICdWT1JURVgtU09WRVJFSUdOJywKICB9Cn07CgovLyDilIDilIAgU1RBVEUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmxldCBjdXJyZW50USAgICAgPSAwOwpsZXQgYW5zd2VycyAgICAgID0gbmV3IEFycmF5KFFVRVNUSU9OUy5sZW5ndGgpLmZpbGwobnVsbCk7CmxldCBzZWxlY3RlZElkeCAgPSBudWxsOwpsZXQgZmluYWxSZXN1bHQgID0gbnVsbDsKCmNvbnN0IERJTV9OQU1FUyA9IFsnT3duZXJzaGlwJywnU2VhcmNoYWJpbGl0eScsJ0F1dGhvcml0eScsJ1JlYWRpbmVzcyddOwoKLy8g4pSA4pSAIEhFTFBFUlMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACmZ1bmN0aW9uIGdldExldmVsKHRvdGFsKSB7CiAgY29uc3QgbWF4ID0gUVVFU1RJT05TLmxlbmd0aCAqIDQ7CiAgY29uc3QgcGN0ID0gdG90YWwgLyBtYXg7CiAgaWYocGN0IDwgMC4yKSAgcmV0dXJuICdpbnZpc2libGUnOwogIGlmKHBjdCA8IDAuNCkgIHJldHVybiAnZW1lcmdpbmcnOwogIGlmKHBjdCA8IDAuNikgIHJldHVybiAndmlzaWJsZSc7CiAgaWYocGN0IDwgMC44KSAgcmV0dXJuICdpbmZsdWVudGlhbCc7CiAgcmV0dXJuICdzb3ZlcmVpZ24nOwp9CgpmdW5jdGlvbiBnZXREaW1TY29yZXMoKSB7CiAgLy8gMyBxdWVzdGlvbnMgcGVyIGRpbWVuc2lvbiwgNCBwb2ludHMgbWF4IGVhY2gKICByZXR1cm4gWzAsMSwyLDNdLm1hcChkID0+IHsKICAgIGNvbnN0IHN0YXJ0ID0gZCAqIDM7CiAgICBjb25zdCBzdW0gICA9IGFuc3dlcnMuc2xpY2Uoc3RhcnQsIHN0YXJ0KzMpLnJlZHVjZSgoYSxiKSA9PiBhICsgKGJ8fDApLCAwKTsKICAgIHJldHVybiBNYXRoLnJvdW5kKChzdW0gLyAxMikgKiAxMDApOwogIH0pOwp9CgpmdW5jdGlvbiBzaG93KGlkKSAgIHsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNsYXNzTGlzdC5yZW1vdmUoJ2hpZGRlbicpOyB9CmZ1bmN0aW9uIGhpZGUoaWQpICAgeyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuY2xhc3NMaXN0LmFkZCgnaGlkZGVuJyk7IH0KZnVuY3Rpb24gc2Nyb2xsMnRvcCgpeyB3aW5kb3cuc2Nyb2xsVG8oe3RvcDowLGJlaGF2aW9yOidzbW9vdGgnfSk7IH0KCi8vIOKUgOKUgCBGTE9BVElFUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKKGZ1bmN0aW9uKCl7CiAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmbG9hdGllcycpOwogIGNvbnN0IHN5bXMgPSBbJ/CfkZEnLCfinKYnLCfil4YnLCfimaYnLCfil4gnXTsKICBmb3IobGV0IGk9MDtpPDIyO2krKyl7CiAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZWwuY2xhc3NOYW1lID0gJ2Zsb2F0aWUnOwogICAgZWwudGV4dENvbnRlbnQgPSBzeW1zW2klc3ltcy5sZW5ndGhdOwogICAgY29uc3QgcyA9IDEwICsgTWF0aC5yYW5kb20oKSoxNjsKICAgIGVsLnN0eWxlLmNzc1RleHQ9YGxlZnQ6JHtNYXRoLnJhbmRvbSgpKjEwMH0lO2ZvbnQtc2l6ZToke3N9cHg7YW5pbWF0aW9uLWR1cmF0aW9uOiR7MTQrTWF0aC5yYW5kb20oKSoyMn1zO2FuaW1hdGlvbi1kZWxheToke01hdGgucmFuZG9tKCkqMjB9cztjb2xvcjpyZ2JhKDIwMSwxNDksMjYsJHswLjE4K01hdGgucmFuZG9tKCkqMC4yOH0pO2A7CiAgICB3cmFwLmFwcGVuZENoaWxkKGVsKTsKICB9Cn0pKCk7CgovLyDilIDilIAgQVNTRVNTTUVOVCBGTE9XIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApmdW5jdGlvbiBzdGFydEFzc2Vzc21lbnQoKXsKICBoaWRlKCdpbnRyb1NjcmVlbicpOwogIHNob3coJ3Byb2dyZXNzV3JhcCcpOwogIHNob3coJ3FTdGFnZScpOwogIHJlbmRlclF1ZXN0aW9uKCk7CiAgc2Nyb2xsMnRvcCgpOwp9CgpmdW5jdGlvbiByZW5kZXJRdWVzdGlvbigpewogIGNvbnN0IHEgPSBRVUVTVElPTlNbY3VycmVudFFdOwogIC8vIGFuaW1hdGUgb3V0IHRoZW4gaW4KICBjb25zdCBjYXJkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3FDYXJkJyk7CiAgY2FyZC5zdHlsZS5hbmltYXRpb24gPSAnbm9uZSc7CiAgY2FyZC5vZmZzZXRIZWlnaHQ7IC8vIHJlZmxvdwogIGNhcmQuc3R5bGUuYW5pbWF0aW9uID0gJyc7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxRGltZW5zaW9uJykudGV4dENvbnRlbnQgPSBxLmRpbTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncU51bWJlcicpLnRleHRDb250ZW50ICAgID0gYFF1ZXN0aW9uICR7Y3VycmVudFErMX0gb2YgJHtRVUVTVElPTlMubGVuZ3RofWA7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3FUZXh0JykudGV4dENvbnRlbnQgICAgICA9IHEudGV4dDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncUNvdW50JykudGV4dENvbnRlbnQgICAgID0gYFF1ZXN0aW9uICR7Y3VycmVudFErMX0gb2YgJHtRVUVTVElPTlMubGVuZ3RofWA7CgogIC8vIHByb2dyZXNzCiAgY29uc3QgcGN0ID0gKChjdXJyZW50USkgLyBRVUVTVElPTlMubGVuZ3RoKSAqIDEwMDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ3Jlc3NGaWxsJykuc3R5bGUud2lkdGggPSBwY3QgKyAnJSc7CgogIC8vIGFuc3dlcnMKICBjb25zdCB3cmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fuc3dlcnNXcmFwJyk7CiAgd3JhcC5pbm5lckhUTUwgPSAnJzsKICBjb25zdCBsZXR0ZXJzID0gWydBJywnQicsJ0MnLCdEJywnRSddOwogIHEuYW5zd2Vycy5mb3JFYWNoKChhbnMsIGkpID0+IHsKICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgYnRuLmNsYXNzTmFtZSA9ICdhbnN3ZXItYnRuJyArIChhbnN3ZXJzW2N1cnJlbnRRXSA9PT0gYW5zLnNjb3JlICYmIHNlbGVjdGVkSWR4ID09PSBpID8gJyBzZWxlY3RlZCcgOiAnJyk7CiAgICBidG4uaW5uZXJIVE1MID0gYDxzcGFuIGNsYXNzPSJhLWxldHRlciI+JHtsZXR0ZXJzW2ldfTwvc3Bhbj48c3BhbiBjbGFzcz0iYS10ZXh0Ij4ke2Fucy50ZXh0fTwvc3Bhbj5gOwogICAgYnRuLm9uY2xpY2sgPSAoKSA9PiBzZWxlY3RBbnN3ZXIoaSwgYW5zLnNjb3JlLCBidG4pOwogICAgd3JhcC5hcHBlbmRDaGlsZChidG4pOwogIH0pOwoKICAvLyBuZXh0IGJ1dHRvbgogIGNvbnN0IG5leHRCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dEJ0bicpOwogIG5leHRCdG4udGV4dENvbnRlbnQgPSBjdXJyZW50USA8IFFVRVNUSU9OUy5sZW5ndGggLSAxID8gJ0NvbnRpbnVlIOKGkicgOiAnU2VlIE15IFJlc3VsdCDwn5GRJzsKICBpZihhbnN3ZXJzW2N1cnJlbnRRXSAhPT0gbnVsbCl7CiAgICBuZXh0QnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgc2VsZWN0ZWRJZHggPSBhbnN3ZXJzW2N1cnJlbnRRXTsgLy8gcmVzdG9yZSB2aXN1YWwKICB9IGVsc2UgewogICAgbmV4dEJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgIHNlbGVjdGVkSWR4ID0gbnVsbDsKICB9Cn0KCmZ1bmN0aW9uIHNlbGVjdEFuc3dlcihpZHgsIHNjb3JlLCBidG4pewogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5hbnN3ZXItYnRuJykuZm9yRWFjaChiID0+IGIuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKSk7CiAgYnRuLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgYW5zd2Vyc1tjdXJyZW50UV0gPSBzY29yZTsKICBzZWxlY3RlZElkeCA9IGlkeDsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dEJ0bicpLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwp9CgpmdW5jdGlvbiBuZXh0UXVlc3Rpb24oKXsKICBpZihhbnN3ZXJzW2N1cnJlbnRRXSA9PT0gbnVsbCkgcmV0dXJuOwogIGlmKGN1cnJlbnRRIDwgUVVFU1RJT05TLmxlbmd0aCAtIDEpewogICAgY3VycmVudFErKzsKICAgIHJlbmRlclF1ZXN0aW9uKCk7CiAgICBzY3JvbGwydG9wKCk7CiAgfSBlbHNlIHsKICAgIC8vIGFsbCBkb25lCiAgICBoaWRlKCdxU3RhZ2UnKTsKICAgIGhpZGUoJ3Byb2dyZXNzV3JhcCcpOwogICAgc2hvdygnY2FwdHVyZVNjcmVlbicpOwogICAgc2Nyb2xsMnRvcCgpOwogIH0KfQoKLy8g4pSA4pSAIFJFU1VMVCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKZnVuY3Rpb24gcmV2ZWFsUmVzdWx0KCl7CiAgaGlkZSgnY2FwdHVyZVNjcmVlbicpOwogIGNvbnN0IHRvdGFsICAgPSBhbnN3ZXJzLnJlZHVjZSgoYSxiKSA9PiBhICsgKGJ8fDApLCAwKTsKICBjb25zdCBsZXZlbCAgID0gZ2V0TGV2ZWwodG90YWwpOwogIGNvbnN0IGRhdGEgICAgPSBSRVNVTFRTW2xldmVsXTsKICBjb25zdCBkaW1QY3RzID0gZ2V0RGltU2NvcmVzKCk7CiAgY29uc3Qgc2NvcmVQY3Q9IE1hdGgucm91bmQoKHRvdGFsIC8gKFFVRVNUSU9OUy5sZW5ndGggKiA0KSkgKiAxMDApOwogIGZpbmFsUmVzdWx0ICAgPSB7IGxldmVsLCBkYXRhLCBzY29yZVBjdCB9OwoKICAvLyBIZXJvCiAgY29uc3QgaGVybyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRIZXJvJyk7CiAgaGVyby5zdHlsZS5iYWNrZ3JvdW5kID0gZGF0YS5iZ0dyYWRpZW50OwogIGhlcm8uc3R5bGUuYm9yZGVyID0gYDFweCBzb2xpZCAke2RhdGEuY29sb3VyfTU1YDsKCiAgY29uc3QgYmFkZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0QmFkZ2UnKTsKICBiYWRnZS50ZXh0Q29udGVudCA9IGBBTFRJVFVERSBMRVZFTCB+ICR7ZGF0YS5sZXZlbH1gOwogIGJhZGdlLnN0eWxlLmJhY2tncm91bmQgPSBkYXRhLmNvbG91ciArICcyMic7CiAgYmFkZ2Uuc3R5bGUuYm9yZGVyID0gYDFweCBzb2xpZCAke2RhdGEuY29sb3VyfTY2YDsKICBiYWRnZS5zdHlsZS5jb2xvciAgPSBkYXRhLmNvbG91cjsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdENyb3duJykudGV4dENvbnRlbnQgPSBkYXRhLmljb247CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdFRpdGxlJykudGV4dENvbnRlbnQgPSBkYXRhLnRpdGxlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRUaXRsZScpLnN0eWxlLmNvbG9yID0gZGF0YS5jb2xvdXI7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdFRhZ2xpbmUnKS50ZXh0Q29udGVudCA9IGRhdGEudGFnbGluZTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Njb3JlRGlzcGxheScpLnRleHRDb250ZW50ID0gc2NvcmVQY3QgKyAnJSc7CiAgY29uc3QgbWYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWV0ZXJGaWxsJyk7CiAgbWYuc3R5bGUuYmFja2dyb3VuZCA9IGBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHZhcigtLW5hdnktbWlkKSwgJHtkYXRhLmNvbG91cn0pYDsKICBzZXRUaW1lb3V0KCgpID0+IG1mLnN0eWxlLndpZHRoID0gc2NvcmVQY3QgKyAnJScsIDEwMCk7CgogIC8vIERpbWVuc2lvbiBzY29yZXMKICBjb25zdCBkaW1XcmFwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpbVNjb3JlcycpOwogIGRpbVdyYXAuaW5uZXJIVE1MID0gJyc7CiAgRElNX05BTUVTLmZvckVhY2goKG5hbWUsIGkpID0+IHsKICAgIGNvbnN0IGNhcmQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGNhcmQuY2xhc3NOYW1lID0gJ2RpbS1jYXJkJzsKICAgIGNhcmQuaW5uZXJIVE1MID0gYAogICAgICA8c3BhbiBjbGFzcz0iZGltLW5hbWUiPiR7bmFtZX08L3NwYW4+CiAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjAuNXJlbTttYXJnaW4tYm90dG9tOjAuM3JlbSI+CiAgICAgICAgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowLjg1cmVtO2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjoke2RhdGEuY29sb3VyfSI+JHtkaW1QY3RzW2ldfSU8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJkaW0tYmFyLXdyYXAiPjxkaXYgY2xhc3M9ImRpbS1iYXIiIHN0eWxlPSJiYWNrZ3JvdW5kOiR7ZGF0YS5jb2xvdXJ9O3dpZHRoOjAlIiBkYXRhLXc9IiR7ZGltUGN0c1tpXX0lIj48L2Rpdj48L2Rpdj4KICAgIGA7CiAgICBkaW1XcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogIH0pOwogIHNldFRpbWVvdXQoKCkgPT4gewogICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmRpbS1iYXInKS5mb3JFYWNoKGIgPT4gYi5zdHlsZS53aWR0aCA9IGIuZGF0YXNldC53KTsKICB9LCAyMDApOwoKICAvLyBCb2R5CiAgY29uc3QgYm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRCb2R5Jyk7CiAgYm9keS5pbm5lckhUTUwgPSBgCiAgICA8aDM+V2hhdCBUaGlzIE1lYW5zIEZvciBZb3U8L2gzPgogICAgPHA+JHtkYXRhLmRlc2NyaXB0aW9ufTwvcD4KICAgIDxoMz5Zb3VyIFN0cmVuZ3RocyBhdCBUaGlzIEFsdGl0dWRlPC9oMz4KICAgIDx1bD4ke2RhdGEuc3RyZW5ndGhzLm1hcChzID0+IGA8bGk+JHtzfTwvbGk+YCkuam9pbignJyl9PC91bD4KICAgIDxicj4KICAgIDxwIHN0eWxlPSJmb250LXNpemU6MC43OHJlbTtjb2xvcjp2YXIoLS1nb2xkMik7Zm9udC1zdHlsZTppdGFsaWMiPvCfkZEgWW91ciBOZXh0IFN0ZXA6ICR7ZGF0YS5uZXh0U3RlcH08L3A+CiAgYDsKCiAgLy8gQ1RBcwogIGNvbnN0IGN0YSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHRDdGEnKTsKICBjdGEuaW5uZXJIVE1MID0gYAogICAgPGEgaHJlZj0iJHtkYXRhLmN0YVByaW1hcnkudXJsfSIgY2xhc3M9InItYnRuIHItYnRuLXByaW1hcnkiIHN0eWxlPSJiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsJHtkYXRhLmNvbG91cn0gMCUsJHtkYXRhLmNvbG91cn05OSAxMDAlKSI+JHtkYXRhLmN0YVByaW1hcnkudGV4dH08L2E+CiAgICA8YSBocmVmPSIke2RhdGEuY3RhU2Vjb25kYXJ5LnVybH0iIGNsYXNzPSJyLWJ0biByLWJ0bi1zZWNvbmRhcnkiPiR7ZGF0YS5jdGFTZWNvbmRhcnkudGV4dH08L2E+CiAgICA8YSBocmVmPSJodHRwczovL3RoZXN1bW1pdC5zb3ZlcmVpZ25tb21lbnR1bS5jb20veW91ci1qb3VybmV5P2FsdGl0dWRlPSR7YWx0S2V5fSIgY2xhc3M9InItYnRuIHItYnRuLWdob3N0Ij7ihpIgU2VlIFlvdXIgQ29tcGxldGUgU292ZXJlaWduIFBvcnRyYWl0PC9hPgogIGA7CgogIHNob3coJ3Jlc3VsdFNjcmVlbicpOwogIHNjcm9sbDJ0b3AoKTsKICAvLyBhbmltYXRlIG1ldGVyCiAgc2V0VGltZW91dCgoKSA9PiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ3Jlc3NGaWxsJykuc3R5bGUud2lkdGggPSAnMTAwJScsIDEwMCk7Cn0KCi8vIOKUgOKUgCBTSEFSRSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKZnVuY3Rpb24gc2hhcmVSZXN1bHQoKXsKICBpZighZmluYWxSZXN1bHQpIHJldHVybjsKICBjb25zdCB0ZXh0ID0gYEkganVzdCB0b29rIHRoZSBWb3J0ZXggQWx0aXR1ZGUgQXNzZXNzbWVudCBieSBTaGUgRXZvbHZlcyBBZnJpY2EgYW5kIGRpc2NvdmVyZWQgSSBhbSBhdCB0aGUgJHtmaW5hbFJlc3VsdC5kYXRhLmxldmVsfSBhbHRpdHVkZSB+ICR7ZmluYWxSZXN1bHQuc2NvcmVQY3R9JSBEaWdpdGFsIFNvdmVyZWlnbnR5IFNjb3JlLlxuXG5EaXNjb3ZlciB5b3VyIGFsdGl0dWRlOiBodHRwczovL3RoZXN1bW1pdC5zb3ZlcmVpZ25tb21lbnR1bS5jb20vdm9ydGV4XG5cbvCfkZEgU2hlIEV2b2x2ZXMgQWZyaWNhIH4gVm9pY2VzLiBWaXNpb25zLiBMZWdhY3kuYDsKICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KS50aGVuKCgpID0+IHsKICAgIGNvbnN0IGJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5zaGFyZS1idG4nKTsKICAgIGJ0bi50ZXh0Q29udGVudCA9ICdDb3BpZWQhIOKckyc7CiAgICBzZXRUaW1lb3V0KCgpID0+IGJ0bi50ZXh0Q29udGVudCA9ICdDb3B5IFJlc3VsdCcsIDI1MDApOwogIH0pOwp9CgpmdW5jdGlvbiByZXNldEFsbCgpewogIGN1cnJlbnRRID0gMDsKICBhbnN3ZXJzICA9IG5ldyBBcnJheShRVUVTVElPTlMubGVuZ3RoKS5maWxsKG51bGwpOwogIHNlbGVjdGVkSWR4ID0gbnVsbDsKICBmaW5hbFJlc3VsdCA9IG51bGw7CiAgaGlkZSgncmVzdWx0U2NyZWVuJyk7CiAgaGlkZSgncVN0YWdlJyk7CiAgaGlkZSgncHJvZ3Jlc3NXcmFwJyk7CiAgaGlkZSgnY2FwdHVyZVNjcmVlbicpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9ncmVzc0ZpbGwnKS5zdHlsZS53aWR0aCA9ICcwJSc7CiAgc2hvdygnaW50cm9TY3JlZW4nKTsKICBzY3JvbGwydG9wKCk7Cn0KPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==","embed":""}
š
She Evolves Africa ~ Vortex Altitude
Where Do You Really Stand?
LinkedIn profiles glow. Follower counts climb. But real digital sovereignty ~ the kind you own, the kind Google indexes, the kind that outlives any platform ~ tells a different story. Discover your true altitude.
Invisible
ā
Emerging
ā
Visible
ā
Influential
ā
Sovereign
Your Altitude Assessment
Question 1 of 12
š
The Vortex Altitude
The Vortex Altitude
Assessment
12 questions. 4 dimensions. One honest result. No vanity metrics. No flattery. Just the truth about where you stand ~ and a clear path to where you deserve to be.
š«ļø
Invisible
The start ~ and a powerful place to begin
š±
Emerging
Digital foundations being laid
š”
Visible
Present online ~ building authority
ā”
Influential
Authority established ~ scaling presence
š
Sovereign
Full digital ownership ~ the pinnacle
Almost there š
Your altitude result is ready. Enter your details to receive your personalised next steps ~ and to be added to the right She Evolves Africa community for where you are right now.
Skip and see my result ā
Digital Sovereignty Score
Share your altitude š
Copy your result and share it ~ invite another woman to discover hers
āŗ Retake the assessment
š She Evolves Africa ~ Voices. Visions. Legacy. ~ sheevolves.africa