{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+VGhlIEtleXN0b25lIH4gWW91ciBGb3VuZGF0aW9ucyB8IFRoZSBNZXJpZGlhbiBBZnJpY2E8L3RpdGxlPgo8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIGZvbGxvdyI+CjxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL3RoZW1lcmlkaWFuLmFmcmljYS9icmFuZHJlYWRpbmVzcy1rZXlzdG9uZSI+CjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUd28gbWludXRlcy4gU2V2ZW4gaG9uZXN0IHF1ZXN0aW9ucy4gVGhlIGZvdW5kYXRpb25zIGRpYWdub3N0aWMgZm9yIEFmcmljYW4gZm91bmRlcnMuIE5vIHNoYW1lLiBKdXN0IHRoZSB0cnV0aCBvZiB3aGF0IGhvbGRzIHlvdXIgYnVzaW5lc3MgdXAgdG9kYXkuIj4KPHN0eWxlPgpAaW1wb3J0IHVybCgnaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNTAwOzAsNjAwOzAsNzAwOzEsNTAwOzEsNjAwJmZhbWlseT1FQitHYXJhbW9uZDppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MSw0MDAmZmFtaWx5PURNK01vbm86d2dodEAzMDA7NDAwOzUwMCZkaXNwbGF5PXN3YXAnKTsKCjpyb290IHsKICAtLW5hdnk6ICMwQjE2Mjg7CiAgLS1uYXZ5LWRlZXA6ICMwNjBkMTg7CiAgLS1uYXZ5LW1pZDogIzE0MjEzYTsKICAtLWdvbGQ6ICNGMEM0MzA7CiAgLS1nb2xkLWRlZXA6ICNjOWEwMjA7CiAgLS1nb2xkLXNvZnQ6IHJnYmEoMjQwLCAxOTYsIDQ4LCAwLjE1KTsKICAtLWNyZWFtOiAjRkVGQUYwOwogIC0tY3JlYW0tbXV0ZWQ6IHJnYmEoMjU0LCAyNTAsIDI0MCwgMC43OCk7CiAgLS1jcmVhbS1xdWlldDogcmdiYSgyNTQsIDI1MCwgMjQwLCAwLjU1KTsKICAtLXB1cnBsZTogIzRBMUE2QjsKICAtLXB1cnBsZS1zb2Z0OiByZ2JhKDc0LCAyNiwgMTA3LCAwLjQpOwogIC0tYm9yZGVyOiByZ2JhKDI0MCwgMTk2LCA0OCwgMC4xOCk7CiAgLS1ib3JkZXItc29mdDogcmdiYSgyNDAsIDE5NiwgNDgsIDAuMDgpOwogIC0tc2VyaWY6ICdDb3Jtb3JhbnQgR2FyYW1vbmQnLCBHZW9yZ2lhLCBzZXJpZjsKICAtLXNhbnM6ICdJQk0gUGxleCBTYW5zJywgc3lzdGVtLXVpLCAtYXBwbGUtc3lzdGVtLCBzYW5zLXNlcmlmOwogIC0tbW9ubzogJ0lCTSBQbGV4IE1vbm8nLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7Cn0KCiogeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KaHRtbCB7IHNjcm9sbC1iZWhhdmlvcjogc21vb3RoOyB9CmJvZHkgewogIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgZm9udC1mYW1pbHk6IHZhcigtLXNhbnMpOwogIGZvbnQtd2VpZ2h0OiAzMDA7CiAgbGluZS1oZWlnaHQ6IDEuNjU7CiAgZm9udC1zaXplOiAxN3B4OwogIG1pbi1oZWlnaHQ6IDEwMHZoOwogIG92ZXJmbG93LXg6IGhpZGRlbjsKfQpib2R5OjpiZWZvcmUgewogIGNvbnRlbnQ6ICcnOwogIHBvc2l0aW9uOiBmaXhlZDsKICBpbnNldDogMDsKICBiYWNrZ3JvdW5kOgogICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjAlIDAlLCByZ2JhKDI0MCwgMTk2LCA0OCwgMC4wNikgMCUsIHRyYW5zcGFyZW50IDUwJSksCiAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MCUgMTAwJSwgcmdiYSg3NCwgMjYsIDEwNywgMC4xMikgMCUsIHRyYW5zcGFyZW50IDU1JSk7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgei1pbmRleDogMDsKfQoud3JhcCB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIHotaW5kZXg6IDE7CiAgbWF4LXdpZHRoOiA4ODBweDsKICBtYXJnaW46IDAgYXV0bzsKICBwYWRkaW5nOiAwIDI0cHg7Cn0KCi8qIOKUgOKUgOKUgCBIZWFkZXIg4pSA4pSA4pSAICovCi5zaXRlLWhlYWRlciB7CiAgcGFkZGluZzogMjRweDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXNvZnQpOwogIGJhY2tncm91bmQ6IHJnYmEoNiwgMTMsIDI0LCAwLjQpOwp9Ci5zaXRlLWhlYWRlci1pbm5lciB7CiAgbWF4LXdpZHRoOiA4ODBweDsKICBtYXJnaW46IDAgYXV0bzsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIGZsZXgtd3JhcDogd3JhcDsKICBnYXA6IDE0cHg7Cn0KLmJyYW5kLW1hcmsgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzhyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMThlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKfQouYnJhbmQtbWFyayAubG96ZW5nZSB7CiAgbWFyZ2luLXJpZ2h0OiA4cHg7CiAgZm9udC1zaXplOiAwLjY1cmVtOwogIG9wYWNpdHk6IDAuNzsKfQouYmFjay1saW5rIHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjcycmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE0ZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tY3JlYW0tcXVpZXQpOwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzOwp9Ci5iYWNrLWxpbms6aG92ZXIgeyBjb2xvcjogdmFyKC0tZ29sZCk7IH0KCi8qIOKUgOKUgOKUgCBTdGFnZSBzeXN0ZW0g4pSA4pSA4pSAICovCi5zdGFnZSB7IGRpc3BsYXk6IG5vbmU7IH0KLnN0YWdlLmFjdGl2ZSB7IGRpc3BsYXk6IGJsb2NrOyBhbmltYXRpb246IGZhZGVJbiAwLjRzIGVhc2U7IH0KQGtleWZyYW1lcyBmYWRlSW4gewogIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoOHB4KTsgfQogIHRvIHsgb3BhY2l0eTogMTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9Cn0KCi8qIOKUgOKUgOKUgCBXZWxjb21lIHN0YWdlIOKUgOKUgOKUgCAqLwoud2VsY29tZSB7CiAgcGFkZGluZzogODBweCAwIDYwcHg7CiAgdGV4dC1hbGlnbjogY2VudGVyOwp9Ci5leWVicm93IHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjdyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMjhlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiAyNnB4OwogIG9wYWNpdHk6IDAuOTsKfQoud2VsY29tZSBoMSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLXNlcmlmKTsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc2l6ZTogY2xhbXAoMnJlbSwgNXZ3LCAzLjRyZW0pOwogIGxpbmUtaGVpZ2h0OiAxLjE1OwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgbWFyZ2luLWJvdHRvbTogMjhweDsKfQoud2VsY29tZSBoMSBlbSB7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKfQoud2VsY29tZSAubGVkZSB7CiAgbWF4LXdpZHRoOiA2MjBweDsKICBtYXJnaW46IDAgYXV0byAzNnB4OwogIGZvbnQtc2l6ZTogMS4wOHJlbTsKICBsaW5lLWhlaWdodDogMS43NTsKICBjb2xvcjogdmFyKC0tY3JlYW0tbXV0ZWQpOwp9Ci53ZWxjb21lLW1ldGEgewogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZ2FwOiAyOHB4OwogIGZsZXgtd3JhcDogd3JhcDsKICBtYXJnaW4tYm90dG9tOiA0MHB4Owp9Ci5tZXRhLWl0ZW0gewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzVyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBvcGFjaXR5OiAwLjg1Owp9Ci5tZXRhLWl0ZW0gLmRvdCB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiA1cHg7CiAgaGVpZ2h0OiA1cHg7CiAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIG1hcmdpbi1yaWdodDogMTBweDsKICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogIG9wYWNpdHk6IDAuNzsKfQoucHJvbWlzZS1ib3ggewogIG1heC13aWR0aDogNTgwcHg7CiAgbWFyZ2luOiAwIGF1dG8gNDRweDsKICBwYWRkaW5nOiAyNnB4IDMwcHg7CiAgYmFja2dyb3VuZDogcmdiYSgyMCwgMzMsIDU4LCAwLjUpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zb2Z0KTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoucHJvbWlzZS1ib3ggLnByb21pc2UtdGl0bGUgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzJyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMThlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9Ci5wcm9taXNlLWJveCAucHJvbWlzZS10ZXh0IHsKICBmb250LXNpemU6IDAuOThyZW07CiAgbGluZS1oZWlnaHQ6IDEuNzsKICBjb2xvcjogdmFyKC0tY3JlYW0tbXV0ZWQpOwp9Ci5idG4tcHJpbWFyeSB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuODVyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGZvbnQtd2VpZ2h0OiA2MDA7CiAgcGFkZGluZzogMThweCAzOHB4OwogIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYm9yZGVyOiBub25lOwogIGJvcmRlci1yYWRpdXM6IDJweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKfQouYnRuLXByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWdvbGQtZGVlcCk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSgyNDAsIDE5NiwgNDgsIDAuMik7Cn0KLnNpZ25hdHVyZSB7CiAgZGlzcGxheTogYmxvY2s7CiAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogIGZvbnQtc2l6ZTogMC43NHJlbTsKICBsZXR0ZXItc3BhY2luZzogMC4xNmVtOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIG1hcmdpbi10b3A6IDM2cHg7CiAgb3BhY2l0eTogMC44NTsKfQoKLyog4pSA4pSA4pSAIFNpc3RlciBkaWFnbm9zdGljIG5vdGUg4pSA4pSA4pSAICovCi5zaXN0ZXItbm90ZSB7CiAgbWF4LXdpZHRoOiA1MjBweDsKICBtYXJnaW46IDI4cHggYXV0byAwOwogIHBhZGRpbmc6IDE4cHggMjJweDsKICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAyNiwgMTA3LCAwLjEyKTsKICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tcHVycGxlLXNvZnQpOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KLnNpc3Rlci1ub3RlIC5zaXN0ZXItbGFiZWwgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNjhyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMThlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiA2cHg7CiAgb3BhY2l0eTogMC44NTsKfQouc2lzdGVyLW5vdGUgLnNpc3Rlci10ZXh0IHsKICBmb250LXNpemU6IDAuOXJlbTsKICBsaW5lLWhlaWdodDogMS42OwogIGNvbG9yOiB2YXIoLS1jcmVhbS1tdXRlZCk7Cn0KLnNpc3Rlci1ub3RlIC5zaXN0ZXItdGV4dCBhIHsKICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGJvcmRlci1ib3R0b206IDFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTsKfQouc2lzdGVyLW5vdGUgLnNpc3Rlci10ZXh0IGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1nb2xkLWRlZXApOwp9CgovKiDilIDilIDilIAgQXNzZXNzbWVudCBzdGFnZSDilIDilIDilIAgKi8KLmFzc2VzcyB7IHBhZGRpbmc6IDUwcHggMCA3MHB4OyB9Ci5wcm9ncmVzcy1ibG9jayB7IG1hcmdpbi1ib3R0b206IDUwcHg7IH0KLnByb2dyZXNzLW1ldGEgewogIGRpc3BsYXk6IGZsZXg7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgbWFyZ2luLWJvdHRvbTogMTRweDsKICBmbGV4LXdyYXA6IHdyYXA7CiAgZ2FwOiAxMHB4Owp9Ci5wcm9ncmVzcy1kaW0gewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzRyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMTZlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKfQoucHJvZ3Jlc3MtY291bnQgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzRyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1jcmVhbS1xdWlldCk7Cn0KLnByb2dyZXNzLWNvdW50IHN0cm9uZyB7IGNvbG9yOiB2YXIoLS1jcmVhbSk7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KLnByb2dyZXNzLWJhciB7CiAgaGVpZ2h0OiAzcHg7CiAgYmFja2dyb3VuZDogcmdiYSgyNTQsIDI1MCwgMjQwLCAwLjA4KTsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoucHJvZ3Jlc3MtZmlsbCB7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogIGJvcmRlci1yYWRpdXM6IDJweDsKICB0cmFuc2l0aW9uOiB3aWR0aCAwLjVzIGVhc2U7CiAgd2lkdGg6IDAlOwp9Ci5xLWJsb2NrIHsgbWFyZ2luLWJvdHRvbTogMzZweDsgfQoucS1leWVicm93IHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjdyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMmVtOwogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgY29sb3I6IHZhcigtLWdvbGQpOwogIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgb3BhY2l0eTogMC44NTsKfQoucS10ZXh0IHsKICBmb250LWZhbWlseTogdmFyKC0tc2VyaWYpOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zaXplOiBjbGFtcCgxLjVyZW0sIDMuMnZ3LCAyLjA1cmVtKTsKICBsaW5lLWhlaWdodDogMS4zOwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgbWFyZ2luLWJvdHRvbTogMTRweDsKfQoucS1udWRnZSB7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGZvbnQtc2l6ZTogMC45OHJlbTsKICBjb2xvcjogdmFyKC0tY3JlYW0tcXVpZXQpOwogIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KLm9wdGlvbnMgewogIGRpc3BsYXk6IGZsZXg7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICBnYXA6IDEycHg7Cn0KLm9wdCB7CiAgcGFkZGluZzogMThweCAyMnB4OwogIGJhY2tncm91bmQ6IHJnYmEoMjAsIDMzLCA1OCwgMC40NSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXNvZnQpOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICBjdXJzb3I6IHBvaW50ZXI7CiAgZm9udC1zaXplOiAxcmVtOwogIGxpbmUtaGVpZ2h0OiAxLjU1OwogIGNvbG9yOiB2YXIoLS1jcmVhbS1tdXRlZCk7CiAgdHJhbnNpdGlvbjogYWxsIDAuMThzIGVhc2U7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBmb250LWZhbWlseTogaW5oZXJpdDsKfQoub3B0OmhvdmVyIHsKICBiYWNrZ3JvdW5kOiByZ2JhKDI0MCwgMTk2LCA0OCwgMC4wNik7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXIpOwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDJweCk7Cn0KLm9wdC5zZWxlY3RlZCB7CiAgYmFja2dyb3VuZDogdmFyKC0tZ29sZC1zb2Z0KTsKICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7Cn0KLnEtbmF2IHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIG1hcmdpbi10b3A6IDM2cHg7CiAgZ2FwOiAxNHB4OwogIGZsZXgtd3JhcDogd3JhcDsKfQouYnRuLWJhY2sgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzRyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMTRlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1jcmVhbS1xdWlldCk7CiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXNvZnQpOwogIHBhZGRpbmc6IDEycHggMjJweDsKICBib3JkZXItcmFkaXVzOiAycHg7CiAgY3Vyc29yOiBwb2ludGVyOwogIHRyYW5zaXRpb246IGFsbCAwLjJzOwp9Ci5idG4tYmFjazpob3ZlciB7CiAgY29sb3I6IHZhcigtLWNyZWFtKTsKICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlcik7Cn0KLmJ0bi1iYWNrLmhpZGRlbiB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQoKLyog4pSA4pSA4pSAIFJlYWRpbmcgc3RhZ2Ug4pSA4pSA4pSAICovCi5yZWFkaW5nIHsgcGFkZGluZzogNjBweCAwIDgwcHg7IH0KLnJlYWRpbmctZXllYnJvdyB7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzJyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMjZlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiAyMnB4Owp9Ci5yZWFkaW5nLWJhbmQgewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tYm90dG9tOiA1MHB4Owp9Ci5yZWFkaW5nLWJhbmQtbmFtZSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLXNlcmlmKTsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc2l6ZTogY2xhbXAoMi40cmVtLCA2dncsIDRyZW0pOwogIGxpbmUtaGVpZ2h0OiAxOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiAxNHB4OwogIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOwp9Ci5yZWFkaW5nLXNjb3JlIHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjg1cmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE2ZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tY3JlYW0tcXVpZXQpOwp9Ci5yZWFkaW5nLXNjb3JlIHN0cm9uZyB7IGNvbG9yOiB2YXIoLS1jcmVhbSk7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KLmJhbmQtbWV0ZXIgewogIG1heC13aWR0aDogNDgwcHg7CiAgbWFyZ2luOiAzMnB4IGF1dG8gMDsKfQouYmFuZC1tZXRlci10cmFjayB7CiAgaGVpZ2h0OiA2cHg7CiAgYmFja2dyb3VuZDogcmdiYSgyNTQsIDI1MCwgMjQwLCAwLjA4KTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmJhbmQtbWV0ZXItZmlsbCB7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tcHVycGxlKSwgdmFyKC0tZ29sZCkpOwogIGJvcmRlci1yYWRpdXM6IDNweDsKICB0cmFuc2l0aW9uOiB3aWR0aCAwLjhzIGVhc2U7Cn0KLmJhbmQtbWV0ZXItbGFiZWxzIHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBtYXJnaW4tdG9wOiAxMHB4OwogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNnJlbTsKICBsZXR0ZXItc3BhY2luZzogMC4xZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tY3JlYW0tcXVpZXQpOwp9Ci5yZWFkaW5nLWJvZHkgewogIG1heC13aWR0aDogNjgwcHg7CiAgbWFyZ2luOiAwIGF1dG8gNDRweDsKICBwYWRkaW5nOiA0MHB4IDM2cHg7CiAgYmFja2dyb3VuZDogcmdiYSgyMCwgMzMsIDU4LCAwLjUpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zb2Z0KTsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLnJlYWRpbmctYm9keSBoMiB7CiAgZm9udC1mYW1pbHk6IHZhcigtLXNlcmlmKTsKICBmb250LXdlaWdodDogNTAwOwogIGZvbnQtc2l6ZTogMS43cmVtOwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKICBsaW5lLWhlaWdodDogMS4yNTsKfQoucmVhZGluZy1ib2R5IGgyIGVtIHsKICBmb250LXN0eWxlOiBpdGFsaWM7CiAgY29sb3I6IHZhcigtLWdvbGQpOwp9Ci5yZWFkaW5nLWJvZHkgcCB7CiAgZm9udC1zaXplOiAxLjA0cmVtOwogIGxpbmUtaGVpZ2h0OiAxLjc1OwogIGNvbG9yOiB2YXIoLS1jcmVhbS1tdXRlZCk7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKfQoucmVhZGluZy1ib2R5IHA6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KLmRpbS1icmVha2Rvd24gewogIG1heC13aWR0aDogNjgwcHg7CiAgbWFyZ2luOiAwIGF1dG8gNTBweDsKICBwYWRkaW5nOiAyOHB4IDMwcHg7CiAgYmFja2dyb3VuZDogcmdiYSgxMSwgMjIsIDQwLCAwLjUpOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zb2Z0KTsKICBib3JkZXItcmFkaXVzOiA0cHg7Cn0KLmRpbS1icmVha2Rvd24tdGl0bGUgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1tb25vKTsKICBmb250LXNpemU6IDAuNzJyZW07CiAgbGV0dGVyLXNwYWNpbmc6IDAuMThlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci5kaW0tcm93IHsKICBkaXNwbGF5OiBmbGV4OwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIHBhZGRpbmc6IDExcHggMDsKICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLXNvZnQpOwogIGdhcDogMTRweDsKfQouZGltLXJvdzpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfQouZGltLW5hbWUgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1zYW5zKTsKICBmb250LXNpemU6IDAuOTRyZW07CiAgY29sb3I6IHZhcigtLWNyZWFtLW11dGVkKTsKfQouZGltLWJhciB7CiAgZmxleDogMTsKICBtYXgtd2lkdGg6IDEzMHB4OwogIGhlaWdodDogNHB4OwogIGJhY2tncm91bmQ6IHJnYmEoMjU0LCAyNTAsIDI0MCwgMC4wOCk7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIG92ZXJmbG93OiBoaWRkZW47Cn0KLmRpbS1iYXItZmlsbCB7CiAgaGVpZ2h0OiAxMDAlOwogIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogIGJvcmRlci1yYWRpdXM6IDJweDsKfQouZGltLXNjb3JlIHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjgycmVtOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtaW4td2lkdGg6IDMwcHg7CiAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCi8qIOKUgOKUgOKUgCBJbnZpdGF0aW9uIGJsb2NrIOKUgOKUgOKUgCAqLwouaW52aXRhdGlvbiB7CiAgbWF4LXdpZHRoOiA2ODBweDsKICBtYXJnaW46IDAgYXV0bzsKICBwYWRkaW5nOiA1MHB4IDM4cHg7CiAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgcmdiYSg3NCwgMjYsIDEwNywgMC4yNSksIHJnYmEoMjQwLCAxOTYsIDQ4LCAwLjA2KSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZ29sZCk7CiAgYm9yZGVyLXJhZGl1czogNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQouaW52aXRhdGlvbi1leWVicm93IHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjcycmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjJlbTsKICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKICBtYXJnaW4tYm90dG9tOiAxOHB4Owp9Ci5pbnZpdGF0aW9uIGgzIHsKICBmb250LWZhbWlseTogdmFyKC0tc2VyaWYpOwogIGZvbnQtd2VpZ2h0OiA1MDA7CiAgZm9udC1zaXplOiAxLjg1cmVtOwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgbGluZS1oZWlnaHQ6IDEuMjU7CiAgbWFyZ2luLWJvdHRvbTogMThweDsKfQouaW52aXRhdGlvbiBoMyBlbSB7CiAgZm9udC1zdHlsZTogaXRhbGljOwogIGNvbG9yOiB2YXIoLS1nb2xkKTsKfQouaW52aXRhdGlvbiBwIHsKICBmb250LXNpemU6IDEuMDJyZW07CiAgbGluZS1oZWlnaHQ6IDEuNzsKICBjb2xvcjogdmFyKC0tY3JlYW0tbXV0ZWQpOwogIG1hcmdpbi1ib3R0b206IDMycHg7Cn0KLmludml0YXRpb24tYWN0aW9ucyB7CiAgZGlzcGxheTogZmxleDsKICBnYXA6IDE0cHg7CiAgZmxleC13cmFwOiB3cmFwOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIG1hcmdpbi1ib3R0b206IDI0cHg7Cn0KLmJ0bi1pbnZpdGF0aW9uIHsKICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGdhcDogMTBweDsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjc4cmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE0ZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBmb250LXdlaWdodDogNjAwOwogIHBhZGRpbmc6IDE2cHggMjZweDsKICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIHRyYW5zaXRpb246IGFsbCAwLjJzOwp9Ci5idG4tcHJpbWFyeS1hY3Rpb24gewogIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogIGNvbG9yOiB2YXIoLS1uYXZ5KTsKfQouYnRuLXByaW1hcnktYWN0aW9uOmhvdmVyIHsKICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkLWRlZXApOwogIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKfQouYnRuLXNlY29uZGFyeS1hY3Rpb24gewogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyKTsKfQouYnRuLXNlY29uZGFyeS1hY3Rpb246aG92ZXIgewogIGJhY2tncm91bmQ6IHZhcigtLWdvbGQtc29mdCk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICBjb2xvcjogdmFyKC0tZ29sZCk7Cn0KLmludml0YXRpb24tbWV0YSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogIGZvbnQtc2l6ZTogMC43cmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE2ZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tY3JlYW0tcXVpZXQpOwp9Ci5yZXRha2UtYmxvY2sgewogIHRleHQtYWxpZ246IGNlbnRlcjsKICBtYXJnaW4tdG9wOiA1MHB4Owp9Ci5idG4tcmV0YWtlIHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjc0cmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE0ZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tY3JlYW0tcXVpZXQpOwogIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1zb2Z0KTsKICBwYWRkaW5nOiAxMnB4IDIycHg7CiAgYm9yZGVyLXJhZGl1czogMnB4OwogIGN1cnNvcjogcG9pbnRlcjsKICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKfQouYnRuLXJldGFrZTpob3ZlciB7CiAgY29sb3I6IHZhcigtLWNyZWFtKTsKICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlcik7Cn0KCi8qIOKUgOKUgOKUgCBGb290ZXIg4pSA4pSA4pSAICovCi5zaXRlLWZvb3RlciB7CiAgcGFkZGluZzogNDBweCAyNHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5LWRlZXApOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItc29mdCk7CiAgbWFyZ2luLXRvcDogNDBweDsKfQouZm9vdGVyLWJyYW5kIHsKICBmb250LWZhbWlseTogdmFyKC0tbW9ubyk7CiAgZm9udC1zaXplOiAwLjc4cmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE4ZW07CiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgbWFyZ2luLWJvdHRvbTogOHB4Owp9Ci5mb290ZXItcGFyZW50IHsKICBmb250LWZhbWlseTogdmFyKC0tc2Fucyk7CiAgZm9udC1zaXplOiAwLjg1cmVtOwogIGNvbG9yOiB2YXIoLS1jcmVhbS1tdXRlZCk7CiAgbWFyZ2luLWJvdHRvbTogNnB4Owp9Ci5mb290ZXItY29weSB7CiAgZm9udC1mYW1pbHk6IHZhcigtLW1vbm8pOwogIGZvbnQtc2l6ZTogMC43cmVtOwogIGxldHRlci1zcGFjaW5nOiAwLjE0ZW07CiAgY29sb3I6IHZhcigtLWNyZWFtLXF1aWV0KTsKICBtYXJnaW4tdG9wOiAxNHB4Owp9CgpAbWVkaWEgKG1heC13aWR0aDogNjgwcHgpIHsKICAud2VsY29tZSB7IHBhZGRpbmc6IDYwcHggMCA0MHB4OyB9CiAgLmFzc2VzcyB7IHBhZGRpbmc6IDQwcHggMCA2MHB4OyB9CiAgLnJlYWRpbmcgeyBwYWRkaW5nOiA1MHB4IDAgNjBweDsgfQogIC5yZWFkaW5nLWJvZHksIC5pbnZpdGF0aW9uLCAucHJvbWlzZS1ib3gsIC5kaW0tYnJlYWtkb3duIHsKICAgIHBhZGRpbmc6IDI4cHggMjJweDsKICB9CiAgLndlbGNvbWUtbWV0YSB7IGdhcDogMTZweDsgfQogIGJvZHkgeyBmb250LXNpemU6IDE2cHg7IH0KfQo8L3N0eWxlPgo8c3R5bGU+Ci8qID09PT09IEJSQU5EIFJFQURJTkVTUyBGVU5ORUwgU0tJTiBPVkVSUklERSA9PT09PSAqLwo6cm9vdHsKICAtLW5hdnk6IzBGMUEzODsgLS1uYXZ5LWRlZXA6IzBCMTUzMDsgLS1uYXZ5LW1pZDojMTYyMzRBOwogIC0tZ29sZDojRDRBNzNDOyAtLWdvbGQtZGVlcDojQzk5NjNBOyAtLWdvbGQtc29mdDpyZ2JhKDIxMiwxNjcsNjAsLjE1KTsKICAtLWNyZWFtOiNGMkVBRDM7IC0tY3JlYW0tbXV0ZWQ6cmdiYSgyNDIsMjM0LDIxMSwuNzgpOyAtLWNyZWFtLXF1aWV0OnJnYmEoMjQyLDIzNCwyMTEsLjU1KTsKICAtLWJvcmRlcjpyZ2JhKDIxMiwxNjcsNjAsLjIwKTsgLS1ib3JkZXItc29mdDpyZ2JhKDIxMiwxNjcsNjAsLjEwKTsKICAtLXNhbnM6J0VCIEdhcmFtb25kJyxHZW9yZ2lhLHNlcmlmOyAtLW1vbm86J0RNIE1vbm8nLCdDb3VyaWVyIE5ldycsbW9ub3NwYWNlOwp9Cmh0bWx7YmFja2dyb3VuZDojMEIxNTMwfQpib2R5e2ZvbnQtd2VpZ2h0OjQwMH0KYm9keTo6YmVmb3Jle2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fQovKiBGdW5uZWxQYWdlcyBzdHJpcHMgYm9keSBiYWNrZ3JvdW5kOyB0aGlzIGZpeGVkIGxheWVyICh6LWluZGV4OjApIGhvbGRzIHRoZSBuYXZ5ICovCi5wYWdlLWJne3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7ei1pbmRleDowO3BvaW50ZXItZXZlbnRzOm5vbmU7CiAgYmFja2dyb3VuZDoKICAgIHJhZGlhbC1ncmFkaWVudCg2MCUgNTAlIGF0IDIwJSAwJSwgcmdiYSgyMTIsMTY3LDYwLC4wNyksIHRyYW5zcGFyZW50IDU1JSksCiAgICByYWRpYWwtZ3JhZGllbnQoNTIlIDQ1JSBhdCA4MiUgMTAwJSwgcmdiYSg3NCwyNiwxMDcsLjE2KSwgdHJhbnNwYXJlbnQgNjAlKSwKICAgIHJhZGlhbC1ncmFkaWVudCgxMjAlIDgwJSBhdCA1MCUgMCUsICMxQTJBNTIgMCUsIHZhcigtLW5hdnkpIDUwJSwgIzBCMTUzMCAxMDAlKTt9Ci5yb3Nle3Bvc2l0aW9uOmZpeGVkO3RvcDotMTMwcHg7bGVmdDo1MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSk7d2lkdGg6NzYwcHg7bWF4LXdpZHRoOjE1MHZ3OwogIHotaW5kZXg6MDtvcGFjaXR5Oi4wNTtwb2ludGVyLWV2ZW50czpub25lO2FuaW1hdGlvbjpia3NwaW4gMTYwcyBsaW5lYXIgaW5maW5pdGV9Ci5yb3NlIHN2Z3t3aWR0aDoxMDAlO2hlaWdodDphdXRvO2Rpc3BsYXk6YmxvY2t9CkBrZXlmcmFtZXMgYmtzcGlue3Rve3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHJvdGF0ZSgzNjBkZWcpfX0KLnNpdGUtaGVhZGVyLC5zaXRlLWZvb3Rlcntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjJ9Ci53cmFwe3otaW5kZXg6Mn0KLndlbGNvbWUgaDF7Zm9udC1mYW1pbHk6dmFyKC0tc2VyaWYpfQoudmlkZW8tZnJhbWV7bWF4LXdpZHRoOjYyMHB4O21hcmdpbjo2cHggYXV0byAzNnB4O3Bvc2l0aW9uOnJlbGF0aXZlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6MTRweDsKICBvdmVyZmxvdzpoaWRkZW47Ym9yZGVyOjJweCBzb2xpZCByZ2JhKDIxMiwxNjcsNjAsLjQyKTtiYWNrZ3JvdW5kOiMwYTExMjQ7Ym94LXNoYWRvdzowIDIwcHggNTBweCByZ2JhKDAsMCwwLC40KX0KLnZpZGVvLWZyYW1lIGlmcmFtZXtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOm5vbmV9CkBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnJvc2V7YW5pbWF0aW9uOm5vbmV9fQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPHNjcmlwdD4KLyogRGVwdGggZ2F0ZSB+IG9wZW5zIG9ubHkgZm9yIHZpc2l0b3JzIHdobyBjcm9zc2VkIFRoZSBDcm9zc2luZy4gRlAtc2FmZS4gKi8KKGZ1bmN0aW9uKCl7dmFyIG9rPWZhbHNlO3RyeXtvaz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtZXJpZGlhbl9wYXNzJyk9PT0nMSc7fWNhdGNoKGUpe29rPXRydWU7fWlmKCFvayl7d2luZG93LmxvY2F0aW9uLnJlcGxhY2UoJ2h0dHBzOi8vdGhlbWVyaWRpYW4uYWZyaWNhL2JyYW5kcmVhZGluZXNzLWNyb3NzaW5nP3RvPWtleXN0b25lJyk7fX0pKCk7Cjwvc2NyaXB0PgoKPGRpdiBjbGFzcz0icGFnZS1iZyIgYXJpYS1oaWRkZW49InRydWUiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJyb3NlIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgPHN2ZyB2aWV3Qm94PSIwIDAgMjAwIDIwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iI0M5QTI0QiIgc3Ryb2tlLXdpZHRoPSIxIj48Y2lyY2xlIGN4PSIxMDAiIGN5PSIxMDAiIHI9IjkyIi8+PGNpcmNsZSBjeD0iMTAwIiBjeT0iMTAwIiByPSI3MCIvPjxjaXJjbGUgY3g9IjEwMCIgY3k9IjEwMCIgcj0iNDAiLz48L2c+CiAgICA8ZyBmaWxsPSIjQzlBMjRCIj48cG9seWdvbiBwb2ludHM9IjEwMCwxMiAxMDgsMTAwIDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjEwMCwxMiA5MiwxMDAgMTAwLDEwMCIvPjxwb2x5Z29uIHBvaW50cz0iMTg4LDEwMCAxMDAsMTA4IDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjE4OCwxMDAgMTAwLDkyIDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjEwMCwxODggOTIsMTAwIDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjEwMCwxODggMTA4LDEwMCAxMDAsMTAwIi8+PHBvbHlnb24gcG9pbnRzPSIxMiwxMDAgMTAwLDkyIDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjEyLDEwMCAxMDAsMTA4IDEwMCwxMDAiLz48L2c+CiAgICA8ZyBmaWxsPSIjRTRDNjcyIiBvcGFjaXR5PSIwLjciPjxwb2x5Z29uIHBvaW50cz0iMTAwLDQwIDEwNCwxMDAgMTAwLDEwMCIvPjxwb2x5Z29uIHBvaW50cz0iMTYwLDEwMCAxMDAsMTA0IDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjEwMCwxNjAgOTYsMTAwIDEwMCwxMDAiLz48cG9seWdvbiBwb2ludHM9IjQwLDEwMCAxMDAsOTYgMTAwLDEwMCIvPjwvZz4KICA8L3N2Zz4KPC9kaXY+Cgo8IS0tIOKUgOKUgOKUgCBIRUFERVIg4pSA4pSA4pSAIC0tPgo8aGVhZGVyIGNsYXNzPSJzaXRlLWhlYWRlciI+CiAgPGRpdiBjbGFzcz0ic2l0ZS1oZWFkZXItaW5uZXIiPgogICAgPGRpdiBjbGFzcz0iYnJhbmQtbWFyayI+PHNwYW4gY2xhc3M9ImxvemVuZ2UiPuKXhjwvc3Bhbj5UaGUgTWVyaWRpYW4gQWZyaWNhPC9kaXY+CiAgICA8YSBocmVmPSIvYnJhbmRyZWFkaW5lc3MtYXJjaHdheSIgY2xhc3M9ImJhY2stbGluayI+4oaQIFRoZSBBcmNod2F5PC9hPgogIDwvZGl2Pgo8L2hlYWRlcj4KCjwhLS0g4pSA4pSA4pSAIFNUQUdFIDEgwrcgV0VMQ09NRSDilIDilIDilIAgLS0+CjxzZWN0aW9uIGNsYXNzPSJzdGFnZSBhY3RpdmUiIGlkPSJzdGFnZS13ZWxjb21lIj4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxkaXYgY2xhc3M9IndlbGNvbWUiPgoKICAgICAgPGRpdiBjbGFzcz0iZXllYnJvdyI+VGhlIEtleXN0b25lIMK3IEJ1c2luZXNzIEZvdW5kYXRpb25zIERpYWdub3N0aWM8L2Rpdj4KCiAgICAgIDxoMT5CZWZvcmUgYW55IGdyb3d0aCBzdHJhdGVneSw8YnI+PGVtPnNldmVuIGZvdW5kYXRpb25zLjwvZW0+PC9oMT4KCiAgICAgIDxwIGNsYXNzPSJsZWRlIj4KICAgICAgICBCZWZvcmUgYW55IEFJIGNvbnZlcnNhdGlvbiwgYW55IG1hcmtldGluZyBzeXN0ZW0sIGFueSBncm93dGggc3RyYXRlZ3ksIGFueSBuZXcgaW52ZXN0bWVudCwgdGhlcmUgYXJlIHNldmVuIGZvdW5kYXRpb25zIHRoYXQgZGVjaWRlIHdoZXRoZXIgYW55dGhpbmcgeW91IGJ1aWxkIHdpbGwgaG9sZC4gVGhlIEtleXN0b25lIG5hbWVzIHRoZW0sIG9uZSBieSBvbmUsIGFuZCBzaG93cyB5b3Ugd2hpY2ggb25lcyBhcmUgbG9hZC1iZWFyaW5nIGluIHlvdXIgYnVzaW5lc3MgcmlnaHQgbm93IGFuZCB3aGljaCBvbmVzIG5lZWQgdG8gYmUgcG91cmVkIGRlZXBlciBiZWZvcmUgeW91IGNhbiBidWlsZCBvbiB0aGVtIHNhZmVseS4KICAgICAgPC9wPgoKICAgICAgPGRpdiBjbGFzcz0idmlkZW8tZnJhbWUiPgogICAgICAgIDwhLS0gS0VZU1RPTkUgRklMTSB+IHZpZG1pbmdvIGoyeG9oIC0tPgogICAgICAgIDxpZnJhbWUgYWxsb3d0cmFuc3BhcmVuY3k9InRydWUiIHNyYz0iaHR0cHM6Ly92aWRtaW5nby5jb20vZnJhbWUvajJ4b2gvIiBmcmFtZWJvcmRlcj0iMCIgc2Nyb2xsaW5nPSJubyIgYWxsb3dmdWxsc2NyZWVuIHRpdGxlPSJUaGUgS2V5c3RvbmUgZmlsbSIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6bm9uZTsiPjwvaWZyYW1lPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IndlbGNvbWUtbWV0YSI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWV0YS1pdGVtIj48c3BhbiBjbGFzcz0iZG90Ij48L3NwYW4+VHdvIE1pbnV0ZXM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj5TZXZlbiBRdWVzdGlvbnM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZXRhLWl0ZW0iPjxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj5GcmVlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ibWV0YS1pdGVtIj48c3BhbiBjbGFzcz0iZG90Ij48L3NwYW4+Tm8gRW1haWwgUmVxdWlyZWQ8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJwcm9taXNlLWJveCI+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvbWlzZS10aXRsZSI+T3VyIFByb21pc2U8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJwcm9taXNlLXRleHQiPgogICAgICAgICAgTm8gc2NvcmUtc2hhbWluZy4gTm8gZmVhci1jbG9zZS4gTm8gY291bnRkb3duIHRpbWVyLiBUaGUgS2V5c3RvbmUgZ2l2ZXMgeW91IGEgcmVhbCByZWFkaW5nIG9mIHdoaWNoIGZvdW5kYXRpb25zIGhvbGQgdG9kYXkgYW5kIHdoaWNoIG5lZWQgYXR0ZW50aW9uLCBpbiBsYW5ndWFnZSB5b3UgY2FuIGFjdCBvbiB0aGlzIHdlZWsuIFRoZSByZWFkaW5nIGlzIGZvciB5b3UuIFdoYXQgeW91IGRvIHdpdGggaXQgaXMgeW91ciBjYWxsLgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1wcmltYXJ5IiBvbmNsaWNrPSJzdGFydEFzc2Vzc21lbnQoKSI+QmVnaW4gVGhlIEtleXN0b25lIOKGkjwvYnV0dG9uPgoKICAgICAgPHNwYW4gY2xhc3M9InNpZ25hdHVyZSI+Tm90IGJlaGluZC4gTm90IGJyb2tlbi4gTm90IHRvbyBsYXRlLjwvc3Bhbj4KCiAgICAgIDxkaXYgY2xhc3M9InNpc3Rlci1ub3RlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzaXN0ZXItbGFiZWwiPlNpc3RlciBEaWFnbm9zdGljPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lzdGVyLXRleHQiPgogICAgICAgICAgSWYgeW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgZm91bmRhdGlvbnMgcXVlc3Rpb24gYW5kIHdhbnQgdG8gbG9vayBhdCBBSSByZWFkaW5lc3Mgc3BlY2lmaWNhbGx5LCB0cnkgPGEgaHJlZj0iL2JyYW5kcmVhZGluZXNzLWhhbmRyYWlscyI+VGhlIEhhbmRyYWlsczwvYT4gaW5zdGVhZC4gQm90aCBtaXJyb3JzIHN0YW5kIHRvZ2V0aGVyIGF0IHRoZSBBcmNod2F5LgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9zZWN0aW9uPgoKPCEtLSDilIDilIDilIAgU1RBR0UgMiDCtyBBU1NFU1NNRU5UIOKUgOKUgOKUgCAtLT4KPHNlY3Rpb24gY2xhc3M9InN0YWdlIiBpZD0ic3RhZ2UtYXNzZXNzIj4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxkaXYgY2xhc3M9ImFzc2VzcyI+CgogICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1ibG9jayI+CiAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtbWV0YSI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1kaW0iIGlkPSJwcm9nRGltIj5Gb3VuZGF0aW9uIE9uZSDCtyBJZGVudGl0eTwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtY291bnQiPlF1ZXN0aW9uIDxzdHJvbmcgaWQ9InByb2dOdW0iPjE8L3N0cm9uZz4gb2YgNzwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InByb2dyZXNzLWJhciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9ncmVzcy1maWxsIiBpZD0icHJvZ0ZpbGwiPjwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InEtYmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9InEtZXllYnJvdyIgaWQ9InFFeWVicm93Ij48L2Rpdj4KICAgICAgICA8aDIgY2xhc3M9InEtdGV4dCIgaWQ9InFUZXh0Ij48L2gyPgogICAgICAgIDxwIGNsYXNzPSJxLW51ZGdlIiBpZD0icU51ZGdlIj48L3A+CgogICAgICAgIDxkaXYgY2xhc3M9Im9wdGlvbnMiIGlkPSJvcHRzQm94Ij48L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0icS1uYXYiPgogICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWJhY2siIGlkPSJidG5CYWNrIiBvbmNsaWNrPSJwcmV2UXVlc3Rpb24oKSI+4oaQIFByZXZpb3VzPC9idXR0b24+CiAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8IS0tIOKUgOKUgOKUgCBTVEFHRSAzIMK3IFJFQURJTkcg4pSA4pSA4pSAIC0tPgo8c2VjdGlvbiBjbGFzcz0ic3RhZ2UiIGlkPSJzdGFnZS1yZWFkaW5nIj4KICA8ZGl2IGNsYXNzPSJ3cmFwIj4KICAgIDxkaXYgY2xhc3M9InJlYWRpbmciPgoKICAgICAgPGRpdiBjbGFzcz0icmVhZGluZy1leWVicm93Ij5Zb3VyIFJlYWRpbmc8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InJlYWRpbmctYmFuZCI+CiAgICAgICAgPGRpdiBjbGFzcz0icmVhZGluZy1iYW5kLW5hbWUiIGlkPSJiYW5kTmFtZSI+Rm91bmRhdGlvbnM8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJyZWFkaW5nLXNjb3JlIj5TY29yZSDCtyA8c3Ryb25nIGlkPSJ0b3RhbFNjb3JlIj4wPC9zdHJvbmc+IG9mIDI4PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYmFuZC1tZXRlciI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJiYW5kLW1ldGVyLXRyYWNrIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmFuZC1tZXRlci1maWxsIiBpZD0ibWV0ZXJGaWxsIj48L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdiBjbGFzcz0iYmFuZC1tZXRlci1sYWJlbHMiPgogICAgICAgICAgICA8c3Bhbj5Ob3QgWWV0IFNldDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+Rm9ybWluZzwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+SG9sZDwvc3Bhbj4KICAgICAgICAgICAgPHNwYW4+U292ZXJlaWduPC9zcGFuPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0icmVhZGluZy1ib2R5IiBpZD0icmVhZGluZ0JvZHkiPjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iZGltLWJyZWFrZG93biI+CiAgICAgICAgPGRpdiBjbGFzcz0iZGltLWJyZWFrZG93bi10aXRsZSI+Rm91bmRhdGlvbi1ieS1Gb3VuZGF0aW9uIEJyZWFrZG93bjwvZGl2PgogICAgICAgIDxkaXYgaWQ9ImRpbVJvd3MiPjwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9Imludml0YXRpb24iPgogICAgICAgIDxkaXYgY2xhc3M9Imludml0YXRpb24tZXllYnJvdyI+WW91ciBOZXh0IE1vdmU8L2Rpdj4KICAgICAgICA8aDMgaWQ9ImludkhlYWRsaW5lIj5XaGVyZSB0byBnbyA8ZW0+ZnJvbSBoZXJlLjwvZW0+PC9oMz4KICAgICAgICA8cCBpZD0iaW52Qm9keSI+PC9wPgogICAgICAgIDxkaXYgY2xhc3M9Imludml0YXRpb24tYWN0aW9ucyIgaWQ9ImludkFjdGlvbnMiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Imludml0YXRpb24tbWV0YSI+Q2hvb3NlIHlvdXIgZG9vciDCtyBUYWtlIHlvdXIgdGltZTwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InJldGFrZS1ibG9jayI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLXJldGFrZSIgb25jbGljaz0icmVzZXRBc3Nlc3NtZW50KCkiPuKGuiBSZXRha2UgVGhlIEtleXN0b25lPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8IS0tIOKUgOKUgOKUgCBGT09URVIg4pSA4pSA4pSAIC0tPgo8Zm9vdGVyIGNsYXNzPSJzaXRlLWZvb3RlciI+CiAgPGRpdiBjbGFzcz0iZm9vdGVyLWJyYW5kIj7il4YgQnJhbmQgUmVhZGluZXNzIMK3IFRoZSBNZXJpZGlhbiBBZnJpY2E8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmb290ZXItcGFyZW50Ij5BIFByYWN0aWNlIG9mIE11a2FzYSBWZW50dXJlIFBhcnRuZXJzIExMQzwvZGl2PgogIDxkaXYgY2xhc3M9ImZvb3Rlci1wYXJlbnQiPnRoZW1lcmlkaWFuLmFmcmljYTwvZGl2PgogIDxkaXYgY2xhc3M9ImZvb3Rlci1jb3B5Ij7CqSAyMDI2IMK3IEFsbCByaWdodHMgcmVzZXJ2ZWQ8L2Rpdj4KPC9mb290ZXI+Cgo8c2NyaXB0PgovLyDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKLy8gICBUSEUgS0VZU1RPTkUgwrcgUVVFU1RJT04gQkFOSwovLyDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKY29uc3QgUVVFU1RJT05TID0gWwogIHsKICAgIGRpbTogIklkZW50aXR5IiwKICAgIGV5ZWJyb3c6ICJGb3VuZGF0aW9uIE9uZSDCtyBJZGVudGl0eSIsCiAgICB0ZXh0OiAnIkhvdyBjbGVhcmx5IGNhbiB5b3UgYXJ0aWN1bGF0ZSB3aGF0IHlvdXIgYnVzaW5lc3MgdW5pcXVlbHkgZG9lcyB0aGF0IGNvbXBldGl0b3JzIGNhbm5vdD8iJywKICAgIG51ZGdlOiAiTm90IHlvdXIgdGFnbGluZS4gTm90IHlvdXIgc2xvZ2FuLiBUaGUgYWN0dWFsIHNlbnRlbmNlIHRoYXQgY2FwdHVyZXMgd2hhdCB5b3UgZG8sIGZvciB3aG9tLCBhbmQgd2h5IGl0IG1hdHRlcnMgfiBpbiBsYW5ndWFnZSBhbnlvbmUgY291bGQgcmVwZWF0LiIsCiAgICBvcHRzOiBbCiAgICAgIHsgbGFiZWw6ICJIb25lc3RseSwgSSBjYW5ub3QgZGVzY3JpYmUgdGhpcyBpbiBvbmUgY2xlYXIgc2VudGVuY2UuIiwgc2NvcmU6IDAgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBhIHZhZ3VlIHNlbnNlIGJ1dCBpdCBjaGFuZ2VzIGVhY2ggdGltZSBJIHRyeSB0byBzYXkgaXQuIiwgc2NvcmU6IDEgfSwKICAgICAgeyBsYWJlbDogIkkgY2FuIGRlc2NyaWJlIGl0IHdoZW4gYXNrZWQsIGJ1dCBteSB0ZWFtIHdvdWxkIHNheSBpdCBkaWZmZXJlbnRseS4iLCBzY29yZTogMiB9LAogICAgICB7IGxhYmVsOiAiSSBoYXZlIGEgY2xlYXIgaWRlbnRpdHkgdGhhdCBJIGFuZCBteSB0ZWFtIGFydGljdWxhdGUgY29uc2lzdGVudGx5LiIsIHNjb3JlOiAzIH0sCiAgICAgIHsgbGFiZWw6ICJZZXMgfiBteSBpZGVudGl0eSBpcyBkb2N1bWVudGVkLCBsaXZlZCBieSBteSB0ZWFtLCByZWNvZ25pc2VkIGJ5IG15IGN1c3RvbWVycy4iLCBzY29yZTogNCB9CiAgICBdCiAgfSwKICB7CiAgICBkaW06ICJPZmZlciIsCiAgICBleWVicm93OiAiRm91bmRhdGlvbiBUd28gwrcgT2ZmZXIiLAogICAgdGV4dDogJyJBcmUgeW91ciBwcm9kdWN0cyBhbmQgc2VydmljZXMgcHJpY2VkLCBwYWNrYWdlZCwgYW5kIHBvc2l0aW9uZWQgY29uc2lzdGVudGx5PyInLAogICAgbnVkZ2U6ICJOb3Qgd2hhdCBpcyBvbiB5b3VyIHdlYnNpdGUuIFdoYXQgeW91IGFjdHVhbGx5IGNoYXJnZSwgd2hhdCBpcyBhY3R1YWxseSBpbmNsdWRlZCwgYW5kIHdoZXRoZXIgdGhlIHNhbWUgY3VzdG9tZXIgd291bGQgcmVjZWl2ZSB0aGUgc2FtZSBvZmZlciBmcm9tIHlvdSBuZXh0IHdlZWsuIiwKICAgIG9wdHM6IFsKICAgICAgeyBsYWJlbDogIk15IG9mZmVyIGNoYW5nZXMgZGVwZW5kaW5nIG9uIHdobyBpcyBhc2tpbmcuIiwgc2NvcmU6IDAgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBvZmZlcmluZ3MgYnV0IHRoZXkgYXJlIG5vdCBwYWNrYWdlZCBjb25zaXN0ZW50bHkuIiwgc2NvcmU6IDEgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBwYWNrYWdlZCBvZmZlcnMgYnV0IHByaWNpbmcgaXMgbmVnb3RpYWJsZSBjYXNlIGJ5IGNhc2UuIiwgc2NvcmU6IDIgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBjbGVhciBwYWNrYWdlcyB3aXRoIGNvbnNpc3RlbnQgcHJpY2luZy4iLCBzY29yZTogMyB9LAogICAgICB7IGxhYmVsOiAiWWVzIH4gZXZlcnkgb2ZmZXIgaXMgZG9jdW1lbnRlZCB3aXRoIHByaWNlLCBzY29wZSwgY3VzdG9tZXIsIGNvbnZlcnNpb24gcGF0aC4iLCBzY29yZTogNCB9CiAgICBdCiAgfSwKICB7CiAgICBkaW06ICJBdWRpZW5jZSIsCiAgICBleWVicm93OiAiRm91bmRhdGlvbiBUaHJlZSDCtyBBdWRpZW5jZSIsCiAgICB0ZXh0OiAnIkhvdyBwcmVjaXNlbHkgZG8geW91IGtub3cgd2hvIHlvdXIgaWRlYWwgY3VzdG9tZXIgaXM/IicsCiAgICBudWRnZTogIk5vdCB3aG8gYnV5cyBmcm9tIHlvdS4gV2hvIGJ1eXMgZnJvbSB5b3UsIGNvbWVzIGJhY2ssIHJlZmVycyBvdGhlcnMsIGFuZCBwYXlzIHdpdGhvdXQgbmVnb3RpYXRpbmcuIFRoZSBjdXN0b21lciB5b3Ugd291bGQgYnVpbGQgdGhlIGVudGlyZSBidXNpbmVzcyBhcm91bmQgaWYgeW91IGNvdWxkLiIsCiAgICBvcHRzOiBbCiAgICAgIHsgbGFiZWw6ICJBbnlvbmUgd2hvIHdpbGwgcGF5LiBJIGhhdmUgbm90IG5hcnJvd2VkIGl0LiIsIHNjb3JlOiAwIH0sCiAgICAgIHsgbGFiZWw6ICJJIGhhdmUgYSByb3VnaCBzZW5zZSBvZiB0aGUgdHlwZSBvZiBwZXJzb24uIiwgc2NvcmU6IDEgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBhIHRhcmdldCBhdWRpZW5jZSBidXQgY2Fubm90IGRlc2NyaWJlIHRoZW0gcHJlY2lzZWx5LiIsIHNjb3JlOiAyIH0sCiAgICAgIHsgbGFiZWw6ICJJIGNhbiBkZXNjcmliZSBteSBpZGVhbCBjdXN0b21lciBpbiByZWFsIGRldGFpbC4iLCBzY29yZTogMyB9LAogICAgICB7IGxhYmVsOiAiWWVzIH4gZG9jdW1lbnRlZCBwZXJzb25hcyB3aXRoIHZlcmlmaWVkIGRhdGEgb24gd2hvIGFjdHVhbGx5IGNvbnZlcnRzLiIsIHNjb3JlOiA0IH0KICAgIF0KICB9LAogIHsKICAgIGRpbTogIlZvaWNlIiwKICAgIGV5ZWJyb3c6ICJGb3VuZGF0aW9uIEZvdXIgwrcgVm9pY2UiLAogICAgdGV4dDogJyJIb3cgY29uc2lzdGVudGx5IGRvZXMgeW91ciBidXNpbmVzcyBzb3VuZCB0aGUgc2FtZSBhY3Jvc3MgZXZlcnkgY2hhbm5lbD8iJywKICAgIG51ZGdlOiAiRW1haWwsIHNvY2lhbCBwb3N0cywgdGhlIHdlYnNpdGUsIHdoYXQgeW91ciB0ZWFtIHNheXMgaW4gbWVldGluZ3MsIHdoYXQgeW91IHNheSBpbiBwZXJzb24uIElmIGEgY3VzdG9tZXIgcmVhZCBhbGwgb2YgdGhvc2Ugc2lkZSBieSBzaWRlLCB3b3VsZCB0aGV5IHJlY29nbmlzZSBvbmUgYnVzaW5lc3Mgb3Igc2V2ZXJhbD8iLAogICAgb3B0czogWwogICAgICB7IGxhYmVsOiAiTXkgY29tbXVuaWNhdGlvbnMgc291bmQgZGlmZmVyZW50IGFsbW9zdCBldmVyeXdoZXJlLiIsIHNjb3JlOiAwIH0sCiAgICAgIHsgbGFiZWw6ICJJIGhhdmUgYSBzZW5zZSBvZiBteSB2b2ljZSBidXQgaXQgZHJpZnRzIHdoZW4gb3RoZXJzIHdyaXRlLiIsIHNjb3JlOiAxIH0sCiAgICAgIHsgbGFiZWw6ICJNeSB2b2ljZSBpcyBtb3N0bHkgY29uc2lzdGVudCB3aGVuIEkgd3JpdGUgYnV0IG15IHRlYW0ncyBjb250ZW50IGRpZmZlcnMuIiwgc2NvcmU6IDIgfSwKICAgICAgeyBsYWJlbDogIldlIGhhdmUgdm9pY2UgZ3VpZGVsaW5lcyBhbmQgbW9zdGx5IGZvbGxvdyB0aGVtLiIsIHNjb3JlOiAzIH0sCiAgICAgIHsgbGFiZWw6ICJZZXMgfiBkb2N1bWVudGVkIHZvaWNlIGd1aWRlOyBldmVyeSBjaGFubmVsIHNvdW5kcyBsaWtlIHVzLiIsIHNjb3JlOiA0IH0KICAgIF0KICB9LAogIHsKICAgIGRpbTogIlZpc3VhbCIsCiAgICBleWVicm93OiAiRm91bmRhdGlvbiBGaXZlIMK3IFZpc3VhbCIsCiAgICB0ZXh0OiAnIkhvdyBjb25zaXN0ZW50IGlzIHlvdXIgdmlzdWFsIGlkZW50aXR5IGFjcm9zcyBldmVyeSBwbGFjZSB5b3VyIGJ1c2luZXNzIGFwcGVhcnM/IicsCiAgICBudWRnZTogIkxvZ28sIGNvbG91cnMsIGZvbnRzLCBpbWFnZXJ5LCB0aGUgd2F5IHlvdXIgd2Vic2l0ZSBsb29rcywgdGhlIHdheSB5b3VyIHRlYW0gcG9zdHMgb24gc29jaWFsLCB0aGUgd2F5IHlvdXIgYnVzaW5lc3MgY2FyZCBsb29rcy4gRG9lcyBpdCBhbGwgcmVhZCBhcyBvbmUgYnJhbmQ/IiwKICAgIG9wdHM6IFsKICAgICAgeyBsYWJlbDogIkkgdXNlIHdoYXRldmVyIGxvb2tzIGdvb2QgaW4gdGhlIG1vbWVudC4iLCBzY29yZTogMCB9LAogICAgICB7IGxhYmVsOiAiSSBoYXZlIGEgbG9nbyBhbmQgcm91Z2ggY29sb3VycyBidXQgbm8gcmVhbCBzeXN0ZW0uIiwgc2NvcmU6IDEgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBhIGJhc2ljIHZpc3VhbCBzeXN0ZW0gdGhhdCBJIHNvbWV0aW1lcyBmb2xsb3cuIiwgc2NvcmU6IDIgfSwKICAgICAgeyBsYWJlbDogIkkgaGF2ZSBhIGRvY3VtZW50ZWQgdmlzdWFsIGlkZW50aXR5IHRoYXQgd2UgbW9zdGx5IGZvbGxvdy4iLCBzY29yZTogMyB9LAogICAgICB7IGxhYmVsOiAiWWVzIH4gY29tcGxldGUgdmlzdWFsIHN5c3RlbSBlbmZvcmNlZCBhY3Jvc3MgZXZlcnkgdG91Y2hwb2ludC4iLCBzY29yZTogNCB9CiAgICBdCiAgfSwKICB7CiAgICBkaW06ICJPcGVyYXRpb25zIiwKICAgIGV5ZWJyb3c6ICJGb3VuZGF0aW9uIFNpeCDCtyBPcGVyYXRpb25zIiwKICAgIHRleHQ6ICciSG93IG11Y2ggb2YgeW91ciBidXNpbmVzcyBjYW4gcnVuIHdpdGhvdXQgeW91IGluIGl0IHBlcnNvbmFsbHk/IicsCiAgICBudWRnZTogIklmIHlvdSB0b29rIGEgbW9udGggb2ZmIGNvbXBsZXRlbHksIHdoYXQgd291bGQgc3RpbGwgZnVuY3Rpb24/IFdoYXQgd291bGQgc2xvdyBkb3duPyBXaGF0IHdvdWxkIHN0b3A/IFRoaXMgaXMgbm90IGFib3V0IGxlYXZpbmcuIEl0IGlzIGFib3V0IHdoZXRoZXIgd2hhdCB5b3UgaGF2ZSBidWlsdCBob2xkcyB3aXRob3V0IHlvdXIgd2VpZ2h0IG9uIGl0IGRhaWx5LiIsCiAgICBvcHRzOiBbCiAgICAgIHsgbGFiZWw6ICJFdmVyeXRoaW5nIHJ1bnMgdGhyb3VnaCBtZS4gSWYgSSBzdG9wLCB0aGUgYnVzaW5lc3Mgc3RvcHMuIiwgc2NvcmU6IDAgfSwKICAgICAgeyBsYWJlbDogIkEgZmV3IHRoaW5ncyBjb250aW51ZSB3aXRob3V0IG1lLCBidXQgbW9zdCB0aGluZ3Mgd2FpdC4iLCBzY29yZTogMSB9LAogICAgICB7IGxhYmVsOiAiQWJvdXQgaGFsZiBteSBvcGVyYXRpb25zIGhhdmUgc3lzdGVtcyBhbmQgcGVvcGxlIHRoYXQgaG9sZC4iLCBzY29yZTogMiB9LAogICAgICB7IGxhYmVsOiAiTW9zdCBvcGVyYXRpb25zIGhhdmUgZG9jdW1lbnRlZCBzeXN0ZW1zIGFuZCBjYXBhYmxlIHBlb3BsZS4iLCBzY29yZTogMyB9LAogICAgICB7IGxhYmVsOiAiWWVzIH4gdGhlIGJ1c2luZXNzIHJ1bnMgb24gc3lzdGVtcyBhbmQgdGVhbTsgSSBhbSByZXBsYWNlYWJsZSBpbiBkYWlseSB3b3JrLiIsIHNjb3JlOiA0IH0KICAgIF0KICB9LAogIHsKICAgIGRpbTogIkludGVncmF0aW9uIiwKICAgIGV5ZWJyb3c6ICJGb3VuZGF0aW9uIFNldmVuIMK3IEludGVncmF0aW9uIiwKICAgIHRleHQ6ICciSG93IHdlbGwgZG8geW91ciBpZGVudGl0eSwgb2ZmZXIsIGF1ZGllbmNlLCB2b2ljZSwgdmlzdWFsLCBhbmQgb3BlcmF0aW9ucyBhbGlnbiB3aXRoIGVhY2ggb3RoZXI/IicsCiAgICBudWRnZTogIk9mdGVuIGJ1c2luZXNzZXMgYnVpbGQgdGhlc2UgcGllY2VzIGF0IGRpZmZlcmVudCB0aW1lcyBmb3IgZGlmZmVyZW50IHJlYXNvbnMuIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZXkgbm93IHJlaW5mb3JjZSBlYWNoIG90aGVyIG9yIHB1bGwgaW4gZGlmZmVyZW50IGRpcmVjdGlvbnMuIiwKICAgIG9wdHM6IFsKICAgICAgeyBsYWJlbDogIlRoZXkgd2VyZSBidWlsdCBhdCBkaWZmZXJlbnQgdGltZXMgYW5kIGRvIG5vdCBhbGlnbiB3ZWxsLiIsIHNjb3JlOiAwIH0sCiAgICAgIHsgbGFiZWw6ICJTb21lIGFsaWdubWVudCwgYnV0IGEgbG90IG9mIGRpc3NvbmFuY2UgYmV0d2VlbiBwaWVjZXMuIiwgc2NvcmU6IDEgfSwKICAgICAgeyBsYWJlbDogIlNvbWUgcGllY2VzIGFsaWduIHdpdGggZWFjaCBvdGhlciwgb3RoZXJzIGRvIG5vdC4iLCBzY29yZTogMiB9LAogICAgICB7IGxhYmVsOiAiTW9zdCBwaWVjZXMgYWxpZ24gd2VsbDsgYSBmZXcgc21hbGwgZ2FwcyByZW1haW4uIiwgc2NvcmU6IDMgfSwKICAgICAgeyBsYWJlbDogIlllcyB+IGV2ZXJ5IGVsZW1lbnQgcmVpbmZvcmNlcyBldmVyeSBvdGhlciBlbGVtZW50LiIsIHNjb3JlOiA0IH0KICAgIF0KICB9Cl07CgovLyDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKLy8gICBSRUFESU5HIEJBTkRTICsgUk9VVElORwovLyDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKY29uc3QgQkFORFMgPSBbCiAgewogICAgbWluOiAwLCBtYXg6IDcsCiAgICBuYW1lOiAiTm90IFlldCBTZXQiLAogICAgbWV0ZXJQY3Q6IDE4LAogICAgaGVhZGxpbmU6ICJGb3VuZGF0aW9ucyA8ZW0+Tm90IFlldCBTZXQuPC9lbT4iLAogICAgYm9keTogWwogICAgICAiVGhpcyBpcyB0aGUgaG9uZXN0IHN0YXJ0aW5nIHBvaW50IGZvciBtb3N0IGZvdW5kZXJzIHdobyBoYXZlIGJ1aWx0IGEgYnVzaW5lc3MgYnkgc2hlZXIgd2lsbCBhbmQgaW5zdGluY3QgcmF0aGVyIHRoYW4gc3RydWN0dXJlLiBTbyB5b3UgaGF2ZSBqdXN0IGRvbmUgc29tZXRoaW5nIG1vc3Qgb2YgeW91ciBwZWVycyBoYXZlIG5vdDogeW91IGhhdmUgbmFtZWQgdGhlIGdhcC4gVGhhdCBpcyBub3QgYSBzbWFsbCBhY3QuIiwKICAgICAgIllvdXIgYnVzaW5lc3MgaXMgZnVsbCBvZiB2YWx1ZSwgZXhwZXJ0aXNlLCBhbmQgY3VzdG9tZXIgdHJ1c3QgYWxyZWFkeS4gTm9uZSBvZiB0aGF0IGlzIGluIHF1ZXN0aW9uLiBXaGF0IGlzIG1pc3NpbmcgaXMgdGhlIGRvY3VtZW50ZWQgZm91bmRhdGlvbmFsIGxheWVyIHRoYXQgbGV0cyB5b3VyIGJ1c2luZXNzIGJlIHJlcGVhdGVkLCBzY2FsZWQsIHRhdWdodCB0byBhIG5ldyB0ZWFtIG1lbWJlciwgb3IgZXh0ZW5kZWQgaW50byBuZXcgY2hhbm5lbHMgd2l0aG91dCBsb3Npbmcgd2hhdCBtYWtlcyBpdCB5b3Vycy4iLAogICAgICAiQnVpbGRpbmcgYW55IGdyb3d0aCBzdHJhdGVneSBvbiB0b3Agb2YgdGhlc2UgZm91bmRhdGlvbnMgYXMgdGhleSBzdGFuZCB0b2RheSBpcyBsaWtlIHBvdXJpbmcgY29uY3JldGUgb24gc2FuZC4gVGhlIHdvcmsgd2lsbCBub3QgaG9sZC4gVGhlIGhvbmVzdCBuZXh0IG1vdmUgaXMgdG8gYnVpbGQgdGhlIGZvdW5kYXRpb24gaXRzZWxmIGJlZm9yZSBhbnkgbmV3IGdyb3d0aCBzdHJhdGVneSwgbWFya2V0aW5nIHN5c3RlbSwgb3IgQUkgdG9vbCBpcyBhZGRlZC4iCiAgICBdLAogICAgaW52SGVhZGxpbmU6ICJCdWlsZCB0aGUgZm91bmRhdGlvbiwgPGVtPmZpcnN0LjwvZW0+IiwKICAgIGludkJvZHk6ICJZb3VyIGhpZ2hlc3QtbGV2ZXJhZ2UgbmV4dCBtb3ZlIGlzIHRoZSBTb3VyY2Ugb2YgVHJ1dGggYnVpbGQgfiB0aGUgZG9jdW1lbnRlZCBmb3VuZGF0aW9uYWwgbGF5ZXIgdGhhdCBnaXZlcyB5b3VyIGJ1c2luZXNzIGlkZW50aXR5LCB2b2ljZSwgdmlzdWFsIHN5c3RlbSwgYW5kIG9wZXJhdGlvbmFsIHN0cnVjdHVyZSBpbiBvbmUgY29oZXJlbnQgc2V0IG9mIGRvY3VtZW50cy4gVGhlIFNvdXJjZSBvZiBUcnV0aCBpcyB3aGF0IGV2ZXJ5IGZ1dHVyZSBncm93dGggbW92ZSBidWlsZHMgb24uIFJlYWQgYWJvdXQgaXQgbmV4dC4iLAogICAgcHJpbWFyeUFjdGlvbjogewogICAgICBsYWJlbDogIkNvbnRpbnVlIHRvIHlvdXIgV2F5c3RhdGlvbiDihpIiLAogICAgICB1cmw6ICIvYnJhbmRyZWFkaW5lc3Mtd2F5c3RhdGlvbiIsCiAgICAgIHR5cGU6ICJwcmltYXJ5IgogICAgfSwKICAgIHNlY29uZGFyeUFjdGlvbjogewogICAgICBsYWJlbDogIlRhbGsgV2l0aCBVcyBvbiBXaGF0c0FwcCIsCiAgICAgIHVybDogIndhIiwKICAgICAgdHlwZTogInNlY29uZGFyeSIKICAgIH0KICB9LAogIHsKICAgIG1pbjogOCwgbWF4OiAxNCwKICAgIG5hbWU6ICJGb3JtaW5nIiwKICAgIG1ldGVyUGN0OiA0MiwKICAgIGhlYWRsaW5lOiAiRm91bmRhdGlvbnMgPGVtPkZvcm1pbmcuPC9lbT4iLAogICAgYm9keTogWwogICAgICAiWW91IGhhdmUgc3RhcnRlZCBidWlsZGluZy4gU29tZSBmb3VuZGF0aW9ucyBhcmUgaW4gcGxhY2UsIHlvdXIgYXdhcmVuZXNzIGlzIHNoYXJwZXIgdGhhbiBtb3N0IGZvdW5kZXJzIGluIHlvdXIgbWFya2V0LCBhbmQgeW91IGFyZSBjbGVhcmx5IGFscmVhZHkgdGhpbmtpbmcgYWJvdXQgdGhpcyBjb252ZXJzYXRpb24uIFRoYXQgcHV0cyB5b3UgYWhlYWQgb2YgdGhlIGZvdW5kZXJzIHdobyBoYXZlIG5vdCB5ZXQgcmVhbGlzZWQgdGhlIGZvdW5kYXRpb25zIGV2ZW4gZXhpc3QuIiwKICAgICAgIlRoZSBnYXAgbm93IGlzIGNvbnNpc3RlbmN5IGFuZCBjb21wbGV0aW9uLiBTb21lIHBpZWNlcyBvZiB5b3VyIGZvdW5kYXRpb24gZXhpc3QsIG90aGVycyBhcmUgc2NhdHRlcmVkIGFjcm9zcyBkcml2ZXMgYW5kIGNvbnZlcnNhdGlvbnMsIGFuZCBzb21lIGhhdmUgbm90IGJlZW4gd3JpdHRlbiBkb3duIGF0IGFsbC4gVGhlIGN1cnJlbnQgc3RhdGUgd2lsbCBob2xkIGZvciB0aGUgc2l6ZSBhbmQgY29tcGxleGl0eSB5b3Ugb3BlcmF0ZSBhdCB0b2RheSwgYnV0IGl0IHdpbGwgc3RhcnQgdG8gY3JlYWsgd2hlbiB5b3Ugc2NhbGUsIGFkZCB0ZWFtLCBvciBleHBhbmQgaW50byBuZXcgY2hhbm5lbHMuIiwKICAgICAgIllvdXIgbmV4dCBtb3ZlIGlzIHRoZSBTb3VyY2Ugb2YgVHJ1dGggYnVpbGQgfiB0YWtpbmcgd2hhdCB5b3UgYWxyZWFkeSBoYXZlLCBpZGVudGlmeWluZyB3aGF0IGlzIG1pc3NpbmcsIGFuZCBjb25zb2xpZGF0aW5nIGV2ZXJ5dGhpbmcgaW50byBvbmUgY29oZXJlbnQgc2V0IG9mIGRvY3VtZW50cyB5b3VyIHdob2xlIGJ1c2luZXNzIGNhbiBhY3Qgb24uIFRoZSBtYXRlcmlhbHMgYXJlIHRoZXJlLiBUaGV5IG5lZWQgdG8gYmUgYnJvdWdodCBpbnRvIGZvcm0uIgogICAgXSwKICAgIGludkhlYWRsaW5lOiAiQ29uc29saWRhdGUgPGVtPndoYXQgeW91IGhhdmUuPC9lbT4iLAogICAgaW52Qm9keTogIllvdXIgaGlnaGVzdC1sZXZlcmFnZSBuZXh0IG1vdmUgaXMgdGhlIFNvdXJjZSBvZiBUcnV0aCBidWlsZCwgd2hpY2ggdGFrZXMgZXhpc3RpbmcgZnJhZ21lbnRzIGFuZCBidWlsZHMgdGhlbSBpbnRvIGEgY29oZXJlbnQgZm91bmRhdGlvbiB5b3VyIHRlYW0gY2FuIGFjdCBvbi4gWW91IG1heSBhbHNvIGJlbmVmaXQgZnJvbSBydW5uaW5nIFRoZSBIYW5kcmFpbHMgbmV4dCB0byBzZWUgc3BlY2lmaWNhbGx5IGhvdyBBSS1yZWFkeSB5b3VyIGN1cnJlbnQgc3RhdGUgaXMuIiwKICAgIHByaW1hcnlBY3Rpb246IHsKICAgICAgbGFiZWw6ICJDb250aW51ZSB0byB5b3VyIFdheXN0YXRpb24g4oaSIiwKICAgICAgdXJsOiAiL2JyYW5kcmVhZGluZXNzLXdheXN0YXRpb24iLAogICAgICB0eXBlOiAicHJpbWFyeSIKICAgIH0sCiAgICBzZWNvbmRhcnlBY3Rpb246IHsKICAgICAgbGFiZWw6ICJUcnkgVGhlIEhhbmRyYWlscyBOZXh0IiwKICAgICAgdXJsOiAiL2JyYW5kcmVhZGluZXNzLWhhbmRyYWlscyIsCiAgICAgIHR5cGU6ICJzZWNvbmRhcnkiCiAgICB9CiAgfSwKICB7CiAgICBtaW46IDE1LCBtYXg6IDIxLAogICAgbmFtZTogIkhvbGQiLAogICAgbWV0ZXJQY3Q6IDY4LAogICAgaGVhZGxpbmU6ICJGb3VuZGF0aW9ucyA8ZW0+SG9sZC48L2VtPiIsCiAgICBib2R5OiBbCiAgICAgICJZb3VyIGZvdW5kYXRpb25zIGhvbGQgd2VpZ2h0LiBUaGUgd29yayBpcyByZWFsLCB0aGUgc3RydWN0dXJlIGlzIG1vc3RseSBpbiBwbGFjZSwgYW5kIHRoZSBmb3VuZGF0aW9ucyBjYW4gc3VwcG9ydCB0aGUgbmV4dCBsYXllciBvZiBncm93dGggd2l0aG91dCBidWNrbGluZy4gWW91IGFyZSBvcGVyYXRpbmcgaW4gYSBwb3N0dXJlIG1vc3QgZm91bmRlcnMgYXNwaXJlIHRvIGJ1dCBuZXZlciByZWFjaC4iLAogICAgICAiV2hhdCBzaXRzIGFoZWFkIG5vdyBpcyBhbXBsaWZpY2F0aW9uIGFuZCByZWZpbmVtZW50LiBUaGUgZm91bmRhdGlvbnMgYXJlIG5vdCB0aGUgbGltaXRpbmcgZmFjdG9yIGFueW1vcmUuIFRoZSBxdWVzdGlvbiBpcyBob3cgdG8gbGV2ZXJhZ2UgdGhlbSB+IGZvciBncm93dGgsIGZvciBBSSByZWFkaW5lc3MsIGZvciB2aXNpYmlsaXR5LCBmb3IgdGhlIG5leHQgc3RhZ2Ugb2YgdGhlIGJ1c2luZXNzLiIsCiAgICAgICJZb3VyIG5leHQgbW92ZSBpcyB0byBjaGVjayBBSSByZWFkaW5lc3Mgc3BlY2lmaWNhbGx5IHRocm91Z2ggVGhlIEhhbmRyYWlscyBkaWFnbm9zdGljLCBhbmQgdGhlbiB0byBlbmdhZ2UgaW4gdGhlIGZ1bGwgQnJhbmQgUmVhZGluZyBjb252ZXJzYXRpb24gY29udmVyc2F0aW9uLiBUaGUgZm91bmRhdGlvbiB5b3UgaGF2ZSBidWlsdCBpcyB3aGF0IG1ha2VzIHRoYXQgY29udmVyc2F0aW9uIGFjdHVhbGx5IHByb2R1Y3RpdmUgcmF0aGVyIHRoYW4gdGhlb3JldGljYWwuIgogICAgXSwKICAgIGludkhlYWRsaW5lOiAiTW92ZSB0byA8ZW0+QUkgcmVhZGluZXNzLjwvZW0+IiwKICAgIGludkJvZHk6ICJZb3VyIGZvdW5kYXRpb25zIGhvbGQuIFRoZSBuZXh0IG1vdmUgaXMgdG8gY2hlY2sgQUkgcmVhZGluZXNzIHNwZWNpZmljYWxseSBhbmQgYm9vayB0aGUgQnJhbmQgUmVhZGluZyBjb252ZXJzYXRpb24gdG8gZGlzY3VzcyBsZXZlcmFnZSBhbmQgYW1wbGlmaWNhdGlvbiBhdCBzY2FsZS4iLAogICAgcHJpbWFyeUFjdGlvbjogewogICAgICBsYWJlbDogIlRha2UgVGhlIEhhbmRyYWlscyDihpIiLAogICAgICB1cmw6ICIvYnJhbmRyZWFkaW5lc3MtaGFuZHJhaWxzIiwKICAgICAgdHlwZTogInByaW1hcnkiCiAgICB9LAogICAgc2Vjb25kYXJ5QWN0aW9uOiB7CiAgICAgIGxhYmVsOiAiQ29udGludWUgdG8geW91ciBXYXlzdGF0aW9uIiwKICAgICAgdXJsOiAiL2JyYW5kcmVhZGluZXNzLXdheXN0YXRpb24iLAogICAgICB0eXBlOiAic2Vjb25kYXJ5IgogICAgfQogIH0sCiAgewogICAgbWluOiAyMiwgbWF4OiAyOCwKICAgIG5hbWU6ICJTb3ZlcmVpZ24iLAogICAgbWV0ZXJQY3Q6IDkyLAogICAgaGVhZGxpbmU6ICJGb3VuZGF0aW9ucyA8ZW0+U292ZXJlaWduLjwvZW0+IiwKICAgIGJvZHk6IFsKICAgICAgIllvdSBhcmUgb3BlcmF0aW5nIGluIGEgcG9zdHVyZSBtb3N0IGZvdW5kZXJzIGluIHlvdXIgbWFya2V0IGhhdmUgbm90IHlldCBpbWFnaW5lZC4gWW91ciBmb3VuZGF0aW9ucyBhcmUgYnVpbHQsIGludGVncmF0ZWQsIGNvbnNpc3RlbnQgYWNyb3NzIGV2ZXJ5IGRpbWVuc2lvbiwgYW5kIGNhcGFibGUgb2YgaG9sZGluZyBhbnkgZ3Jvd3RoIHN0cmF0ZWd5IG9yIEFJIGludGVncmF0aW9uIHlvdSBjaG9vc2UgdG8gYnVpbGQgb24gdG9wLiIsCiAgICAgICJBdCB0aGlzIGxldmVsLCB0aGUgZm91bmRhdGlvbmFsIGNvbnZlcnNhdGlvbiBpcyBvdmVyLiBUaGUgY29udmVyc2F0aW9uIGlzIG5vdyBhYm91dCBsZXZlcmFnZSwgYW1wbGlmaWNhdGlvbiwgYXV0aG9yaXR5LCBhbmQgY2F0ZWdvcnkgbGVhZGVyc2hpcC4gV2hlcmUgZG8gd2UgZGVwbG95IHdoYXQgeW91IGhhdmUgYWxyZWFkeSBidWlsdCB0byBjb21wb3VuZCB2aXNpYmlsaXR5LCBjaXRhdGlvbiwgcmV2ZW51ZSwgYW5kIGluZmx1ZW5jZSBvdmVyIHRoZSBuZXh0IHR3ZWx2ZSBtb250aHM/IiwKICAgICAgIllvdXIgbmV4dCBtb3ZlIGlzIHRoZSBmdWxsIEJyYW5kIFJlYWRpbmcgY29udmVyc2F0aW9uLCBjb25kdWN0ZWQgYXQgc3RyYXRlZ2ljIGRlcHRoLCBiZWNhdXNlIGF0IHlvdXIgbGV2ZWwgaXQgaXMgbGVzcyBhYm91dCBkaWFnbm9zaXMgYW5kIG1vcmUgYWJvdXQgaWRlbnRpZnlpbmcgdGhlIHR3byBvciB0aHJlZSBoaWdoZXN0LWxldmVyYWdlIG1vdmVzIHRoYXQgdHVybiB0aGUgYXNzZXQgeW91IGhhdmUgYWxyZWFkeSBidWlsdCBpbnRvIGEgY2F0ZWdvcnktZGVmaW5pbmcgcHJlc2VuY2UuIgogICAgXSwKICAgIGludkhlYWRsaW5lOiAiQm9vayB0aGUgPGVtPkJyYW5kIFJlYWRpbmcgY29udmVyc2F0aW9uLjwvZW0+IiwKICAgIGludkJvZHk6ICJBdCB5b3VyIGZvdW5kYXRpb24gbGV2ZWwsIHRoZSBuZXh0IGNvbnZlcnNhdGlvbiBpcyBzdHJhdGVnaWMgcmF0aGVyIHRoYW4gZGlhZ25vc3RpYy4gVGhlIEJyYW5kIFJlYWRpbmcgY29udmVyc2F0aW9uIHdhbGtzIHRoZSBsZXZlcmFnZSBsYXllciBvZiB5b3VyIGJ1c2luZXNzIGFuZCBpZGVudGlmaWVzIHRoZSB0d28gb3IgdGhyZWUgaGlnaGVzdC1pbXBhY3QgbW92ZXMgZm9yIHRoZSBuZXh0IHR3ZWx2ZSBtb250aHMuIiwKICAgIHByaW1hcnlBY3Rpb246IHsKICAgICAgbGFiZWw6ICJDb250aW51ZSB0byB5b3VyIFdheXN0YXRpb24g4oaSIiwKICAgICAgdXJsOiAiL2JyYW5kcmVhZGluZXNzLXdheXN0YXRpb24iLAogICAgICB0eXBlOiAicHJpbWFyeSIKICAgIH0sCiAgICBzZWNvbmRhcnlBY3Rpb246IHsKICAgICAgbGFiZWw6ICJUYWtlIFRoZSBIYW5kcmFpbHMiLAogICAgICB1cmw6ICIvYnJhbmRyZWFkaW5lc3MtaGFuZHJhaWxzIiwKICAgICAgdHlwZTogInNlY29uZGFyeSIKICAgIH0KICB9Cl07CgovLyDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKLy8gICBTVEFURSAmIENPUkUgRlVOQ1RJT05TCi8vIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkApsZXQgY3VycmVudFEgPSAwOwpsZXQgYW5zd2VycyA9IG5ldyBBcnJheShRVUVTVElPTlMubGVuZ3RoKS5maWxsKG51bGwpOwoKZnVuY3Rpb24gc2hvd1N0YWdlKGlkKSB7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN0YWdlJykuZm9yRWFjaChzID0+IHMuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTsKfQoKZnVuY3Rpb24gc3RhcnRBc3Nlc3NtZW50KCkgewogIGN1cnJlbnRRID0gMDsKICBhbnN3ZXJzID0gbmV3IEFycmF5KFFVRVNUSU9OUy5sZW5ndGgpLmZpbGwobnVsbCk7CiAgc2hvd1N0YWdlKCdzdGFnZS1hc3Nlc3MnKTsKICByZW5kZXJRdWVzdGlvbigpOwp9CgpmdW5jdGlvbiByZW5kZXJRdWVzdGlvbigpIHsKICBjb25zdCBxID0gUVVFU1RJT05TW2N1cnJlbnRRXTsKICBjb25zdCBwcm9nUGN0ID0gKGN1cnJlbnRRIC8gUVVFU1RJT05TLmxlbmd0aCkgKiAxMDA7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcm9nRGltJykudGV4dENvbnRlbnQgPSBxLmV5ZWJyb3c7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dOdW0nKS50ZXh0Q29udGVudCA9IGN1cnJlbnRRICsgMTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvZ0ZpbGwnKS5zdHlsZS53aWR0aCA9IHByb2dQY3QgKyAnJSc7CgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxRXllYnJvdycpLnRleHRDb250ZW50ID0gcS5leWVicm93OwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxVGV4dCcpLnRleHRDb250ZW50ID0gcS50ZXh0OwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdxTnVkZ2UnKS50ZXh0Q29udGVudCA9IHEubnVkZ2U7CgogIGNvbnN0IGJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcHRzQm94Jyk7CiAgYm94LmlubmVySFRNTCA9ICcnOwogIHEub3B0cy5mb3JFYWNoKChvcHQsIGlkeCkgPT4gewogICAgY29uc3QgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgICBidG4uY2xhc3NOYW1lID0gJ29wdCc7CiAgICBpZiAoYW5zd2Vyc1tjdXJyZW50UV0gPT09IGlkeCkgYnRuLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdGVkJyk7CiAgICBidG4udGV4dENvbnRlbnQgPSBvcHQubGFiZWw7CiAgICBidG4ub25jbGljayA9ICgpID0+IHNlbGVjdE9wdGlvbihpZHgpOwogICAgYm94LmFwcGVuZENoaWxkKGJ0bik7CiAgfSk7CgogIGNvbnN0IGJhY2tCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnRuQmFjaycpOwogIGlmIChjdXJyZW50USA9PT0gMCkgYmFja0J0bi5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTsKICBlbHNlIGJhY2tCdG4uY2xhc3NMaXN0LnJlbW92ZSgnaGlkZGVuJyk7Cn0KCmZ1bmN0aW9uIHNlbGVjdE9wdGlvbihpZHgpIHsKICBhbnN3ZXJzW2N1cnJlbnRRXSA9IGlkeDsKICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLm9wdCcpOwogIGJ1dHRvbnMuZm9yRWFjaCgoYiwgaSkgPT4gewogICAgaWYgKGkgPT09IGlkeCkgYi5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpOwogICAgZWxzZSBiLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7CiAgfSk7CiAgc2V0VGltZW91dCgoKSA9PiB7CiAgICBpZiAoY3VycmVudFEgPCBRVUVTVElPTlMubGVuZ3RoIC0gMSkgewogICAgICBjdXJyZW50USsrOwogICAgICByZW5kZXJRdWVzdGlvbigpOwogICAgfSBlbHNlIHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb2dGaWxsJykuc3R5bGUud2lkdGggPSAnMTAwJSc7CiAgICAgIHNldFRpbWVvdXQoc2hvd1JlYWRpbmcsIDMyMCk7CiAgICB9CiAgfSwgMzIwKTsKfQoKZnVuY3Rpb24gcHJldlF1ZXN0aW9uKCkgewogIGlmIChjdXJyZW50USA+IDApIHsKICAgIGN1cnJlbnRRLS07CiAgICByZW5kZXJRdWVzdGlvbigpOwogIH0KfQoKZnVuY3Rpb24gY2FsY3VsYXRlVG90YWwoKSB7CiAgbGV0IHRvdGFsID0gMDsKICBhbnN3ZXJzLmZvckVhY2goKGEsIGkpID0+IHsKICAgIGlmIChhICE9PSBudWxsKSB0b3RhbCArPSBRVUVTVElPTlNbaV0ub3B0c1thXS5zY29yZTsKICB9KTsKICByZXR1cm4gdG90YWw7Cn0KCmZ1bmN0aW9uIGdldEJhbmQoc2NvcmUpIHsKICByZXR1cm4gQkFORFMuZmluZChiID0+IHNjb3JlID49IGIubWluICYmIHNjb3JlIDw9IGIubWF4KTsKfQoKZnVuY3Rpb24gc2hvd1JlYWRpbmcoKSB7CiAgY29uc3QgdG90YWwgPSBjYWxjdWxhdGVUb3RhbCgpOwogIGNvbnN0IGJhbmQgPSBnZXRCYW5kKHRvdGFsKTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvdGFsU2NvcmUnKS50ZXh0Q29udGVudCA9IHRvdGFsOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYW5kTmFtZScpLnRleHRDb250ZW50ID0gYmFuZC5uYW1lOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtZXRlckZpbGwnKS5zdHlsZS53aWR0aCA9ICcwJSc7CgogIGNvbnN0IGJvZHlFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWFkaW5nQm9keScpOwogIGxldCBodG1sID0gJzxoMj4nICsgYmFuZC5oZWFkbGluZSArICc8L2gyPic7CiAgYmFuZC5ib2R5LmZvckVhY2gocCA9PiB7IGh0bWwgKz0gJzxwPicgKyBwICsgJzwvcD4nOyB9KTsKICBib2R5RWwuaW5uZXJIVE1MID0gaHRtbDsKCiAgLy8gRGltZW5zaW9uIGJyZWFrZG93bgogIGNvbnN0IGRpbVJvd3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGltUm93cycpOwogIGRpbVJvd3MuaW5uZXJIVE1MID0gJyc7CiAgUVVFU1RJT05TLmZvckVhY2goKHEsIGkpID0+IHsKICAgIGNvbnN0IHNjID0gYW5zd2Vyc1tpXSAhPT0gbnVsbCA/IHEub3B0c1thbnN3ZXJzW2ldXS5zY29yZSA6IDA7CiAgICBjb25zdCBwY3QgPSAoc2MgLyA0KSAqIDEwMDsKICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgcm93LmNsYXNzTmFtZSA9ICdkaW0tcm93JzsKICAgIHJvdy5pbm5lckhUTUwgPQogICAgICAnPHNwYW4gY2xhc3M9ImRpbS1uYW1lIj4nICsgcS5kaW0gKyAnPC9zcGFuPicgKwogICAgICAnPGRpdiBjbGFzcz0iZGltLWJhciI+PGRpdiBjbGFzcz0iZGltLWJhci1maWxsIiBzdHlsZT0id2lkdGg6JyArIHBjdCArICclIj48L2Rpdj48L2Rpdj4nICsKICAgICAgJzxzcGFuIGNsYXNzPSJkaW0tc2NvcmUiPicgKyBzYyArICcgLyA0PC9zcGFuPic7CiAgICBkaW1Sb3dzLmFwcGVuZENoaWxkKHJvdyk7CiAgfSk7CgogIC8vIEludml0YXRpb24KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW52SGVhZGxpbmUnKS5pbm5lckhUTUwgPSBiYW5kLmludkhlYWRsaW5lOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnZCb2R5JykudGV4dENvbnRlbnQgPSBiYW5kLmludkJvZHk7CgogIC8vIEJ1aWxkIGFjdGlvbiBidXR0b25zCiAgY29uc3QgYWN0aW9uc0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ludkFjdGlvbnMnKTsKICBhY3Rpb25zRWwuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHByaW1hcnkgPSBiYW5kLnByaW1hcnlBY3Rpb247CiAgY29uc3Qgc2Vjb25kYXJ5ID0gYmFuZC5zZWNvbmRhcnlBY3Rpb247CgogIC8vIFByaW1hcnkKICBjb25zdCBwcmltQnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwogIHByaW1CdG4uY2xhc3NOYW1lID0gJ2J0bi1pbnZpdGF0aW9uIGJ0bi1wcmltYXJ5LWFjdGlvbic7CiAgcHJpbUJ0bi50ZXh0Q29udGVudCA9IHByaW1hcnkubGFiZWw7CiAgaWYgKHByaW1hcnkudXJsID09PSAnd2EnKSB7CiAgICBjb25zdCB3YU1zZyA9ICdIZWxsbywgSSBqdXN0IHRvb2sgVGhlIEtleXN0b25lLCB0aGUgQnJhbmQgUmVhZGluZXNzIG1pcnJvci4gTXkgcmVhZGluZyB3YXMgJyArIGJhbmQubmFtZSArICcgKCcgKyB0b3RhbCArICcgb2YgMjgpLiBJIHdvdWxkIGxpa2UgdG8gdGFsayBhYm91dCBteSBCcmFuZCBSZWFkaW5nLic7CiAgICBwcmltQnRuLmhyZWYgPSAnaHR0cHM6Ly93YS5tZS8yNTY3NzYwMDAzODQ/dGV4dD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHdhTXNnKTsKICAgIHByaW1CdG4udGFyZ2V0ID0gJ19ibGFuayc7CiAgICBwcmltQnRuLnJlbCA9ICdub29wZW5lcic7CiAgfSBlbHNlIHsKICAgIHByaW1CdG4uaHJlZiA9IHByaW1hcnkudXJsOwogIH0KICBhY3Rpb25zRWwuYXBwZW5kQ2hpbGQocHJpbUJ0bik7CgogIC8vIFNlY29uZGFyeQogIGNvbnN0IHNlY0J0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKICBzZWNCdG4uY2xhc3NOYW1lID0gJ2J0bi1pbnZpdGF0aW9uIGJ0bi1zZWNvbmRhcnktYWN0aW9uJzsKICBzZWNCdG4udGV4dENvbnRlbnQgPSBzZWNvbmRhcnkubGFiZWw7CiAgaWYgKHNlY29uZGFyeS51cmwgPT09ICd3YScpIHsKICAgIGNvbnN0IHdhTXNnID0gJ0hlbGxvLCBJIGp1c3QgdG9vayBUaGUgS2V5c3RvbmUsIHRoZSBCcmFuZCBSZWFkaW5lc3MgbWlycm9yLiBNeSByZWFkaW5nIHdhcyAnICsgYmFuZC5uYW1lICsgJyAoJyArIHRvdGFsICsgJyBvZiAyOCkuIEkgd291bGQgbGlrZSB0byB0YWxrIGFib3V0IG15IEJyYW5kIFJlYWRpbmcuJzsKICAgIHNlY0J0bi5ocmVmID0gJ2h0dHBzOi8vd2EubWUvMjU2Nzc2MDAwMzg0P3RleHQ9JyArIGVuY29kZVVSSUNvbXBvbmVudCh3YU1zZyk7CiAgICBzZWNCdG4udGFyZ2V0ID0gJ19ibGFuayc7CiAgICBzZWNCdG4ucmVsID0gJ25vb3BlbmVyJzsKICB9IGVsc2UgewogICAgc2VjQnRuLmhyZWYgPSBzZWNvbmRhcnkudXJsOwogIH0KICBhY3Rpb25zRWwuYXBwZW5kQ2hpbGQoc2VjQnRuKTsKCiAgc2hvd1N0YWdlKCdzdGFnZS1yZWFkaW5nJyk7CgogIHNldFRpbWVvdXQoKCkgPT4gewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21ldGVyRmlsbCcpLnN0eWxlLndpZHRoID0gYmFuZC5tZXRlclBjdCArICclJzsKICB9LCAyNTApOwp9CgpmdW5jdGlvbiByZXNldEFzc2Vzc21lbnQoKSB7CiAgc2hvd1N0YWdlKCdzdGFnZS13ZWxjb21lJyk7CiAgY3VycmVudFEgPSAwOwogIGFuc3dlcnMgPSBuZXcgQXJyYXkoUVVFU1RJT05TLmxlbmd0aCkuZmlsbChudWxsKTsKfQo8L3NjcmlwdD4KCjwvYm9keT4KPC9odG1sPg==","embed":""}
◆The Meridian Africa
← The Archway
The Keystone · Business Foundations Diagnostic
Before any growth strategy,
seven foundations.
Before any AI conversation, any marketing system, any growth strategy, any new investment, there are seven foundations that decide whether anything you build will hold. The Keystone names them, one by one, and shows you which ones are load-bearing in your business right now and which ones need to be poured deeper before you can build on them safely.
Two Minutes
Seven Questions
Free
No Email Required
Our Promise
No score-shaming. No fear-close. No countdown timer. The Keystone gives you a real reading of which foundations hold today and which need attention, in language you can act on this week. The reading is for you. What you do with it is your call.
Sister Diagnostic
If you have already answered the foundations question and want to look at AI readiness specifically, try The Handrails instead. Both mirrors stand together at the Archway.
Foundation One · Identity
Question 1 of 7
Your Reading
Foundations
Score · 0 of 28
Not Yet Set
Forming
Hold
Sovereign
Foundation-by-Foundation Breakdown
Your Next Move
Where to go from here.
Choose your door · Take your time