Name: series-workflowmvqj2 Phase: Succeeded StartedAt: 2026-08-06 21:15:09 +0000 UTC FinishedAt: 2026-08-07 01:01:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[0] Phase: Succeeded StartedAt: 2026-08-06 21:15:09 +0000 UTC FinishedAt: 2026-08-06 21:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 21:15:09 +0000 UTC FinishedAt: 2026-08-06 21:20:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d839570765118029aa8bf4a95444c6a11aacf85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d839570765118029aa8bf4a95444c6a11aacf85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e" }, "track": "KASAN", "fuzz": { "focus": [ "io_uring" ], "focus_symbols": [ "io_create_region", "io_free_region", "io_register_pbuf_ring", "io_register_zcrx", "io_uring_setup", "io_uring_register", "io_uring_mmap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fY3JlYXRlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19mcmVlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpb191cmluZ19tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyM2FhNzJmODBlMzA1NjFiYTUyZmZiZjc3ZmNlMDU0ODNhODczMWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE2OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL21lbW1hcC5jIGIvaW9fdXJpbmcvbWVtbWFwLmNcbmluZGV4IDIzZThhODUxMTFiY2EuLjQ4YzBlYjAxMjQxMjMgMTAwNjQ0XG4tLS0gYS9pb191cmluZy9tZW1tYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvbWVtbWFwLmNcbkBAIC0xNiw4ICYjNDM7MTYsMTAgQEBcbiAjaW5jbHVkZSBcJiMzNDt6Y3J4LmhcJiMzNDtcbiBcbiBzdGF0aWMgYm9vbCBpb19tZW1fYWxsb2NfY29tcG91bmQoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yX3BhZ2VzLFxuLVx0XHRcdFx0ICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKVxuJiM0MztcdFx0XHRcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcCxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcbiB7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBucl9jb21wb3VuZCwgZXh0cmE7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcdGludCBpLCBvcmRlcjtcbiBcbkBAIC0yNyw5ICYjNDM7MjksMjIgQEAgc3RhdGljIGJvb2wgaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9wYWdlcyxcbiBcdGVsc2UgaWYgKG9yZGVyKVxuIFx0XHRnZnAgfD0gX19HRlBfQ09NUDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGdldF9vcmRlcigpIHJvdW5kcyBhIG5vbiBwb3dlciBvZiB0d28gc2l6ZSB1cCwgc28gdGhlIGFsbG9jYXRpb25cbiYjNDM7XHQgKiBjYW4gaG9sZCBtb3JlIHBhZ2VzIHRoYW4gdGhlIHJlZ2lvbiBleHBvc2VzLiBBY2NvdW50IHRob3NlIHRvbyxcbiYjNDM7XHQgKiBhbmQgbGVhdmUgdGhlIGNvbXBvdW5kIGFsbG9jYXRpb24gYWxvbmUgaWYgdGhleSBkbyBub3QgZml0LlxuJiM0MztcdCAqL1xuJiM0MztcdG5yX2NvbXBvdW5kID0gMVVMIFx1MDAzY1x1MDAzYyBvcmRlcjtcbiYjNDM7XHRleHRyYSA9IG5yX2NvbXBvdW5kIC0gbnJfcGFnZXM7XG4mIzQzO1x0aWYgKGV4dHJhIFx1MDAyNlx1MDAyNiB1c2VyIFx1MDAyNlx1MDAyNiBfX2lvX2FjY291bnRfbWVtKHVzZXIsIGV4dHJhKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4gXHRwYWdlID0gYWxsb2NfcGFnZXMoZ2ZwLCBvcmRlcik7XG4tXHRpZiAoIXBhZ2UpXG4mIzQzO1x0aWYgKCFwYWdlKSB7XG4mIzQzO1x0XHRpZiAoZXh0cmEgXHUwMDI2XHUwMDI2IHVzZXIpXG4mIzQzO1x0XHRcdF9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBleHRyYSk7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9wYWdlczsgaSYjNDM7JiM0MzspXG4gXHRcdHBhZ2VzW2ldID0gcGFnZSAmIzQzOyBpO1xuQEAgLTEwNSw4ICYjNDM7MTIwLDE1IEBAIHZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpXG4gXHR9XG4gXHRpZiAoKG1yLVx1MDAzZWZsYWdzIFx1MDAyNiBJT19SRUdJT05fRl9WTUFQKSBcdTAwMjZcdTAwMjYgbXItXHUwMDNlcHRyKVxuIFx0XHR2dW5tYXAobXItXHUwMDNlcHRyKTtcbi1cdGlmIChtci1cdTAwM2Vucl9wYWdlcyBcdTAwMjZcdTAwMjYgdXNlcilcbi1cdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG1yLVx1MDAzZW5yX3BhZ2VzKTtcbiYjNDM7XHRpZiAobXItXHUwMDNlbnJfcGFnZXMgXHUwMDI2XHUwMDI2IHVzZXIpIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgbnJfYWNjb3VudGVkID0gbXItXHUwMDNlbnJfcGFnZXM7XG4mIzQzO1xuJiM0MztcdFx0LyogYSBjb21wb3VuZCByZWdpb24gd2FzIGFjY291bnRlZCBmb3IgdGhlIHdob2xlIGFsbG9jYXRpb24gKi9cbiYjNDM7XHRcdGlmIChtci1cdTAwM2VmbGFncyBcdTAwMjYgSU9fUkVHSU9OX0ZfU0lOR0xFX1JFRilcbiYjNDM7XHRcdFx0bnJfYWNjb3VudGVkID0gMVVMIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoaW9fcmVnaW9uX3NpemUobXIpKTtcbiYjNDM7XG4mIzQzO1x0XHRfX2lvX3VuYWNjb3VudF9tZW0odXNlciwgbnJfYWNjb3VudGVkKTtcbiYjNDM7XHR9XG4gXG4gXHRtZW1zZXQobXIsIDAsIHNpemVvZigqbXIpKTtcbiB9XG5AQCAtMTUxLDcgJiM0MzsxNzMsOCBAQCBzdGF0aWMgaW50IGlvX3JlZ2lvbl9waW5fcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxuIFxuIHN0YXRpYyBpbnQgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZyxcbi1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1tYXBfb2Zmc2V0KVxuJiM0MztcdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1tYXBfb2Zmc2V0LFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpXG4ge1xuIFx0Z2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyB8IF9fR0ZQX05PV0FSTjtcbiBcdHNpemVfdCBzaXplID0gaW9fcmVnaW9uX3NpemUobXIpO1xuQEAgLTE2Miw3ICYjNDM7MTg1LDcgQEAgc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxuIFx0aWYgKCFwYWdlcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRpZiAoaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHBhZ2VzLCBtci1cdTAwM2Vucl9wYWdlcywgc2l6ZSwgZ2ZwKSkge1xuJiM0MztcdGlmIChpb19tZW1fYWxsb2NfY29tcG91bmQocGFnZXMsIG1yLVx1MDAzZW5yX3BhZ2VzLCBzaXplLCBnZnAsIHVzZXIpKSB7XG4gXHRcdG1yLVx1MDAzZWZsYWdzIHw9IElPX1JFR0lPTl9GX1NJTkdMRV9SRUY7XG4gXHRcdGdvdG8gZG9uZTtcbiBcdH1cbkBAIC0yMTcsNyAmIzQzOzI0MCw3IEBAIGludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXHRpZiAocmVnLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfTUVNX1JFR0lPTl9UWVBFX1VTRVIpXG4gXHRcdHJldCA9IGlvX3JlZ2lvbl9waW5fcGFnZXMobXIsIHJlZyk7XG4gXHRlbHNlXG4tXHRcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCk7XG4mIzQzO1x0XHRyZXQgPSBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMobXIsIHJlZywgbW1hcF9vZmZzZXQsIGN0eC1cdTAwM2V1c2VyKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fY3JlYXRlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19mcmVlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpb191cmluZ19tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUyM2FhNzJmODBlMzA1NjFiYTUyZmZiZjc3ZmNlMDU0ODNhODczMWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE2OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW9fdXJpbmcvbWVtbWFwLmMgYi9pb191cmluZy9tZW1tYXAuYwppbmRleCAyM2U4YTg1MTExYmNhLi40OGMwZWIwMTI0MTIzIDEwMDY0NAotLS0gYS9pb191cmluZy9tZW1tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy9tZW1tYXAuYwpAQCAtMTYsOCAmIzQzOzE2LDEwIEBACiAjaW5jbHVkZSAmIzM0O3pjcnguaCYjMzQ7CiAKIHN0YXRpYyBib29sIGlvX21lbV9hbGxvY19jb21wb3VuZChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgbnJfcGFnZXMsCi0JCQkJICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKQomIzQzOwkJCQkgIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsCiYjNDM7CQkJCSAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKQogewomIzQzOwl1bnNpZ25lZCBsb25nIG5yX2NvbXBvdW5kLCBleHRyYTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAlpbnQgaSwgb3JkZXI7CiAKQEAgLTI3LDkgJiM0MzsyOSwyMiBAQCBzdGF0aWMgYm9vbCBpb19tZW1fYWxsb2NfY29tcG91bmQoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yX3BhZ2VzLAogCWVsc2UgaWYgKG9yZGVyKQogCQlnZnAgfD0gX19HRlBfQ09NUDsKIAomIzQzOwkvKgomIzQzOwkgKiBnZXRfb3JkZXIoKSByb3VuZHMgYSBub24gcG93ZXIgb2YgdHdvIHNpemUgdXAsIHNvIHRoZSBhbGxvY2F0aW9uCiYjNDM7CSAqIGNhbiBob2xkIG1vcmUgcGFnZXMgdGhhbiB0aGUgcmVnaW9uIGV4cG9zZXMuIEFjY291bnQgdGhvc2UgdG9vLAomIzQzOwkgKiBhbmQgbGVhdmUgdGhlIGNvbXBvdW5kIGFsbG9jYXRpb24gYWxvbmUgaWYgdGhleSBkbyBub3QgZml0LgomIzQzOwkgKi8KJiM0MzsJbnJfY29tcG91bmQgPSAxVUwgJmx0OyZsdDsgb3JkZXI7CiYjNDM7CWV4dHJhID0gbnJfY29tcG91bmQgLSBucl9wYWdlczsKJiM0MzsJaWYgKGV4dHJhICZhbXA7JmFtcDsgdXNlciAmYW1wOyZhbXA7IF9faW9fYWNjb3VudF9tZW0odXNlciwgZXh0cmEpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwogCXBhZ2UgPSBhbGxvY19wYWdlcyhnZnAsIG9yZGVyKTsKLQlpZiAoIXBhZ2UpCiYjNDM7CWlmICghcGFnZSkgewomIzQzOwkJaWYgKGV4dHJhICZhbXA7JmFtcDsgdXNlcikKJiM0MzsJCQlfX2lvX3VuYWNjb3VudF9tZW0odXNlciwgZXh0cmEpOwogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWZvciAoaSA9IDA7IGkgJmx0OyBucl9wYWdlczsgaSYjNDM7JiM0MzspCiAJCXBhZ2VzW2ldID0gcGFnZSAmIzQzOyBpOwpAQCAtMTA1LDggJiM0MzsxMjAsMTUgQEAgdm9pZCBpb19mcmVlX3JlZ2lvbihzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcikKIAl9CiAJaWYgKChtci0mZ3Q7ZmxhZ3MgJmFtcDsgSU9fUkVHSU9OX0ZfVk1BUCkgJmFtcDsmYW1wOyBtci0mZ3Q7cHRyKQogCQl2dW5tYXAobXItJmd0O3B0cik7Ci0JaWYgKG1yLSZndDtucl9wYWdlcyAmYW1wOyZhbXA7IHVzZXIpCi0JCV9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBtci0mZ3Q7bnJfcGFnZXMpOwomIzQzOwlpZiAobXItJmd0O25yX3BhZ2VzICZhbXA7JmFtcDsgdXNlcikgewomIzQzOwkJdW5zaWduZWQgbG9uZyBucl9hY2NvdW50ZWQgPSBtci0mZ3Q7bnJfcGFnZXM7CiYjNDM7CiYjNDM7CQkvKiBhIGNvbXBvdW5kIHJlZ2lvbiB3YXMgYWNjb3VudGVkIGZvciB0aGUgd2hvbGUgYWxsb2NhdGlvbiAqLwomIzQzOwkJaWYgKG1yLSZndDtmbGFncyAmYW1wOyBJT19SRUdJT05fRl9TSU5HTEVfUkVGKQomIzQzOwkJCW5yX2FjY291bnRlZCA9IDFVTCAmbHQ7Jmx0OyBnZXRfb3JkZXIoaW9fcmVnaW9uX3NpemUobXIpKTsKJiM0MzsKJiM0MzsJCV9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBucl9hY2NvdW50ZWQpOwomIzQzOwl9CiAKIAltZW1zZXQobXIsIDAsIHNpemVvZigqbXIpKTsKIH0KQEAgLTE1MSw3ICYjNDM7MTczLDggQEAgc3RhdGljIGludCBpb19yZWdpb25fcGluX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptciwKIAogc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLAogCQkJCSAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZywKLQkJCQkgICAgdW5zaWduZWQgbG9uZyBtbWFwX29mZnNldCkKJiM0MzsJCQkJICAgIHVuc2lnbmVkIGxvbmcgbW1hcF9vZmZzZXQsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpCiB7CiAJZ2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyB8IF9fR0ZQX05PV0FSTjsKIAlzaXplX3Qgc2l6ZSA9IGlvX3JlZ2lvbl9zaXplKG1yKTsKQEAgLTE2Miw3ICYjNDM7MTg1LDcgQEAgc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLAogCWlmICghcGFnZXMpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JaWYgKGlvX21lbV9hbGxvY19jb21wb3VuZChwYWdlcywgbXItJmd0O25yX3BhZ2VzLCBzaXplLCBnZnApKSB7CiYjNDM7CWlmIChpb19tZW1fYWxsb2NfY29tcG91bmQocGFnZXMsIG1yLSZndDtucl9wYWdlcywgc2l6ZSwgZ2ZwLCB1c2VyKSkgewogCQltci0mZ3Q7ZmxhZ3MgfD0gSU9fUkVHSU9OX0ZfU0lOR0xFX1JFRjsKIAkJZ290byBkb25lOwogCX0KQEAgLTIxNyw3ICYjNDM7MjQwLDcgQEAgaW50IGlvX2NyZWF0ZV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptciwKIAlpZiAocmVnLSZndDtmbGFncyAmYW1wOyBJT1JJTkdfTUVNX1JFR0lPTl9UWVBFX1VTRVIpCiAJCXJldCA9IGlvX3JlZ2lvbl9waW5fcGFnZXMobXIsIHJlZyk7CiAJZWxzZQotCQlyZXQgPSBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMobXIsIHJlZywgbW1hcF9vZmZzZXQpOwomIzQzOwkJcmV0ID0gaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKG1yLCByZWcsIG1tYXBfb2Zmc2V0LCBjdHgtJmd0O3VzZXIpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Kippb191cmluZyBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCBSZXZpZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGlvX3VyaW5nL21lbW1hcC5jYCBwYXRjaC4gSXQgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2UsIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCBtZW1vcnkgYWNjb3VudGluZyBkdXJpbmcgaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgYGlvX21lbV9hbGxvY19jb21wb3VuZGAgdG8gYWNjZXB0IGEgYHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcmAgYW5kIGNvcnJlY3RseSBhY2NvdW50cyBmb3IgdGhlIHBhZ2Ugb3ZlcmhlYWQgaW50cm9kdWNlZCBieSBgZ2V0X29yZGVyKClgIHJvdW5kaW5nLiBUaGVuLCB0aGUgY29ycmVzcG9uZGluZyBhZGp1c3RtZW50IGlzIG1hZGUgaW4gYGlvX2ZyZWVfcmVnaW9uYCB0byB1bi1hY2NvdW50IHRob3NlIGV4dHJhIHBhZ2VzLCBlbnN1cmluZyBwcm9wZXIgYWNjb3VudGluZy4gRmluYWxseSwgdGhlIHBhdGNoIHVwZGF0ZXMgYGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlc2AgdG8gcGFzcyB0aGUgdXNlciBjb250ZXh0IHRvIGBpb19tZW1fYWxsb2NfY29tcG91bmRgLgoKRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjaGFuZ2UgYWZmZWN0cyBob3cgaW9fdXJpbmcgbWFuYWdlcyBhbmQgYWNjb3VudHMgZm9yIG1lbW9yeSwgd2hpY2gsIGFzIHdlIGtub3csIGNhbiBiZSBhIGZlcnRpbGUgZ3JvdW5kIGZvciBidWdzIGFuZCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0byB2YWxpZGF0ZSB0aGVzZSBjaGFuZ2VzLgoKVG8gZ2V0IHN0YXJ0ZWQgd2l0aCBmdXp6aW5nLCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdGhpcyBjaGFuZ2UgdG91Y2hlcy4gYGlvX21lbV9hbGxvY19jb21wb3VuZGAgaXMgc3RhdGljLCBzbyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGUgZmlsZS4gQnV0IGJvdGggYGlvX2NyZWF0ZV9yZWdpb25gIGFuZCBgaW9fZnJlZV9yZWdpb25gIGFyZSBleHBvcnRlZCwgd2hpY2ggYXJlIG15IHBvaW50cyBvZiBlbnRyeS4gTm93LCBsZXQgbWUgcXVpY2tseSBzY2FuIGBpb191cmluZy9tZW1tYXAuY2AgaXRzZWxmIHRvIGNvbmZpcm0gdGhlc2Uga2V5IGZ1bmN0aW9ucyBhbmQgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX2NyZWF0ZV9yZWdpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvaW9fdXJpbmcuYz0yNzI2PXN0YXRpYyBfX2NvbGQgaW50IGlvX2FsbG9jYXRlX3NjcV91cmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzQ0LVx0fVxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyNzQ1Olx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFx1MDAyNmN0eC1cdTAwM2VyaW5nX3JlZ2lvbiwgXHUwMDI2cmQsIElPUklOR19PRkZfQ1FfUklORyk7XG5pb191cmluZy9pb191cmluZy5jLTI3NDYtXHRpZiAocmV0KVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjc1OC1cdH1cbmlvX3VyaW5nL2lvX3VyaW5nLmM6Mjc1OTpcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcdTAwMjZjdHgtXHUwMDNlc3FfcmVnaW9uLCBcdTAwMjZyZCwgSU9SSU5HX09GRl9TUUVTKTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjc2MC1cdGlmIChyZXQpIHtcbi0tXG5pb191cmluZy9rYnVmLmM9NjI5PWludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTY3Ny1cdH1cbmlvX3VyaW5nL2tidWYuYzo2Nzg6XHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXHUwMDI2YmwtXHUwMDNlcmVnaW9uLCBcdTAwMjZyZCwgbW1hcF9vZmZzZXQpO1xuaW9fdXJpbmcva2J1Zi5jLTY3OS1cdGlmIChyZXQpXG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9MTc0PXN0YXRpYyBpbnQgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcbi0tXG5pb191cmluZy9tZW1tYXAuYy0yMDYtXG5pb191cmluZy9tZW1tYXAuYzoyMDc6aW50IGlvX2NyZWF0ZV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcbmlvX3VyaW5nL21lbW1hcC5jLTIwOC1cdFx0ICAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZyxcbi0tXG5pb191cmluZy9tZW1tYXAuaD0yMD12b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKTtcbmlvX3VyaW5nL21lbW1hcC5oOjIxOmludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG5pb191cmluZy9tZW1tYXAuaC0yMi1cdFx0ICAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZyxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jPTQ5OD1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTUzMS1cdH1cbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NTMyOlx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFx1MDAyNm4ucmluZ19yZWdpb24sIFx1MDAyNnJkLCBJT1JJTkdfT0ZGX0NRX1JJTkcpO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYy01MzMtXHRpZiAocmV0KVxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNTYxLVx0fVxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo1NjI6XHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXHUwMDI2bi5zcV9yZWdpb24sIFx1MDAyNnJkLCBJT1JJTkdfT0ZGX1NRRVMpO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYy01NjMtXHRpZiAocmV0KSB7XG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03MDM9c3RhdGljIGludCBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqdWFyZylcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTczMi1cbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzMzOlx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFx1MDAyNnJlZ2lvbiwgXHUwMDI2cmQsIElPUklOR19NQVBfT0ZGX1BBUkFNX1JFR0lPTik7XG5pb191cmluZy9yZWdpc3Rlci5jLTczNC1cdGlmIChyZXQpXG4tLVxuaW9fdXJpbmcvemNyeC5jPTM4MD1zdGF0aWMgaW50IGlvX2FsbG9jYXRlX3JidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy96Y3J4LmMtMzk5LVxuaW9fdXJpbmcvemNyeC5jOjQwMDpcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcdTAwMjZpZnEtXHUwMDNlcnFfcmVnaW9uLCByZCwgbW1hcF9vZmZzZXQpO1xuaW9fdXJpbmcvemNyeC5jLTQwMS1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgaW9fdXJpbmcgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYGlvX2NyZWF0ZV9yZWdpb25gIGFuZCBgaW9fZnJlZV9yZWdpb25gLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoZXkmIzM5O3JlIGludGVncmFsIHRvIHRoZSBtZW1vcnkgbWFwcGluZyB3aXRoaW4gaW9fdXJpbmcuIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhleSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gSSYjMzk7bSBzZWVpbmcgYSBidW5jaCBvZiBvdGhlciBrZXkgZnVuY3Rpb25zIOKAkyBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYGlvX2FsbG9jYXRlX3JidWZfcmluZ2AsIGFuZCBldmVuIGBpb19hbGxvY2F0ZV9zY3FfdXJpbmdzYCDigJMgYWxsIHJlbHkgb24gYGlvX2NyZWF0ZV9yZWdpb25gLiBUaGF04oCZcyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaXRzIGNlbnRyYWwgcm9sZSBpbiByZXNvdXJjZSBhbGxvY2F0aW9uLgoKR2l2ZW4gdGhlIGltcG9ydGFuY2Ugb2YgdGhlc2UgbWVtb3J5IHJlZ2lvbiBmdW5jdGlvbnMgaW4gaW9fdXJpbmcsIEkgdGhpbmsgaXQmIzM5O3MgYSBnb29kIGlkZWEgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIEtjb25maWcgc2V0dGluZ3MgdG8gbWFrZSBzdXJlIGlvX3VyaW5nIGlzIGFjdHVhbGx5IGVuYWJsZWQuIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlIHRoZSBmZWF0dXJlIGlzIGV2ZW4gcHJlc2VudCBpbiB0aGlzIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJT19VUklORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbml0L0tjb25maWc9MTkxMD1jb25maWcgQUlPXG4tLVxuaW5pdC9LY29uZmlnLTE5MTctXG5pbml0L0tjb25maWc6MTkxODpjb25maWcgSU9fVVJJTkdcbmluaXQvS2NvbmZpZy0xOTE5LVx0Ym9vbCBcJiMzNDtFbmFibGUgSU8gdXJpbmcgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5pbml0L0tjb25maWc9MTkyNz1jb25maWcgR0NPVl9QUk9GSUxFX1VSSU5HXG4tLVxuaW5pdC9LY29uZmlnLTE5MzktXG5pbml0L0tjb25maWc6MTk0MDpjb25maWcgSU9fVVJJTkdfTU9DS19GSUxFXG5pbml0L0tjb25maWctMTk0MS1cdHRyaXN0YXRlIFwmIzM0O0VuYWJsZSBpb191cmluZyBtb2NrIGZpbGVzIChFeHBlcmltZW50YWwpXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmlvX3VyaW5nL0tjb25maWctNS1cbmlvX3VyaW5nL0tjb25maWc6Njpjb25maWcgSU9fVVJJTkdfWkNSWFxuaW9fdXJpbmcvS2NvbmZpZy03LVx0ZGVmX2Jvb2wgeVxuLS1cbmlvX3VyaW5nL0tjb25maWctMTItXG5pb191cmluZy9LY29uZmlnOjEzOmNvbmZpZyBJT19VUklOR19CUEZcbmlvX3VyaW5nL0tjb25maWctMTQtXHRkZWZfYm9vbCB5XG4tLVxuaW9fdXJpbmcvS2NvbmZpZy0xNy1cbmlvX3VyaW5nL0tjb25maWc6MTg6Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcbmlvX3VyaW5nL0tjb25maWctMTktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKklPX1VSSU5HIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCBEZWVwIERpdmUqKgoKUmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgc2V0IHRvIGBJT19VUklOR2AsIHRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBnb2VzIHRvIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyBpb191cmluZyBpbnRlcmFjdHMgd2l0aCBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQmIzM5O3MgaGFuZGxlZCBpbiBgaW9fdXJpbmcvbWVtbWFwLmNgLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgY3J1Y2lhbCBmdW5jdGlvbnM6IGBpb19jcmVhdGVfcmVnaW9uYCBhbmQgYGlvX2ZyZWVfcmVnaW9uYC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGVzdGFibGlzaCBhbmQgcmVsZWFzZSBtZW1vcnkgcmVnaW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaW9fdXJpbmcsIGFuZCBJJiMzOTttIGtlZW4gdG8gZXhhbWluZSB0aGUgc3BlY2lmaWNzIG9mIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIG9yIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGVtcGxveWVkIGZvciBzYWZlIGFjY2Vzcy4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgY29kZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIGF0IHRoYXQgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fZnJlZV9yZWdpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvaW9fdXJpbmcuYz0yMDc4PXN0YXRpYyB2b2lkIGlvX3JpbmdzX2ZyZWUoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG5pb191cmluZy9pb191cmluZy5jLTIwNzkte1xuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMDgwOlx0aW9fZnJlZV9yZWdpb24oY3R4LVx1MDAzZXVzZXIsIFx1MDAyNmN0eC1cdTAwM2VzcV9yZWdpb24pO1xuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMDgxOlx0aW9fZnJlZV9yZWdpb24oY3R4LVx1MDAzZXVzZXIsIFx1MDAyNmN0eC1cdTAwM2VyaW5nX3JlZ2lvbik7XG5pb191cmluZy9pb191cmluZy5jLTIwODItXHRjdHgtXHUwMDNlcmluZ3MgPSBOVUxMO1xuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmM9MjE2Mz1zdGF0aWMgX19jb2xkIHZvaWQgaW9fcmluZ19jdHhfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbi0tXG5pb191cmluZy9pb191cmluZy5jLTIxNzUtXHRpb19kZXN0cm95X2J1ZmZlcnMoY3R4KTtcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjE3NjpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZjdHgtXHUwMDNlcGFyYW1fcmVnaW9uKTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE3Ny1cdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNldXJpbmdfbG9jayk7XG4tLVxuaW9fdXJpbmcva2J1Zi5jPTQ1OD1zdGF0aWMgdm9pZCBpb19wdXRfYmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19idWZmZXJfbGlzdCAqYmwpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTQ2MC1cdGlmIChibC1cdTAwM2VmbGFncyBcdTAwMjYgSU9CTF9CVUZfUklORylcbmlvX3VyaW5nL2tidWYuYzo0NjE6XHRcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZibC1cdTAwM2VyZWdpb24pO1xuaW9fdXJpbmcva2J1Zi5jLTQ2Mi1cdGVsc2Vcbi0tXG5pb191cmluZy9rYnVmLmM9NjI5PWludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTcxMC1mYWlsOlxuaW9fdXJpbmcva2J1Zi5jOjcxMTpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZibC1cdTAwM2VyZWdpb24pO1xuaW9fdXJpbmcva2J1Zi5jLTcxMi1cdGtmcmVlKGJsKTtcbi0tXG5pb191cmluZy9tZW1tYXAuYz05Nz1lbnVtIHtcbi0tXG5pb191cmluZy9tZW1tYXAuYy0xMDUtXG5pb191cmluZy9tZW1tYXAuYzoxMDY6dm9pZCBpb19mcmVlX3JlZ2lvbihzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcilcbmlvX3VyaW5nL21lbW1hcC5jLTEwNy17XG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9MjA3PWludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4tLVxuaW9fdXJpbmcvbWVtbWFwLmMtMjUxLW91dF9mcmVlOlxuaW9fdXJpbmcvbWVtbWFwLmM6MjUyOlx0aW9fZnJlZV9yZWdpb24oY3R4LVx1MDAzZXVzZXIsIG1yKTtcbmlvX3VyaW5nL21lbW1hcC5jLTI1My1cdHJldHVybiByZXQ7XG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9NDExPWludCBpb191cmluZ19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pb191cmluZy9tZW1tYXAuYy00MjktXHQvKlxuaW9fdXJpbmcvbWVtbWFwLmM6NDMwOlx0ICogUGluIHRoZSBwYWdlcyBzbyBpb19mcmVlX3JlZ2lvbigpJiMzOTtzIHJlbGVhc2VfcGFnZXMoKSBkb2VzIG5vdFxuaW9fdXJpbmcvbWVtbWFwLmMtNDMxLVx0ICogZHJvcCB0aGUgbGFzdCByZWZlcmVuY2Ugd2hpbGUgdGhpcyBWTUEgZXhpc3RzLiBkZWxldGVfdm1hKClcbi0tXG5pb191cmluZy9tZW1tYXAuaD0xOD1pbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xuaW9fdXJpbmcvbWVtbWFwLmgtMTktXG5pb191cmluZy9tZW1tYXAuaDoyMDp2b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKTtcbmlvX3VyaW5nL21lbW1hcC5oLTIxLWludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz00ODA9c3RhdGljIHZvaWQgaW9fcmVnaXN0ZXJfZnJlZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTQ4Mi17XG5pb191cmluZy9yZWdpc3Rlci5jOjQ4MzpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZyLVx1MDAzZXNxX3JlZ2lvbik7XG5pb191cmluZy9yZWdpc3Rlci5jOjQ4NDpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZyLVx1MDAzZXJpbmdfcmVnaW9uKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNDg1LX1cbi0tXG5pb191cmluZy9yZWdpc3Rlci5jPTcwMz1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX21lbV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICp1YXJnKVxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzM2LVx0aWYgKGNvcHlfdG9fdXNlcihyZF91cHRyLCBcdTAwMjZyZCwgc2l6ZW9mKHJkKSkpIHtcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzM3Olx0XHRpb19mcmVlX3JlZ2lvbihjdHgtXHUwMDNldXNlciwgXHUwMDI2cmVnaW9uKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzM4LVx0XHRyZXR1cm4gLUVGQVVMVDtcbi0tXG5pb191cmluZy96Y3J4LmM9NDEyPXN0YXRpYyB2b2lkIGlvX2ZyZWVfcmJ1Zl9yaW5nKHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxKVxuaW9fdXJpbmcvemNyeC5jLTQxMy17XG5pb191cmluZy96Y3J4LmM6NDE0Olx0aW9fZnJlZV9yZWdpb24oaWZxLVx1MDAzZXVzZXIsIFx1MDAyNmlmcS1cdTAwM2VycV9yZWdpb24pO1xuaW9fdXJpbmcvemNyeC5jLTQxNS1cdGlmcS1cdTAwM2VycS5yaW5nID0gSU9fVVJJTkdfUFRSX1BPSVNPTjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njk0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGlvX21lbV9hbGxvY19jb21wb3VuZGAgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBpbiBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYC4gVGhlIGNvcmUgcHJvYmxlbSBzZWVtcyB0byBiZSB0aGUgd2F5IHdlJiMzOTtyZSBhbGxvY2F0aW5nIHBhZ2VzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYGFsbG9jX3BhZ2VzKGdmcCwgb3JkZXIpYCBhbmQgdGhlbiBpbmNyZW1lbnRzIGBwYWdlc1tpXSA9IHBhZ2UgJiM0MzsgaWAuIFRoZSBzbmVha3kgaXNzdWUgaGVyZSBpcyBgZ2V0X29yZGVyKClgIOKAkyBpdCYjMzk7cyByb3VuZGluZyB1cCwgbWVhbmluZyB0aGUgYWxsb2NhdGlvbiBtaWdodCBiZSAqbGFyZ2VyKiB0aGFuIHdoYXQgdGhlIGV4cG9zZWQgcmVnaW9uIGFjdHVhbGx5IG5lZWRzLiBXZSYjMzk7cmUgZWZmZWN0aXZlbHkgcmVzZXJ2aW5nIG1vcmUgbWVtb3J5IHRoYW4gd2UmIzM5O3JlIHVzaW5nLCBhbmQgdGhhdCYjMzk7cyBub3QgaWRlYWwuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgY29ycmVjdGluZyB0aGlzIGJ5IHNvbWVob3cgYWNjb3VudGluZyBmb3IgdGhlc2UgJiMzNDtleHRyYSYjMzQ7IHBhZ2VzLCBwcmVzdW1hYmx5IGZyZWVpbmcgdGhlbSBjb3JyZWN0bHkgaW4gYGlvX2ZyZWVfcmVnaW9uYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZm9jdXMgc2hvdWxkIGJlOiBob3cgZG8gd2UgdHJhY2sgdGhlc2UgZXh0cmEgcGFnZXMsIGFuZCBob3cgYXJlIHdlIGVuc3VyaW5nIHRoZXkgZ2V0IHJlbGVhc2VkIHdoZW4gdGhlIHJlZ2lvbiBpcyBmcmVlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBpbnRlcmFjdCB0byBiZSBjZXJ0YWluLgoKTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIG9uIHRoZXNlIGZ1bmN0aW9uczogYGlvX2NyZWF0ZV9yZWdpb25gLCBgaW9fZnJlZV9yZWdpb25gLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYW5kIGBpb19hbGxvY2F0ZV9yYnVmX3JpbmdgLiBUaGUgZml4ICpzaG91bGQqIGJlIGlzb2xhdGVkIHRvIHRoZSByZWdpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMsIHdoaWNoIGlzIGdvb2QuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAgaXMgdXNlci1leHBvc2VkIGJlY2F1c2UgdGhhdCB3b3VsZCBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBmYXIgbW9yZSBhY2Nlc3NpYmxlLCBhbmQgdGh1cywgbW9yZSBkYW5nZXJvdXMuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCBpcywgdGhyb3VnaCBgaW9fdXJpbmdfcmVnaXN0ZXJgIHdpdGggdGhlIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgZmxhZy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SU9SSU5HX1JFR0lTVEVSX01FTV9SRUdJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDktXHRcdGJyZWFrO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYzo5NTA6XHRjYXNlIElPUklOR19SRUdJU1RFUl9NRU1fUkVHSU9OOlxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NTEtXHRcdHJldCA9IC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczOTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIG5vdGVzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgSS9PIFJpbmcgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIHNvIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgaXMgZGVmaW5pdGVseSBleHBvc2VkIOKAkyBnb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZC4gTm93LCBsZXQmIzM5O3Mgc2VlIGhvdyB0aGUgcmVnaXN0cmF0aW9uIG9mIHZhcmlvdXMgcmluZyBzdHJ1Y3R1cmVzIGlzIGhhbmRsZWQuIEkgc2VlIHRoYXQgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AgaXMgc3BlY2lmaWNhbGx5IGludm9rZWQgd2hlbiB0aGUgZmxhZyBgSU9SSU5HX1JFR0lTVEVSX1BCVUZfUklOR2AgaXMgc2V0LiBTaW1pbGFybHksIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGlzIGNvcnJlY3RseSBjYWxsZWQgd2l0aCBgSU9SSU5HX1JFR0lTVEVSX1JFU0laRV9SSU5HU2AuIFRoaXMgYWxsIGFsaWducyB3aXRoIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgcmVnaXN0ZXJpbmcgdGhvc2UgYnVmZmVyIGFuZCByZXNpemluZyByaW5nIGNvbXBvbmVudHMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmluZyBidWZmZXJzIHRoZW1zZWx2ZXMgYXJlIGFsbG9jYXRlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpb19hbGxvY2F0ZV9yYnVmX3JpbmdgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgb3ZlcmFsbCByZWdpc3RyYXRpb24gYW5kIGFsbG9jYXRpb24gc2NoZW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgcmVnaXN0cmF0aW9uIGNhbGxzLCBzbyBJIGNhbiBlbnN1cmUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHNvbGlkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX2FsbG9jYXRlX3JidWZfcmluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy96Y3J4LmM9MzczPXN0YXRpYyB2b2lkIGlvX2ZpbGxfemNyeF9vZmZzZXRzKHN0cnVjdCBpb191cmluZ196Y3J4X29mZnNldHMgKm9mZnNldHMpXG4tLVxuaW9fdXJpbmcvemNyeC5jLTM3OS1cbmlvX3VyaW5nL3pjcnguYzozODA6c3RhdGljIGludCBpb19hbGxvY2F0ZV9yYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmMtMzgxLVx0XHRcdFx0IHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuLS1cbmlvX3VyaW5nL3pjcnguYz04ODQ9aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTk2OS1cbmlvX3VyaW5nL3pjcnguYzo5NzA6XHRyZXQgPSBpb19hbGxvY2F0ZV9yYnVmX3JpbmcoY3R4LCBpZnEsIFx1MDAyNnJlZywgXHUwMDI2cmQsIGlkKTtcbmlvX3VyaW5nL3pjcnguYy05NzEtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTY1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSS9PIFJpbmcgWkNSWCBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIGJlaW5nIGNhbGxlZCB3aXRoIGBJT1JJTkdfUkVHSVNURVJfWkNSWGAuIFRoYXQmIzM5O3MgdGhlIGtleS4gVGhpcyBtZWFucyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBpbXBhY3Qgb2YgdGhlc2UgY2FsbHMgd2l0aGluIHRoZSBJL08gcmluZyBmcmFtZXdvcmsuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgLCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCwgb2YgY291cnNlLCB0aGUgdGFyZ2V0IGBpb19yZWdpc3Rlcl96Y3J4YCB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgpUaGUgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBJT19VUklOR2AsIHdoaWNoIGlzIHN0YW5kYXJkLgoKQnV0IEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZSBgSU9fVVJJTkdfWkNSWGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYWN0aXZlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgY2FsbC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuLi4gWWVzLCBmb3VuZCBpdC4gR29vZC4gTm93LCBpcyBpdCB1c2VyLWNvbmZpZ3VyYWJsZT8gVGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgZGV0ZXJtaW5lIGhvdyB0aGlzIGZlYXR1cmUgaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHRvIHByb3ZpZGUgYSBtZWFuaW5nZnVsIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGlzIG1lYW5zIHRvIHRoZSB1c2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9fVVJJTkdfWkNSWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnLTUtXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcbmlvX3VyaW5nL0tjb25maWctNy1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJT19VUklORyBDb25maWd1cmF0aW9uIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIGBkZWZfYm9vbCB5YCBmb3IgYHlgIG1lYW5zIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCAtIGlmIGBJT19VUklOR2AgaXMgdXAsIGFuZCBpdHMgcHJlcmVxdWlzaXRlIGhhcmR3YXJlIGFuZCBzZXR0aW5ncyBhcmUgbWV0LCB0aGVuIGB5YCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQuIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIHBhcnNlIHRoZXJlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZ28gbG9vayBhdCBgaW9fdXJpbmcvS2NvbmZpZ2AuIEkgbmVlZCB0byBwcmVjaXNlbHkgZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPX1VSSU5HX1pDUlhgLiBXZSBjYW4mIzM5O3QgcmVseSBvbiBhc3N1bXB0aW9ucyBpbiB0aGlzIGdhbWUuIEkgbmVlZCB0byBrbm93IHRoZSBleGFjdCBidWlsZCBjb25maWd1cmF0aW9uIGltcGFjdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgc3BlbGxzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgaW9fdXJpbmcgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSU9fVVJJTkdfWkNSWFxuICAgNzpcdFx0ZGVmX2Jvb2wgeVxuICAgODpcdFx0ZGVwZW5kcyBvbiBJT19VUklOR1xuICAgOTpcdFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcbiAgMTA6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAxMTpcdFx0ZGVwZW5kcyBvbiBORVRfUlhfQlVTWV9QT0xMXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIElPX1VSSU5HX0JQRlxuICAxNDpcdFx0ZGVmX2Jvb2wgeVxuICAxNTpcdFx0ZGVwZW5kcyBvbiBCUEZcbiAgMTY6XHRcdGRlcGVuZHMgb24gTkVUXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcbiAgMTk6XHRcdGRlZl9ib29sIHlcbiAgMjA6XHRcdGRlcGVuZHMgb24gSU9fVVJJTkdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkxMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gZm9yIElPX1VSSU5HX1pDUlgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBJT19VUklOR19aQ1JYYCwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGZlYXR1cmUgaXMgaW50ZXJ0d2luZWQgd2l0aCBzZXZlcmFsIG90aGVyczogc3BlY2lmaWNhbGx5LCBgSU9fVVJJTkdgLCBgUEFHRV9QT09MYCwgYElORVRgLCBhbmQgYE5FVF9SWF9CVVNZX1BPTExgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgd2UgbmVlZCB0byBiZSByZWFsbHkgY2F1dGlvdXMgYWJvdXQgZGVwZW5kZW5jaWVzLiBUbyBiZSBhYnNvbHV0ZWx5IHNhZmUsIHdlIGNvdWxkIGluY2x1ZGUgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYCB3aXRoaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LCBidXQgaG9uZXN0bHksIGBJT19VUklOR2AgaXRzZWxmIGlzIHByb2JhYmx5IHRoZSBtb3N0IGNyaXRpY2FsIGRlcGVuZGVuY3ksIGFuZCBpcyBsaWtlbHkgdGhlIGNvcmUgZGVwZW5kZW5jeS4gSXQmIzM5O3MgdGhlIGJpZyBvbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgZG9uJiMzOTt0IHRyaXAgdXAgb24gYW55IHN1YnRsZSBkZXBlbmRlbmNpZXMuCgpSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyIGFuZCBsZXQmIzM5O3MgZ28gY2hlY2sgdGhlIG51YW5jZXMgb2YgYE5FVF9SWF9CVVNZX1BPTExgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1JYX0JVU1lfUE9MTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcbi0tXG5uZXQvS2NvbmZpZy0zNDktXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcbm5ldC9LY29uZmlnLTM1MS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM4MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ4Nz1jb25maWcgTkVUX0RFVkxJTktcbi0tXG5uZXQvS2NvbmZpZy00OTAtXG5uZXQvS2NvbmZpZzo0OTE6Y29uZmlnIFBBR0VfUE9PTFxubmV0L0tjb25maWctNDkyLVx0Ym9vbFxubmV0L0tjb25maWctNDkzLVxubmV0L0tjb25maWc6NDk0OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbm5ldC9LY29uZmlnLTQ5NS1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQ3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBORVRfUlhfQlVTWV9QT0xMYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgYm9vbGVhbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGJlaW5nIHNlbGVjdGVkIGJ5IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBub3QgZGlyZWN0bHkgcHJvbXB0ZWQgZm9yLiBUaGlzIG1lYW5zIHRoZWlyIHZhbHVlcyBhcmUgYmVpbmcgZGV0ZXJtaW5lZCBpbmRpcmVjdGx5LCBwcm9iYWJseSBieSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgc2V0dGluZ3MuIE15IGZvY3VzIG5vdyBpcyBvbiBmaWd1cmluZyBvdXQgKndoYXQqIGV4YWN0bHkgaXMgZHJpdmluZyB0aGUgc2VsZWN0aW9uIG9mIGBORVRfUlhfQlVTWV9QT0xMYC4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIG9mIHRoZXNlIGtpbmRzIG9mIGZsYWdzIGlzIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgYW5kIGZvciBvcHRpbWl6aW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGNoYWluIHRoYXQgbGVhZHMgdG8gdGhpcyBzZXR0aW5nIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoaXMgd2lsbCBnaXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdpZGVyIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX1JYX0JVU1lfUE9MTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjczCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgUlggQnVzeSBQb2xsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgbmV0d29yayByZWNlaXZlIGJ1c3kgcG9sbGluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBob3cgYE5FVF9SWF9CVVNZX1BPTExgIGlzIHVzZWQuIEluc3RlYWQgb2YgYSBnZW5lcmFsIHNlYXJjaCwgSSBuZWVkIHRvIGJlIHByZWNpc2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgYGdyZXBgIGluIHRoZSBgbmV0L2AgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgcmVsZXZhbnQgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gbG9va2luZyBmb3IgYWxsIGluc3RhbmNlcyBvZiBgTkVUX1JYX0JVU1lfUE9MTGAsIHRvIHNlZSB3aGVyZSBhbmQgaG93IGl0JiMzOTtzIGRlZmluZWQgYW5kIHV0aWxpemVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmsgc3RhY2suIFRoaXMgc2hvdWxkIHByb3ZpZGUgaW5zaWdodHMgaW50byB0aGUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBidXN5IHBvbGxpbmcgaXMgaW1wbGVtZW50ZWQsIGFuZCBpZGVhbGx5LCBzaGVkIGxpZ2h0IG9uIGFueSBzcGVjaWZpYyBkZXZpY2VzIG9yIGludGVyZmFjZXMgaXQmIzM5O3MgdGFyZ2V0aW5nLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIHF1aWNrZXIgdGhhbiBhIGJyb2FkIHNlYXJjaCwgbGVhZGluZyBtZSBzdHJhaWdodCB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGViYXNlLiBUaGVuIEkgY2FuIHN0YXJ0IHBpZWNpbmcgdG9nZXRoZXIgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9SWF9CVVNZX1BPTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM0Mj1jb25maWcgQ0dST1VQX05FVF9DTEFTU0lEXG4tLVxubmV0L0tjb25maWctMzQ5LVxubmV0L0tjb25maWc6MzUwOmNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXG5uZXQvS2NvbmZpZy0zNTEtXHRib29sXG4tLVxubmV0L2NvcmUvZGV2LmM9Njg1MT1zdGF0aWMgdm9pZCBza2JfZGVmZXJfZnJlZV9mbHVzaCh2b2lkKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTY4NzItXG5uZXQvY29yZS9kZXYuYzo2ODczOiNpZiBkZWZpbmVkKENPTkZJR19ORVRfUlhfQlVTWV9QT0xMKVxubmV0L2NvcmUvZGV2LmMtNjg3NC1cbi0tXG5uZXQvY29yZS9kZXYuYz03MDYxPXZvaWQgbmFwaV9yZXN1bWVfaXJxcyh1bnNpZ25lZCBpbnQgbmFwaV9pZClcbi0tXG5uZXQvY29yZS9kZXYuYy03MDgxLVxubmV0L2NvcmUvZGV2LmM6NzA4MjojZW5kaWYgLyogQ09ORklHX05FVF9SWF9CVVNZX1BPTEwgKi9cbm5ldC9jb3JlL2Rldi5jLTcwODMtXG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9OTg3OT1zdGF0aWMgdTMyIGJwZl9jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy0xMDA3MS1cdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IF9fc2tfYnVmZiwgbmFwaV9pZCk6XG5uZXQvY29yZS9maWx0ZXIuYzoxMDA3MjojaWYgZGVmaW5lZChDT05GSUdfTkVUX1JYX0JVU1lfUE9MTClcbm5ldC9jb3JlL2ZpbHRlci5jLTEwMDczLVx0XHQqaW5zbiYjNDM7JiM0MzsgPSBCUEZfTERYX01FTShCUEZfVywgc2ktXHUwMDNlZHN0X3JlZywgc2ktXHUwMDNlc3JjX3JlZyxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xNTU2PXN0YXRpYyB2b2lkIF9fY29weV9za2JfaGVhZGVyKHN0cnVjdCBza19idWZmICpuZXcsIGNvbnN0IHN0cnVjdCBza19idWZmICpvbGQpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTU4OS0jZW5kaWZcbm5ldC9jb3JlL3NrYnVmZi5jOjE1OTA6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvY29yZS9za2J1ZmYuYy0xNTkxLVx0Q0hFQ0tfU0tCX0ZJRUxEKG5hcGlfaWQpO1xuLS1cbm5ldC9jb3JlL3NvY2suYz0xMTk1PWludCBza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvY29yZS9zb2NrLmMtMTIzMy1cdFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcbm5ldC9jb3JlL3NvY2suYzoxMjM0OiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxubmV0L2NvcmUvc29jay5jLTEyMzUtXHRjYXNlIFNPX0JVU1lfUE9MTDpcbi0tXG5uZXQvY29yZS9zb2NrLmM9MTczMj1pbnQgc2tfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2NvcmUvc29jay5jLTIwNjYtXG5uZXQvY29yZS9zb2NrLmM6MjA2NzojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcbm5ldC9jb3JlL3NvY2suYy0yMDY4LVx0Y2FzZSBTT19CVVNZX1BPTEw6XG4tLVxubmV0L2NvcmUvc29jay5jLTIxMDQtXG5uZXQvY29yZS9zb2NrLmM6MjEwNTojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcbm5ldC9jb3JlL3NvY2suYy0yMTA2LVx0Y2FzZSBTT19JTkNPTUlOR19OQVBJX0lEOlxuLS1cbm5ldC9jb3JlL3NvY2suYz0zNzQ0PXZvaWQgc29ja19pbml0X2RhdGFfdWlkKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrICpzaywga3VpZF90IHVpZClcbi0tXG5uZXQvY29yZS9zb2NrLmMtMzc5My1cbm5ldC9jb3JlL3NvY2suYzozNzk0OiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxubmV0L2NvcmUvc29jay5jLTM3OTUtXHRzay1cdTAwM2Vza19uYXBpX2lkXHRcdD1cdDA7XG4tLVxubmV0L2NvcmUvc29jay5jPTQ0NjE9c3Vic3lzX2luaXRjYWxsKHByb3RvX2luaXQpO1xuLS1cbm5ldC9jb3JlL3NvY2suYy00NDY0LVxubmV0L2NvcmUvc29jay5jOjQ0NjU6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvY29yZS9zb2NrLmMtNDQ2Ni1ib29sIHNrX2J1c3lfbG9vcF9lbmQodm9pZCAqcCwgdW5zaWduZWQgbG9uZyBzdGFydF90aW1lKVxuLS1cbm5ldC9jb3JlL3NvY2suYz00NDc5PUVYUE9SVF9TWU1CT0woc2tfYnVzeV9sb29wX2VuZCk7XG5uZXQvY29yZS9zb2NrLmM6NDQ4MDojZW5kaWYgLyogQ09ORklHX05FVF9SWF9CVVNZX1BPTEwgKi9cbm5ldC9jb3JlL3NvY2suYy00NDgxLVxuLS1cbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jPTQzMD1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSBuZXRfY29yZV90YWJsZVtdID0ge1xuLS1cbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTU3MS0jZW5kaWYgLyogQ09ORklHX05FVF9GTE9XX0xJTUlUICovXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzo1NzI6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy01NzMtXHR7XG4tLVxubmV0L3NvY2tldC5jLTExNS1cbm5ldC9zb2NrZXQuYzoxMTY6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvc29ja2V0LmMtMTE3LXVuc2lnbmVkIGludCBzeXNjdGxfbmV0X2J1c3lfcmVhZCBfX3JlYWRfbW9zdGx5O1xuLS1cbm5ldC94ZHAveHNrLmM9MTMxNj1zdGF0aWMgYm9vbCB4c2tfbm9fd2FrZXVwKHN0cnVjdCBzb2NrICpzaylcbm5ldC94ZHAveHNrLmMtMTMxNy17XG5uZXQveGRwL3hzay5jOjEzMTg6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQveGRwL3hzay5jLTEzMTktXHQvKiBQcmVmZXIgYnVzeS1wb2xsaW5nLCBza2lwIHRoZSB3YWtldXAuICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjk4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9SWF9CVVNZX1BPTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcbi0tXG5uZXQvS2NvbmZpZy0zNDktXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcbm5ldC9LY29uZmlnLTM1MS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzOTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBgTkVUX1JYX0JVU1lfUE9MTGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGBORVRfUlhfQlVTWV9QT0xMYCBvcHRpb24sIGFuZCBpdCYjMzk7cyBwb3BwaW5nIHVwIGFnYWluLiBJdCYjMzk7cyB0aW1lIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGhvdyB0aGlzIGlzIGJlaW5nIHNlbGVjdGVkLiBXaGF0JiMzOTtzIHRoZSBkZWNpc2lvbiB0cmVlIGhlcmU/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbmZsdWVuY2luZyBpdHMgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbj8gSXMgaXQgdGllZCB0byBhIHNwZWNpZmljIG5ldHdvcmsgZHJpdmVyLCBvciBhIGJyb2FkZXIgYXJjaGl0ZWN0dXJhbCBjaG9pY2U/IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGxlYWRzIHRvIHRoaXMgc2V0dGluZyBiZWluZyBlbmFibGVkLiBUaGUgZ29hbCBpcyBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9SWF9CVVNZX1BPTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYSBDdXJpb3VzIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGBORVRfUlhfQlVTWV9QT0xMYCB0aGluZy4uLiBpdCYjMzk7cyBub3QgcHJvbXB0aW5nIG1lIGZvciBpbnB1dCwgYW5kIGl0JiMzOTtzIG5vdCBiZWluZyBzZWxlY3RlZCBieSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zPyBUaGF0JiMzOTtzIHVudXN1YWwuIFVzdWFsbHksIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBkZXBlbmRlbmN5IG9yIGNvbmRpdGlvbmFsIHNlbGVjdGlvbiBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBvcHRpb24gZXhpc3RzIGFuZCBob3cgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXNlZCwgZXZlbiBpZiBpdCYjMzk7cyBpbXBsaWNpdGx5IGVuYWJsZWQgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9LY29uZmlnYCBmaWxlIGFuZCBzdGFydCBhcm91bmQgbGluZSAzNTAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGF0IHNlY3Rpb24uIEhvcGVmdWxseSwgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcyB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNDU6XHRcdHNlbGVjdCBTT0NLX0NHUk9VUF9EQVRBXG4gMzQ2Olx0XHRoZWxwXG4gMzQ3Olx0XHQgIENncm91cCBzdWJzeXN0ZW0gZm9yIHVzZSBhcyBnZW5lcmFsIHB1cnBvc2Ugc29ja2V0IGNsYXNzaWQgbWFya2VyIHRoYXQgaXNcbiAzNDg6XHRcdCAgYmVpbmcgdXNlZCBpbiBjbHNfY2dyb3VwIGFuZCBmb3IgbmV0ZmlsdGVyIG1hdGNoaW5nLlxuIDM0OTpcdFxuIDM1MDpcdGNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXG4gMzUxOlx0XHRib29sXG4gMzUyOlx0XHRkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXHUwMDI2XHUwMDI2ICFORVRDT05TT0xFKVxuIDM1MzpcdFxuIDM1NDpcdGNvbmZpZyBCUUxcbiAzNTU6XHRcdGJvb2xcbiAzNTY6XHRcdHByb21wdCBcJiMzNDtFbmFibGUgQnl0ZSBRdWV1ZSBMaW1pdHNcJiMzNDtcbiAzNTc6XHRcdGRlcGVuZHMgb24gU1lTRlNcbiAzNTg6XHRcdHNlbGVjdCBEUUxcbiAzNTk6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA2MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVmYXVsdHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZGVmYXVsdCBzZXR0aW5nLiBUaGUgaW5pdGlhbCB0aG91Z2h0LCBgZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUICZhbXA7JmFtcDsgIU5FVENPTlNPTEUpYCwgZGlyZWN0bHkgdHJhbnNsYXRlcyB0byAmIzM0O2l0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdC4mIzM0OyBNYWtlcyBzZW5zZSwgaXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIGxvZ2ljLiBJZiBSZWFsLVRpbWUgUHJlZW1wdGlvbiBpc24mIzM5O3QgZW5hYmxlZCwgaXQgZGVmYXVsdHMgdG8gJiMzOTt5JiMzOTssICpvciogaWYgUmVhbC1UaW1lIFByZWVtcHRpb24gKmlzKiBlbmFibGVkLCBhbmQgKk5ldGNvbnNvbGUgaXMgbm90KiwgaXQgYWxzbyBkZWZhdWx0cyB0byAmIzM5O3kmIzM5Oy4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIHRoYXQgc2NlbmFyaW8uCgpOb3csIGEgbW9yZSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlczogV2hhdCBhYm91dCBgUEFHRV9QT09MYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGlzIGluaXRpYWwgZGVmYXVsdC4gV2hlcmUgZG9lcyBgUEFHRV9QT09MYCBmaXQgaW50byBhbGwgdGhpcz8gSXMgaXQgZGVwZW5kZW50IG9uIHRoaXMgZGVmYXVsdCwgb3IgaXMgdGhpcyB0aGUgYW50ZWNlZGVudCB0aGF0IGZlZWRzIGludG8gdGhlIGRldGVybWluYXRpb24gb2YgdGhlIGBQQUdFX1BPT0xgIG9wdGlvbj8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGludGVyZGVwZW5kZW5jaWVzLCBpdCYjMzk7cyB1c2UgY2FzZXMsIGFuZCBob3cgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24gbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBrZXJuZWwgY29uZmlndXJhdGlvbiwgZXNwZWNpYWxseSByZWdhcmRpbmcgcmVhbC10aW1lIGNvbnN0cmFpbnRzIGFuZCBuZXR3b3JrIGRlYnVnZ2luZy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBudWFuY2UgbGllcywgdW5kZXJzdGFuZGluZyBob3cgdGhlc2Ugc2VlbWluZ2x5IHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGludGVycmVsYXRlIGFuZCBpbmZsdWVuY2UgcGVyZm9ybWFuY2UgYW5kIHN5c3RlbSBzdGFiaWxpdHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ4NTpcdFx0ICB3aXRoIHRoZSBoZWxwIG9mIEJQRiBwcm9ncmFtcy5cbiA0ODY6XHRcbiA0ODc6XHRjb25maWcgTkVUX0RFVkxJTktcbiA0ODg6XHRcdGJvb2xcbiA0ODk6XHRcdGRlZmF1bHQgblxuIDQ5MDpcdFxuIDQ5MTpcdGNvbmZpZyBQQUdFX1BPT0xcbiA0OTI6XHRcdGJvb2xcbiA0OTM6XHRcbiA0OTQ6XHRjb25maWcgUEFHRV9QT09MX1NUQVRTXG4gNDk1Olx0XHRkZWZhdWx0IG5cbiA0OTY6XHRcdGJvb2wgXCYjMzQ7UGFnZSBwb29sIHN0YXRzXCYjMzQ7XG4gNDk3Olx0XHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxuIDQ5ODpcdFx0aGVscFxuIDQ5OTpcdFx0ICBFbmFibGUgcGFnZSBwb29sIHN0YXRpc3RpY3MgdG8gdHJhY2sgcGFnZSBhbGxvY2F0aW9uIGFuZCByZWN5Y2xpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1ODgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFBBR0VfUE9PTCBGbGFnKioKClJpZ2h0LCBzbyBgUEFHRV9QT09MYCBpcyBlc3NlbnRpYWxseSBhIGJvb2xlYW4gZmxhZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG1lY2hhbmlzbXMgaW4gdGhlIHN5c3RlbSBhcmUgbWFraW5nIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGlzIGZsYWcsIHdoaWNoIG1lYW5zIEkgaGF2ZSB0byBpZGVudGlmeSB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHJlc3VsdGluZyBiZWhhdmlvci4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nIGZvciBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBtYWNyb3MsIG9yIGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVmZXJlbmNlIGBQQUdFX1BPT0xgLiBVbmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciB3aWxsIGJlIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTQzNT1jb25maWcgVkVUSFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGV0aGVybmV0IHBhaXIgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQzNzpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNDM4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDctXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTQ0PWNvbmZpZyBYRU5fTkVUREVWX0ZST05URU5EXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0OS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODctXHRkZXBlbmRzIG9uIFBBR0VfU0laRV9MRVNTX1RIQU5fNjRLQlxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L0tjb25maWc6NjExOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTItXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnPTE4PWNvbmZpZyBORVRfQUlST0hBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjEtXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnPTE4PWNvbmZpZyBBTElCQUJBX0VFQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMS1cdGRlcGVuZHMgb24gNjRCSVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTcyPWNvbmZpZyBCQ01HRU5FVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODAtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjgxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04Mi1cdHNlbGVjdCBCUk9BRENPTV9QSFkgaWYgQVJDSF9CQ00yODM1XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxMy1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxNS1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1OD1jb25maWcgQk5HRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYxLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI2OT1jb25maWcgQkNNQVNQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzUtXHRzZWxlY3QgTURJT19CQ01fVU5JTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI3NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZz02PWNvbmZpZyBFTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctMTAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZz0xOT1jb25maWcgVFNORVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTIzLVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZzoyNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjM9Y29uZmlnIEZFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMxLVx0c2VsZWN0IEZJWEVEX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMy1cdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE4PWNvbmZpZyBHVkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6OTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTMtXHRzZWxlY3QgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1NDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc9Nj1jb25maWcgSElOSUMzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE0LVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjE1Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnPTQ9Y29uZmlnIExJQkVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O0NvbW1vbiBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc6NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjMtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY1Olx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTAtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM2LVx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIwLVx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjMtXHRzZWxlY3QgUENTX01US19MWU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZz02PWNvbmZpZyBNTFg0X0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTktXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc6MTA6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMTEtXHRzZWxlY3QgTUxYNF9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9Mjk9Y29uZmlnIE1MWDVfQ09SRV9FTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMxLVx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBFVEhFUk5FVCBcdTAwMjZcdTAwMjYgSU5FVCBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBNTFg1X0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzM6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zNC1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTMzPWNvbmZpZyBNTFhTV19QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM1LVx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgTUxYU1dfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzctXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI3LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6Mjg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXHRzZWxlY3QgUENTX1hQQ1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy04LVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTAtXHRzZWxlY3QgVkNBUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0yOD1jb25maWcgTEFOOTY5WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzAtXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMy1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI1LVx0c2VsZWN0IE5FVF9TSEFQRVJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNy1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9Mjk9Y29uZmlnIFJBVkJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXHRzZWxlY3QgTURJT19CSVRCQU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzctXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc9MjU9Y29uZmlnIFNOSV9ORVRTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMzAtXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVx0c2VsZWN0IFBDU19YUENTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NTA9Y29uZmlnIFRJX0NQU1dcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVx0c2VsZWN0IE1GRF9TWVNDT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU3LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cdGRlcGVuZHMgb24gVElfQ1BUUyB8fCAhVElfQ1BUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzEtXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAzLVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMDQ9Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMC1cdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yPWNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjk5MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIFBBR0VfUE9PTCBhbmQgaW9fdXJpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpZiBgTkVUYCBpcyBkZWZpbmVkLCBgQlBGX1NZU0NBTExgIGlzIGdvaW5nIHRvIGNob29zZSBgUEFHRV9QT09MYC4gVGhhdCBzdHJvbmdseSBzdWdnZXN0cyBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgZW5hYmxlZC4gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSBhbmQgZW5zdXJlIGNvbnNpc3RlbmN5IGluIG91ciBjb25maWd1cmF0aW9ucywgSSYjMzk7bSBnb2luZyB0byBhZGQgYFBBR0VfUE9PTGAgZGlyZWN0bHkgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUaGlzIHdpbGwgcmVtb3ZlIGFueSBhbWJpZ3VpdHkuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUgYWdhaW4sIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBkZXBlbmRlbmNpZXMgb3Igc3BlY2lmaWMgc2V0dGluZ3MgSSYjMzk7dmUgbWlzc2VkLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2lvX3VyaW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBpb191cmluZyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBJT19VUklOR19aQ1JYXG4gICA3Olx0XHRkZWZfYm9vbCB5XG4gICA4Olx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4gICA5Olx0XHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxuICAxMDpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDExOlx0XHRkZXBlbmRzIG9uIE5FVF9SWF9CVVNZX1BPTExcbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgSU9fVVJJTkdfQlBGXG4gIDE0Olx0XHRkZWZfYm9vbCB5XG4gIDE1Olx0XHRkZXBlbmRzIG9uIEJQRlxuICAxNjpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuICAxOTpcdFx0ZGVmX2Jvb2wgeVxuICAyMDpcdFx0ZGVwZW5kcyBvbiBJT19VUklOR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ0MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGFuZCBGb2N1cyBTeW1ib2xzIGZvciBJT19VUklOR19aQ1JYKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgSU9fVVJJTkdfWkNSWGAgdGhpbmcuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIGluIHBsYWNlLiBCYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCBpdCBsb29rcyBsaWtlIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAgYXJlIGNydWNpYWwuICBgSU5FVGAgaXMgdXN1YWxseSBlbmFibGVkLCBidXQgaXQgd29uJiMzOTt0IGh1cnQgdG8gYmUgZXhwbGljaXQuIGBORVRfUlhfQlVTWV9QT0xMYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNvIHRoYXQmIzM5O3MgZ29vZC4gYFBBR0VfUE9PTGAgaXMgbWFuYWdlZCBieSBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIHNldCwgc28gdGhhdCYjMzk7cyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3MgaW5jbHVkZSB0aGVzZSBpbiBgRW5hYmxlQ29uZmlnc2AuCgpOb3csIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvcmUgZnVuY3Rpb25zLiBJIG5lZWQgdG8gcmV2aXNpdCBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmDigJR0aGV5IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZC4gQmV5b25kIHRob3NlLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYW5kIGBpb19yZWdpc3Rlcl96Y3J4YCBhcmUgbGlrZWx5IHRoZSBlbnRyeSBwb2ludHMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGVzZSAmIzM0O3JlZ2lzdGVyJiMzNDsgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCB0aHJvdWdoIHRoZSBgSU9SSU5HX1JFR0lTVEVSXypgIG1lY2hhbmlzbS4gT2theSwgYSBxdWljayBjaGVjayBjb25maXJtczogYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gIGlzIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGlzIGBJT1JJTkdfUkVHSVNURVJfUkVTSVpFX1JJTkdTYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AgaXMgYElPUklOR19SRUdJU1RFUl9QQlVGX1JJTkdgLCBhbmQgZmluYWxseSBgaW9fcmVnaXN0ZXJfemNyeGAgaXMgYElPUklOR19SRUdJU1RFUl9aQ1JYYC4gUGVyZmVjdC4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3Q6IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgLCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCBgaW9fcmVnaXN0ZXJfemNyeGAuCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBzbyBJJiMzOTtsbCBjaGVjayBmb3IgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IG1heSBiZSBpbXBvcnRhbnQuIGBpb19tZW1fYWxsb2NfY29tcG91bmRgIGlzIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIHRoYXQuIGBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXNgIGFuZCBgaW9fcmVnaW9uX3Bpbl9wYWdlc2AgYXJlIGFsc28gc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBub3QgdXNlZnVsIGluIHRoaXMgY29udGV4dC4gTGV0JiMzOTtzIGJyaWVmbHkgY2hlY2sgYGlvX2FsbG9jYXRlX3NjcV91cmluZ3NgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19hbGxvY2F0ZV9zY3FfdXJpbmdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL2lvX3VyaW5nLmM9MjcyMT1ib29sIGlvX2lzX3VyaW5nX2ZvcHMoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzI1LVxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyNzI2OnN0YXRpYyBfX2NvbGQgaW50IGlvX2FsbG9jYXRlX3NjcV91cmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy9pb191cmluZy5jLTI3MjctXHRcdFx0XHRcdCBzdHJ1Y3QgaW9fY3R4X2NvbmZpZyAqY29uZmlnKVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmM9Mjk3Mz1zdGF0aWMgX19jb2xkIGludCBpb191cmluZ19jcmVhdGUoc3RydWN0IGlvX2N0eF9jb25maWcgKmNvbmZpZylcbi0tXG5pb191cmluZy9pb191cmluZy5jLTMwNDktXG5pb191cmluZy9pb191cmluZy5jOjMwNTA6XHRyZXQgPSBpb19hbGxvY2F0ZV9zY3FfdXJpbmdzKGN0eCwgY29uZmlnKTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzA1MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgSW1wcmVzc2lvbnMgb2YgdGhlIGlvX3VyaW5nIENvZGViYXNlKioKCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgd2hlcmUgdGhlIGFjdGlvbiBzdGFydHMuIGBpb19hbGxvY2F0ZV9zY3FfdXJpbmdzYCBpcyBkZWNsYXJlZCBzdGF0aWMsIHNvIGl0JiMzOTtzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBTYW1lIGRlYWwgd2l0aCBgaW9fdXJpbmdfY3JlYXRlYDsgYWxzbyBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBpb191cmluZ19zZXR1cGAuIFRoYXQgbWVhbnMgYGlvX3VyaW5nX3NldHVwYCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBzeXNjYWxsLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSByZWFsbHkgc29saWQgZm9jdXMgc3ltYm9sIHRvIHN0YXJ0IHdpdGguIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgdGhlIHBsYWNlIHdoZXJlIGV2ZXJ5dGhpbmcgY29tZXMgdG9nZXRoZXIuIEkgY2FuIGJ1aWxkIG91dCBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9pb191cmluZy5jPTI5NzM9c3RhdGljIF9fY29sZCBpbnQgaW9fdXJpbmdfY3JlYXRlKHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXG4tLVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTA1LSAqL1xuaW9fdXJpbmcvaW9fdXJpbmcuYzozMTA2OnN0YXRpYyBsb25nIGlvX3VyaW5nX3NldHVwKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgaW9fdXJpbmdfcGFyYW1zIF9fdXNlciAqcGFyYW1zKVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTA3LXtcbi0tXG5pb191cmluZy9pb191cmluZy5jPTMxMjM9c3RhdGljIGlubGluZSBpbnQgaW9fdXJpbmdfYWxsb3dlZCh2b2lkKVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzE0NC1cbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE0NTpTWVNDQUxMX0RFRklORTIoaW9fdXJpbmdfc2V0dXAsIHUzMiwgZW50cmllcyxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzE0Ni1cdFx0c3RydWN0IGlvX3VyaW5nX3BhcmFtcyBfX3VzZXIgKiwgcGFyYW1zKVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzE1My1cbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE1NDpcdHJldHVybiBpb191cmluZ19zZXR1cChlbnRyaWVzLCBwYXJhbXMpO1xuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcva2J1Zi5jPTYxMT1pbnQgaW9fbWFuYWdlX2J1ZmZlcnNfbGVnYWN5KHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTYyOC1cbmlvX3VyaW5nL2tidWYuYzo2Mjk6aW50IGlvX3JlZ2lzdGVyX3BidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcbmlvX3VyaW5nL2tidWYuYy02MzAte1xuLS1cbmlvX3VyaW5nL2tidWYuaD04MD1pbnQgaW9fbWFuYWdlX2J1ZmZlcnNfbGVnYWN5KHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuaW9fdXJpbmcva2J1Zi5oLTgxLVxuaW9fdXJpbmcva2J1Zi5oOjgyOmludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpO1xuaW9fdXJpbmcva2J1Zi5oLTgzLWludCBpb191bnJlZ2lzdGVyX3BidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZyk7XG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy04ODctXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjg4ODpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nKGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtODg5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MjcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjoKCioqUG9uZGVyaW5nIFJpbmcgQnVmZmVyIFJlZ2lzdHJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AuIEhtbSwgbm90IHN0YXRpYy4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gT2theSwgbGV0JiMzOTtzIGtlZXAgdGhhdCBpbiBtaW5kLiBOb3csIHdoYXQgYWJvdXQgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2A/IEFoLCB0aGF0IG9uZSAqaXMqIHN0YXRpYy4gUmlnaHQsIHJpZ2h0LiBHb3R0YSBxdWlja2x5IGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBkaXN0aW5jdGlvbi4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBpbmRlZWQgdGhlIGNhc2UuIE9rYXksIGNvbmZpcm1pbmcuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCBtYWtpbmcgb25lIHB1YmxpYyBhbmQgdGhlIG90aGVyIHByaXZhdGUuLi4gSSBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9yZWdpc3Rlci5jPTQ4MD1zdGF0aWMgdm9pZCBpb19yZWdpc3Rlcl9mcmVlX3JpbmdzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNDk3LVxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo0OTg6c3RhdGljIGludCBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXG5pb191cmluZy9yZWdpc3Rlci5jLTQ5OS17XG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDctXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjk0ODpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzKGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQ5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHRzOgoKKipTdGF0aWMgRnVuY3Rpb24gT2JzZXJ2YXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGFuZCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGV5JiMzOTtyZSBib3RoIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGEgY291cGxlIG9mIGltcG9ydGFudCB0aGluZ3MuIFByaW1hcmlseSwgdGhlIGBzdGF0aWNgIGtleXdvcmQgbWVhbnMgdGhlc2UgZnVuY3Rpb25zIGhhdmUgKmludGVybmFsIGxpbmthZ2UqLiBUaGV5IGFyZSBub3QgZXhwb3NlZCB0byBvdGhlciB0cmFuc2xhdGlvbiB1bml0cyB3aXRoaW4gdGhlIHByb2plY3QuIEl0IHN1Z2dlc3RzIHRoZXNlIGFyZSB2ZXJ5IHNwZWNpZmljLCBpbnRlcm5hbCB1dGlsaXR5IGZ1bmN0aW9ucywgcHJvYmFibHkgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgd2l0aGluIHRoZSBtb2R1bGUgb3IgZmlsZSB0aGV5JiMzOTtyZSBkZWZpbmVkIGluLiBUaGV54oCZcmUgcGFydCBvZiBhIHByaXZhdGUgaW50ZXJmYWNlLCBsaWtlbHkgZGVzaWduZWQgZm9yIGZpbmUtZ3JhaW5lZCBjb250cm9sIG9yIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIHdpdGhpbiB3aGF0ZXZlciBzeXN0ZW0gdGhpcyBjb2RlIGlzIHBhcnQgb2YuIEkgaW1tZWRpYXRlbHkgc3RhcnQgd29uZGVyaW5nIGFib3V0IHRoZSBzY29wZSBhbmQgb3JnYW5pemF0aW9uIG9mIHRoZSBjb2RlYmFzZTsgdGhlc2Ugc3RhdGljIGRlY2xhcmF0aW9ucyBzdWdnZXN0IGEgd2VsbC1kZWZpbmVkIG1vZHVsZSBzdHJ1Y3R1cmUsIGFuZCBJJiMzOTtkIGJlIGludGVyZXN0ZWQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIEtub3dpbmcgdGhleSBhcmUgc3RhdGljLCBJIGFudGljaXBhdGUgdGhleSB3b3VsZCBiZSBkaXJlY3RseSBjYWxsZWQgd2l0aGluIHRoZSBzYW1lIGZpbGUsIG9yIHBlcmhhcHMgd2l0aGluIGlubGluZSBmdW5jdGlvbnMgaW4gdGhlIGZpbGUsIHdpdGggbWluaW1hbCBpbnRlcmFjdGlvbnMgd2l0aCBleHRlcm5hbCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19yZWdpc3Rlcl9tZW1fcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL3JlZ2lzdGVyLmM9NDk4PXN0YXRpYyBpbnQgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnKVxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzAyLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo3MDM6c3RhdGljIGludCBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqdWFyZylcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzA0LXtcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTk1My1cdFx0XHRicmVhaztcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTU0Olx0XHRyZXQgPSBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTU1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NTMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgaW9fdXJpbmcgUmVnaXN0cmF0aW9uIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIGBpb191cmluZ2Agb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGBfX2lvX3VyaW5nX3JlZ2lzdGVyYC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgYWN0dWFsbHkgZG9pbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiB0aGlzIGVudHJ5IHBvaW50IHRvIGdldCBhIGdyYXNwIG9uIGhvdyByZXNvdXJjZXMgYXJlIGFjdHVhbGx5IG1hcHBlZCBhbmQgbWFuYWdlZCBmb3IgYGlvX3VyaW5nYC4gVGltZSB0byB0cmFjZSBpdHMgY2FsbCBmbG93IGFuZCB1bmRlcnN0YW5kIGl0cyBhcmd1bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faW9fdXJpbmdfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03MDM9c3RhdGljIGludCBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqdWFyZylcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTc0OS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzUwOnN0YXRpYyBpbnQgX19pb191cmluZ19yZWdpc3RlcihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgb3Bjb2RlLFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03NTEtXHRcdFx0ICAgICAgIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZ3MpXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz0xMDE3PVNZU0NBTExfREVGSU5FNChpb191cmluZ19yZWdpc3RlciwgdW5zaWduZWQgaW50LCBmZCwgdW5zaWduZWQgaW50LCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy0xMDM5LVx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNldXJpbmdfbG9jayk7XG5pb191cmluZy9yZWdpc3Rlci5jOjEwNDA6XHRyZXQgPSBfX2lvX3VyaW5nX3JlZ2lzdGVyKGN0eCwgb3Bjb2RlLCBhcmcsIG5yX2FyZ3MpO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYy0xMDQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk3NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkZvY3VzaW5nIG9uIGlvX3VyaW5nX3JlZ2lzdGVyIGZvciBBbmFseXNpcyoqCgpSaWdodCwgYF9faW9fdXJpbmdfcmVnaXN0ZXJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBvbmx5IGNhbGxlZCBpbnRlcm5hbGx5LCB3aXRoaW4gdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdCBhcyBpdCYjMzk7cyBkZWZpbmVkLiBBbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gdGhlIGBpb191cmluZ19yZWdpc3RlcmAgc3lzdGVtIGNhbGwgZW50cnkgcG9pbnQuIEdpdmVuIHRoaXMsIGBpb191cmluZ19yZWdpc3RlcmAgaXRzZWxmIGlzIGdvaW5nIHRvIGJlIHRoZSBtb3JlIHJlbGV2YW50IGZ1bmN0aW9uIHRvIGV4YW1pbmUgZmlyc3QuIEl0JiMzOTtzIHRoZSBwdWJsaWMgZmFjZSBvZiB0aGUgc3lzdGVtIGNhbGwuIEl0JiMzOTtzIGEga2V5IHN5bWJvbC4gSXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiAqc3RhcnRzKiBmcm9tIHRoZSB1c2VyJiMzOTtzIHBlcnNwZWN0aXZlLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBjb25jZW50cmF0ZSBteSBpbml0aWFsIGVmZm9ydHMuIE5vdywgbGV0JiMzOTtzIGFsc28gY2hlY2sgb3V0IGBpb19yZWdpc3Rlcl96Y3J4YCBhcyBhIHBvdGVudGlhbCBhcmVhIG9mIGludGVyZXN0IHNpbmNlIHRoaXMgaXMgcmVsYXRlZCB0byByZWdpc3RyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3JlZ2lzdGVyX3pjcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDEtXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjk0MjpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfemNyeChjdHgsIGFyZyk7XG5pb191cmluZy9yZWdpc3Rlci5jLTk0My1cdFx0YnJlYWs7XG4tLVxuaW9fdXJpbmcvemNyeC5jPTg1Nz1zdGF0aWMgaW50IHpjcnhfdmFsaWRhdGVfbm90aWZfc3RhdHMoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTg4My1cbmlvX3VyaW5nL3pjcnguYzo4ODQ6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmMtODg1LVx0XHQgICAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcvemNyeC5oPTg4PWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XG5pb191cmluZy96Y3J4Lmg6ODk6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtOTAtXHRcdFx0IHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpO1xuLS1cbmlvX3VyaW5nL3pjcnguaD05Nj1zdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqaW9femNyeF9nZXRfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3pjcnguaC05OC0jZWxzZVxuaW9fdXJpbmcvemNyeC5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtMTAwLVx0XHRcdFx0ICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3MjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSU8gUmVnaW9uIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBgaW9fcmVnaXN0ZXJfemNyeGAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBleHRlcm5hbGx5LCBhbmQgdGhhdCBicm9hZGVucyBpdHMgcG90ZW50aWFsIGltcGFjdC4gTXkgYXR0ZW50aW9uIGlzIG5vdyBob25lZCBvbiBhIHNwZWNpZmljIHNldCBvZiBzeW1ib2xzIHJlbGF0ZWQgdG8gSU8gcmVnaW9uIG1hbmFnZW1lbnQgYW5kIHNwZWNpZmljYWxseSwgSU8gcmluZyBtYW5hZ2VtZW50OgoKKiAgIGBpb19jcmVhdGVfcmVnaW9uYAoqICAgYGlvX2ZyZWVfcmVnaW9uYAoqICAgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AKKiAgIGBpb19yZWdpc3Rlcl96Y3J4YAoqICAgYGlvX3VyaW5nX3NldHVwYAoqICAgYGlvX3VyaW5nX3JlZ2lzdGVyYAoKR2l2ZW4gdGhlIGNvbnRleHQsIEkgdGhpbmsgaXQmIzM5O3MgcHJ1ZGVudCB0byBleGFtaW5lIGhvdyBgaW9fdXJpbmdfbW1hcGAgd29ya3MsIGFzIGl0IHNlZW1zIGEgbGlrZWx5IHBvaW50IG9mIGludGVyc2VjdGlvbiBmb3IgdGhlc2UgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgbWVtb3J5IG1hcHBpbmcgbGF5ZXIgYW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aGluIGl0LiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB0ZXJtcyBvZiBtYW5hZ2luZyByZWdpb25zIGFuZCBidWZmZXJzIHdpdGhpbiB0aGUgSU8gcmluZyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb191cmluZ19tbWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL2lvX3VyaW5nLmM9MjcwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpb191cmluZ19mb3BzID0ge1xuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzA5LVx0LnJlbGVhc2VcdD0gaW9fdXJpbmdfcmVsZWFzZSxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjcxMDpcdC5tbWFwXHRcdD0gaW9fdXJpbmdfbW1hcCxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjcxMS1cdC5nZXRfdW5tYXBwZWRfYXJlYSA9IGlvX3VyaW5nX2dldF91bm1hcHBlZF9hcmVhLFxuLS1cbmlvX3VyaW5nL21lbW1hcC5jPTMwNz1zdGF0aWMgaW50IGlvX3JlZ2lvbl9tbWFwKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL21lbW1hcC5jLTMxNy1cbmlvX3VyaW5nL21lbW1hcC5jOjMxODpfX2NvbGQgaW50IGlvX3VyaW5nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW9fdXJpbmcvbWVtbWFwLmMtMzE5LXtcbi0tXG5pb191cmluZy9tZW1tYXAuYz0zNDQ9dW5zaWduZWQgbG9uZyBpb191cmluZ19nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmlvX3VyaW5nL21lbW1hcC5jLTM5My0gKiBEcm9wIHRoZSBwYWdlcyB0aGF0IHdlcmUgaW5pdGlhbGx5IHJlZmVyZW5jZWQgYW5kIGFkZGVkIGluXG5pb191cmluZy9tZW1tYXAuYzozOTQ6ICogaW9fdXJpbmdfbW1hcCgpLiBXZSBjYW5ub3QgaGF2ZSBoYWQgYSBtcmVtYXAoKSBhcyB0aGF0IGlzbiYjMzk7dCBzdXBwb3J0ZWQsXG5pb191cmluZy9tZW1tYXAuYy0zOTUtICogaGVuY2UgdGhlIHZtYSBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmUgd2UgaW5pdGlhbGx5IHJlZmVyZW5jZWQgYW5kXG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9NDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaW9fdXJpbmdfbm9tbXVfdm1fb3BzID0ge1xuLS1cbmlvX3VyaW5nL21lbW1hcC5jLTQxMC1cbmlvX3VyaW5nL21lbW1hcC5jOjQxMTppbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5pb191cmluZy9tZW1tYXAuYy00MTIte1xuLS1cbmlvX3VyaW5nL21lbW1hcC5oPTE1PXVuc2lnbmVkIGxvbmcgaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5pb191cmluZy9tZW1tYXAuaC0xNy1cdFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgZmxhZ3MpO1xuaW9fdXJpbmcvbWVtbWFwLmg6MTg6aW50IGlvX3VyaW5nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcbmlvX3VyaW5nL21lbW1hcC5oLTE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzMwoJCQkJCQkJb3V0cHV0OiAxNzcKCQkJCQkJCXRob3VnaHRzOiA4MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhc29uaW5nIGZvciBGdXp6aW5nIGlvX3VyaW5nIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIHRoZSBvcHRpbWFsIGZ1enppbmcgdGFyZ2V0cyBhbmQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIGBpb191cmluZ2AgcGF0Y2gsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBtZW1vcnkgbWFwcGluZy4gU2luY2UgdGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBtZW1vcnkgbWFwcGluZyBsb2dpYyB3aXRoaW4gYGlvX3VyaW5nYCwgdGhlIG5vbi1zdGF0aWMgYGlvX3VyaW5nX21tYXBgIGZ1bmN0aW9uLCBiZWluZyBhIHBhcnQgb2YgdGhlIGZpbGUgb3BlcmF0aW9ucywgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24gYXMgYSBjcml0aWNhbCBzeW1ib2wgdG8gYW5hbHl6ZS4KCkkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCBhIHJhbmdlIG9mIGZ1bmN0aW9ucywgd2hpY2ggSSYjMzk7dmUgZHViYmVkICYjMzQ7Rm9jdXNTeW1ib2xzLCYjMzQ7IGJleW9uZCB0aGUgbW1hcCBmdW5jdGlvbjogYGlvX2NyZWF0ZV9yZWdpb25gLCBgaW9fZnJlZV9yZWdpb25gLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3pjcnhgLCBgaW9fdXJpbmdfc2V0dXBgLCBhbmQgYGlvX3VyaW5nX3JlZ2lzdGVyYC4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhlIHNjb3BlLCB0aGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSB0byBwcm92aWRlIHRoZSBiZXN0IGNvbnRleHQuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9uIHRvIGNvbmZpZ3VyYXRpb25zLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIEkgbmVlZCB0byBlbnN1cmUgaXMgZW5hYmxlZCBpcyBvYnZpb3VzbHkgYElPX1VSSU5HYC4gRGlnZ2luZyBkZWVwZXIsIHRoZXJlJiMzOTtzIGBJT19VUklOR19aQ1JYYCwgYnV0IGl0JiMzOTtzIGEgYGRlZl9ib29sIHlgLCB3aGljaCBtZWFucyBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbyBJIGNoZWNrZWQgdGhvc2U6IGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIFRodXMsIEkgY2FuIHNpbXBsaWZ5IHRoZSBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBvbmx5IGBJT19VUklOR2AuIEkgZG91YmxlLWNoZWNrZWQgYFBBR0VfUE9PTGAgdG8gc2VlIGlmIGl0JiMzOTtzIHVzZXIgc2VsZWN0YWJsZS4gSXQgdHVybnMgb3V0IHRoYXQgYFBBR0VfUE9PTGAgaXMgc2VsZWN0ZWQgYnkgbWFueSBvdGhlciBjb25maWdzLCBzbyBpdCBpcyBhbG1vc3QgY2VydGFpbmx5IGVuYWJsZWQgaW4gYSByZWFzb25hYmxlIGtlcm5lbCBjb25maWcuCgpUaGVuLCB0aGVyZSBhcmUgYElPX1VSSU5HX0JQRmAgYW5kIGBJT19VUklOR19CUEZfT1BTYC4gVGhlc2UgY2FuIGFsc28gYmUgaWdub3JlZCBzaW5jZSB0aGUgZm9jdXMgaXMgb24gdGhlIG1lbW9yeSBtYXBwaW5nLgoKQWZ0ZXIgcmV2aWV3aW5nLCBJJiMzOTttIGdvaW5nIGJhY2sgdG8gYGlvX2NyZWF0ZV9yZWdpb25gIGFuZCBgaW9fZnJlZV9yZWdpb25gLCBhcyB0aGV5IGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIGEgbWVtb3J5IGFjY291bnRpbmcgYnVnIGluIGhvdyBgZ2V0X29yZGVyKClgIHJvdW5kcyB1cCBhbGxvY2F0aW9uIHNpemVzLiBUaGlzIGxlYWRzIHRvIGV4dHJhIHBhZ2VzIGJlaW5nIGFsbG9jYXRlZCB0aGFuIGFyZSBpbml0aWFsbHkgZGVzY3JpYmVkIGJ5IHRoZSByZWdpb24sIHdoaWNoIGNhdXNlcyBkaXNjcmVwYW5jaWVzIGluIHBhZ2UgYWNjb3VudGluZy4gVGhlIGNoYW5nZXMgaW52b2x2ZSBtb2RpZnlpbmcgYGlvX21lbV9hbGxvY19jb21wb3VuZGAgdG8gYWNjb3VudCBmb3IgdGhlIGV4dHJhIHBhZ2VzIGNvcnJlY3RseSBhbmQgYGlvX2ZyZWVfcmVnaW9uYCB0byBhcHByb3ByaWF0ZWx5IGZyZWUgdGhlbS4KClRoaXMgbWVtb3J5IGFjY291bnRpbmcgZml4IGlzIGRlZmluaXRlbHkgYSAqZnVuY3Rpb25hbCogY2hhbmdlIGluIHRoZSBjb3JlIG9mIGBpb191cmluZ2AgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZXJlZm9yZSwgaXQmIzM5O3MgYWJzb2x1dGVseSBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGZ1enppbmcgYXR0ZW50aW9uLgoKKipJbiBzdW1tYXJ5LCBteSBhbmFseXNpcyByZXZlYWxzIHRoZSBmb2xsb3dpbmc6KioKCiogICAqKkZvY3VzIFN5bWJvbHM6KiogVGhlIG1vc3QgaW1wb3J0YW50IG9uZXMgZm9yIGZ1enppbmcgYXJlIGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3VyaW5nX21tYXBgIGFuZCB0aGUgb3RoZXIgYXNzb2NpYXRlZCBvbmVzLgoqICAgKipFbmFibGUgQ29uZmlnczoqKiBgSU9fVVJJTkdgIGlzIGVzc2VudGlhbC4KCkkmIzM5O20gbm93IHJlYWR5IHRvIHByb2NlZWQgd2l0aCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZSBmdXp6ZXIgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fY3JlYXRlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19mcmVlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpb191cmluZ19tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb19jcmVhdGVfcmVnaW9uJiMzNDssCiAgICAmIzM0O2lvX2ZyZWVfcmVnaW9uJiMzNDssCiAgICAmIzM0O2lvX3JlZ2lzdGVyX3BidWZfcmluZyYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl96Y3J4JiMzNDssCiAgICAmIzM0O2lvX3VyaW5nX3NldHVwJiMzNDssCiAgICAmIzM0O2lvX3VyaW5nX3JlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2lvX3VyaW5nX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgYWNjb3VudGluZyBpc3N1ZSBpbiBpb191cmluZyBtZW1vcnkgbWFwcGluZyB3aGVyZSBnZXRfb3JkZXIoKSByb3VuZHMgdXAgdGhlIGFsbG9jYXRpb24gc2l6ZSwgcmVzdWx0aW5nIGluIGV4dHJhIHBhZ2VzIGJlaW5nIGFsbG9jYXRlZCBidXQgbm90IHByb3Blcmx5IGFjY291bnRlZCBmb3IuIEl0IG1vZGlmaWVzIGlvX21lbV9hbGxvY19jb21wb3VuZCB0byBhY2NvdW50IGZvciB0aGVzZSBleHRyYSBwYWdlcyBhbmQgaW9fZnJlZV9yZWdpb24gdG8gdW5hY2NvdW50IHRoZW0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGlvX3VyaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6NTYuMDY5NjM0NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMxMTcwNjkxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19jcmVhdGVfcmVnaW9uXCIsXG4gICAgXCJpb19mcmVlX3JlZ2lvblwiLFxuICAgIFwiaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nXCIsXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gICAgXCJpb191cmluZ19zZXR1cFwiLFxuICAgIFwiaW9fdXJpbmdfcmVnaXN0ZXJcIixcbiAgICBcImlvX3VyaW5nX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBhY2NvdW50aW5nIGlzc3VlIGluIGlvX3VyaW5nIG1lbW9yeSBtYXBwaW5nIHdoZXJlIGdldF9vcmRlcigpIHJvdW5kcyB1cCB0aGUgYWxsb2NhdGlvbiBzaXplLCByZXN1bHRpbmcgaW4gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgcHJvcGVybHkgYWNjb3VudGVkIGZvci4gSXQgbW9kaWZpZXMgaW9fbWVtX2FsbG9jX2NvbXBvdW5kIHRvIGFjY291bnQgZm9yIHRoZXNlIGV4dHJhIHBhZ2VzIGFuZCBpb19mcmVlX3JlZ2lvbiB0byB1bmFjY291bnQgdGhlbS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgaW9fdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjU2LjA2OTY0MDIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgwNjMxMDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTIzYWE3MmY4MGUzMDU2MWJhNTJmZmJmNzdmY2UwNTQ4M2E4NzMxZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE2OjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL21lbW1hcC5jIGIvaW9fdXJpbmcvbWVtbWFwLmNcXG5pbmRleCAyM2U4YTg1MTExYmNhLi40OGMwZWIwMTI0MTIzIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL21lbW1hcC5jXFxuKysrIGIvaW9fdXJpbmcvbWVtbWFwLmNcXG5AQCAtMTYsOCArMTYsMTAgQEBcXG4gI2luY2x1ZGUgXFxcInpjcnguaFxcXCJcXG4gXFxuIHN0YXRpYyBib29sIGlvX21lbV9hbGxvY19jb21wb3VuZChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgbnJfcGFnZXMsXFxuLVxcdFxcdFxcdFxcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcXG4rXFx0XFx0XFx0XFx0ICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcXG4ge1xcbitcXHR1bnNpZ25lZCBsb25nIG5yX2NvbXBvdW5kLCBleHRyYTtcXG4gXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcdGludCBpLCBvcmRlcjtcXG4gXFxuQEAgLTI3LDkgKzI5LDIyIEBAIHN0YXRpYyBib29sIGlvX21lbV9hbGxvY19jb21wb3VuZChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgbnJfcGFnZXMsXFxuIFxcdGVsc2UgaWYgKG9yZGVyKVxcbiBcXHRcXHRnZnAgfD0gX19HRlBfQ09NUDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIGdldF9vcmRlcigpIHJvdW5kcyBhIG5vbiBwb3dlciBvZiB0d28gc2l6ZSB1cCwgc28gdGhlIGFsbG9jYXRpb25cXG4rXFx0ICogY2FuIGhvbGQgbW9yZSBwYWdlcyB0aGFuIHRoZSByZWdpb24gZXhwb3Nlcy4gQWNjb3VudCB0aG9zZSB0b28sXFxuK1xcdCAqIGFuZCBsZWF2ZSB0aGUgY29tcG91bmQgYWxsb2NhdGlvbiBhbG9uZSBpZiB0aGV5IGRvIG5vdCBmaXQuXFxuK1xcdCAqL1xcbitcXHRucl9jb21wb3VuZCA9IDFVTCBcXHUwMDNjXFx1MDAzYyBvcmRlcjtcXG4rXFx0ZXh0cmEgPSBucl9jb21wb3VuZCAtIG5yX3BhZ2VzO1xcbitcXHRpZiAoZXh0cmEgXFx1MDAyNlxcdTAwMjYgdXNlciBcXHUwMDI2XFx1MDAyNiBfX2lvX2FjY291bnRfbWVtKHVzZXIsIGV4dHJhKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4gXFx0cGFnZSA9IGFsbG9jX3BhZ2VzKGdmcCwgb3JkZXIpO1xcbi1cXHRpZiAoIXBhZ2UpXFxuK1xcdGlmICghcGFnZSkge1xcbitcXHRcXHRpZiAoZXh0cmEgXFx1MDAyNlxcdTAwMjYgdXNlcilcXG4rXFx0XFx0XFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIGV4dHJhKTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfcGFnZXM7IGkrKylcXG4gXFx0XFx0cGFnZXNbaV0gPSBwYWdlICsgaTtcXG5AQCAtMTA1LDggKzEyMCwxNSBAQCB2b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKVxcbiBcXHR9XFxuIFxcdGlmICgobXItXFx1MDAzZWZsYWdzIFxcdTAwMjYgSU9fUkVHSU9OX0ZfVk1BUCkgXFx1MDAyNlxcdTAwMjYgbXItXFx1MDAzZXB0cilcXG4gXFx0XFx0dnVubWFwKG1yLVxcdTAwM2VwdHIpO1xcbi1cXHRpZiAobXItXFx1MDAzZW5yX3BhZ2VzIFxcdTAwMjZcXHUwMDI2IHVzZXIpXFxuLVxcdFxcdF9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBtci1cXHUwMDNlbnJfcGFnZXMpO1xcbitcXHRpZiAobXItXFx1MDAzZW5yX3BhZ2VzIFxcdTAwMjZcXHUwMDI2IHVzZXIpIHtcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBucl9hY2NvdW50ZWQgPSBtci1cXHUwMDNlbnJfcGFnZXM7XFxuK1xcbitcXHRcXHQvKiBhIGNvbXBvdW5kIHJlZ2lvbiB3YXMgYWNjb3VudGVkIGZvciB0aGUgd2hvbGUgYWxsb2NhdGlvbiAqL1xcbitcXHRcXHRpZiAobXItXFx1MDAzZWZsYWdzIFxcdTAwMjYgSU9fUkVHSU9OX0ZfU0lOR0xFX1JFRilcXG4rXFx0XFx0XFx0bnJfYWNjb3VudGVkID0gMVVMIFxcdTAwM2NcXHUwMDNjIGdldF9vcmRlcihpb19yZWdpb25fc2l6ZShtcikpO1xcbitcXG4rXFx0XFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG5yX2FjY291bnRlZCk7XFxuK1xcdH1cXG4gXFxuIFxcdG1lbXNldChtciwgMCwgc2l6ZW9mKCptcikpO1xcbiB9XFxuQEAgLTE1MSw3ICsxNzMsOCBAQCBzdGF0aWMgaW50IGlvX3JlZ2lvbl9waW5fcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbiBcXG4gc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IGlvX3VyaW5nX3JlZ2lvbl9kZXNjICpyZWcsXFxuLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1tYXBfb2Zmc2V0KVxcbitcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtbWFwX29mZnNldCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcXG4ge1xcbiBcXHRnZnBfdCBnZnAgPSBHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPIHwgX19HRlBfTk9XQVJOO1xcbiBcXHRzaXplX3Qgc2l6ZSA9IGlvX3JlZ2lvbl9zaXplKG1yKTtcXG5AQCAtMTYyLDcgKzE4NSw3IEBAIHN0YXRpYyBpbnQgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcXG4gXFx0aWYgKCFwYWdlcylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRpZiAoaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHBhZ2VzLCBtci1cXHUwMDNlbnJfcGFnZXMsIHNpemUsIGdmcCkpIHtcXG4rXFx0aWYgKGlvX21lbV9hbGxvY19jb21wb3VuZChwYWdlcywgbXItXFx1MDAzZW5yX3BhZ2VzLCBzaXplLCBnZnAsIHVzZXIpKSB7XFxuIFxcdFxcdG1yLVxcdTAwM2VmbGFncyB8PSBJT19SRUdJT05fRl9TSU5HTEVfUkVGO1xcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG5AQCAtMjE3LDcgKzI0MCw3IEBAIGludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuIFxcdGlmIChyZWctXFx1MDAzZWZsYWdzIFxcdTAwMjYgSU9SSU5HX01FTV9SRUdJT05fVFlQRV9VU0VSKVxcbiBcXHRcXHRyZXQgPSBpb19yZWdpb25fcGluX3BhZ2VzKG1yLCByZWcpO1xcbiBcXHRlbHNlXFxuLVxcdFxcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCk7XFxuK1xcdFxcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCwgY3R4LVxcdTAwM2V1c2VyKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjU3LjQ1MDkyMDM2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE3MTczNTc3Mzk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2NyZWF0ZV9yZWdpb25cIixcbiAgICBcImlvX2ZyZWVfcmVnaW9uXCIsXG4gICAgXCJpb19yZWdpc3Rlcl9wYnVmX3JpbmdcIixcbiAgICBcImlvX3JlZ2lzdGVyX3pjcnhcIixcbiAgICBcImlvX3VyaW5nX3NldHVwXCIsXG4gICAgXCJpb191cmluZ19yZWdpc3RlclwiLFxuICAgIFwiaW9fdXJpbmdfbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTIzYWE3MmY4MGUzMDU2MWJhNTJmZmJmNzdmY2UwNTQ4M2E4NzMxZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMjE6MTY6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pb191cmluZy9tZW1tYXAuYyBiL2lvX3VyaW5nL21lbW1hcC5jXG5pbmRleCAyM2U4YTg1MTExYmNhLi40OGMwZWIwMTI0MTIzIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvbWVtbWFwLmNcbisrKyBiL2lvX3VyaW5nL21lbW1hcC5jXG5AQCAtMTYsOCArMTYsMTAgQEBcbiAjaW5jbHVkZSBcInpjcnguaFwiXG4gXG4gc3RhdGljIGJvb2wgaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9wYWdlcyxcbi1cdFx0XHRcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcbitcdFx0XHRcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcCxcbitcdFx0XHRcdCAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKVxuIHtcbitcdHVuc2lnbmVkIGxvbmcgbnJfY29tcG91bmQsIGV4dHJhO1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXHRpbnQgaSwgb3JkZXI7XG4gXG5AQCAtMjcsOSArMjksMjIgQEAgc3RhdGljIGJvb2wgaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9wYWdlcyxcbiBcdGVsc2UgaWYgKG9yZGVyKVxuIFx0XHRnZnAgfD0gX19HRlBfQ09NUDtcbiBcbitcdC8qXG4rXHQgKiBnZXRfb3JkZXIoKSByb3VuZHMgYSBub24gcG93ZXIgb2YgdHdvIHNpemUgdXAsIHNvIHRoZSBhbGxvY2F0aW9uXG4rXHQgKiBjYW4gaG9sZCBtb3JlIHBhZ2VzIHRoYW4gdGhlIHJlZ2lvbiBleHBvc2VzLiBBY2NvdW50IHRob3NlIHRvbyxcbitcdCAqIGFuZCBsZWF2ZSB0aGUgY29tcG91bmQgYWxsb2NhdGlvbiBhbG9uZSBpZiB0aGV5IGRvIG5vdCBmaXQuXG4rXHQgKi9cbitcdG5yX2NvbXBvdW5kID0gMVVMIFx1MDAzY1x1MDAzYyBvcmRlcjtcbitcdGV4dHJhID0gbnJfY29tcG91bmQgLSBucl9wYWdlcztcbitcdGlmIChleHRyYSBcdTAwMjZcdTAwMjYgdXNlciBcdTAwMjZcdTAwMjYgX19pb19hY2NvdW50X21lbSh1c2VyLCBleHRyYSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbiBcdHBhZ2UgPSBhbGxvY19wYWdlcyhnZnAsIG9yZGVyKTtcbi1cdGlmICghcGFnZSlcbitcdGlmICghcGFnZSkge1xuK1x0XHRpZiAoZXh0cmEgXHUwMDI2XHUwMDI2IHVzZXIpXG4rXHRcdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIGV4dHJhKTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfcGFnZXM7IGkrKylcbiBcdFx0cGFnZXNbaV0gPSBwYWdlICsgaTtcbkBAIC0xMDUsOCArMTIwLDE1IEBAIHZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpXG4gXHR9XG4gXHRpZiAoKG1yLVx1MDAzZWZsYWdzIFx1MDAyNiBJT19SRUdJT05fRl9WTUFQKSBcdTAwMjZcdTAwMjYgbXItXHUwMDNlcHRyKVxuIFx0XHR2dW5tYXAobXItXHUwMDNlcHRyKTtcbi1cdGlmIChtci1cdTAwM2Vucl9wYWdlcyBcdTAwMjZcdTAwMjYgdXNlcilcbi1cdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG1yLVx1MDAzZW5yX3BhZ2VzKTtcbitcdGlmIChtci1cdTAwM2Vucl9wYWdlcyBcdTAwMjZcdTAwMjYgdXNlcikge1xuK1x0XHR1bnNpZ25lZCBsb25nIG5yX2FjY291bnRlZCA9IG1yLVx1MDAzZW5yX3BhZ2VzO1xuK1xuK1x0XHQvKiBhIGNvbXBvdW5kIHJlZ2lvbiB3YXMgYWNjb3VudGVkIGZvciB0aGUgd2hvbGUgYWxsb2NhdGlvbiAqL1xuK1x0XHRpZiAobXItXHUwMDNlZmxhZ3MgXHUwMDI2IElPX1JFR0lPTl9GX1NJTkdMRV9SRUYpXG4rXHRcdFx0bnJfYWNjb3VudGVkID0gMVVMIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoaW9fcmVnaW9uX3NpemUobXIpKTtcbitcbitcdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG5yX2FjY291bnRlZCk7XG4rXHR9XG4gXG4gXHRtZW1zZXQobXIsIDAsIHNpemVvZigqbXIpKTtcbiB9XG5AQCAtMTUxLDcgKzE3Myw4IEBAIHN0YXRpYyBpbnQgaW9fcmVnaW9uX3Bpbl9wYWdlcyhzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXG4gc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBpb191cmluZ19yZWdpb25fZGVzYyAqcmVnLFxuLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW1hcF9vZmZzZXQpXG4rXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtbWFwX29mZnNldCxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpXG4ge1xuIFx0Z2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyB8IF9fR0ZQX05PV0FSTjtcbiBcdHNpemVfdCBzaXplID0gaW9fcmVnaW9uX3NpemUobXIpO1xuQEAgLTE2Miw3ICsxODUsNyBAQCBzdGF0aWMgaW50IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXHRpZiAoIXBhZ2VzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdGlmIChpb19tZW1fYWxsb2NfY29tcG91bmQocGFnZXMsIG1yLVx1MDAzZW5yX3BhZ2VzLCBzaXplLCBnZnApKSB7XG4rXHRpZiAoaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHBhZ2VzLCBtci1cdTAwM2Vucl9wYWdlcywgc2l6ZSwgZ2ZwLCB1c2VyKSkge1xuIFx0XHRtci1cdTAwM2VmbGFncyB8PSBJT19SRUdJT05fRl9TSU5HTEVfUkVGO1xuIFx0XHRnb3RvIGRvbmU7XG4gXHR9XG5AQCAtMjE3LDcgKzI0MCw3IEBAIGludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXHRpZiAocmVnLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfTUVNX1JFR0lPTl9UWVBFX1VTRVIpXG4gXHRcdHJldCA9IGlvX3JlZ2lvbl9waW5fcGFnZXMobXIsIHJlZyk7XG4gXHRlbHNlXG4tXHRcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCk7XG4rXHRcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCwgY3R4LVx1MDAzZXVzZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBvdXRfZnJlZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjU3LjQ1MDkyMTc0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4ODkwMzE0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqaW9fdXJpbmcgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2ggUmV2aWV3KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaW9fdXJpbmcvbWVtbWFwLmNgIHBhdGNoLiBJdCBzZWVtcyBsaWtlIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZSwgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIG1lbW9yeSBhY2NvdW50aW5nIGR1cmluZyBpb191cmluZyBtZW1vcnkgbWFwcGluZyBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIGBpb19tZW1fYWxsb2NfY29tcG91bmRgIHRvIGFjY2VwdCBhIGBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXJgIGFuZCBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIHRoZSBwYWdlIG92ZXJoZWFkIGludHJvZHVjZWQgYnkgYGdldF9vcmRlcigpYCByb3VuZGluZy4gVGhlbiwgdGhlIGNvcnJlc3BvbmRpbmcgYWRqdXN0bWVudCBpcyBtYWRlIGluIGBpb19mcmVlX3JlZ2lvbmAgdG8gdW4tYWNjb3VudCB0aG9zZSBleHRyYSBwYWdlcywgZW5zdXJpbmcgcHJvcGVyIGFjY291bnRpbmcuIEZpbmFsbHksIHRoZSBwYXRjaCB1cGRhdGVzIGBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXNgIHRvIHBhc3MgdGhlIHVzZXIgY29udGV4dCB0byBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYC5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjaGFuZ2UgYWZmZWN0cyBob3cgaW9fdXJpbmcgbWFuYWdlcyBhbmQgYWNjb3VudHMgZm9yIG1lbW9yeSwgd2hpY2gsIGFzIHdlIGtub3csIGNhbiBiZSBhIGZlcnRpbGUgZ3JvdW5kIGZvciBidWdzIGFuZCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0byB2YWxpZGF0ZSB0aGVzZSBjaGFuZ2VzLlxuXG5UbyBnZXQgc3RhcnRlZCB3aXRoIGZ1enppbmcsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGlzIGNoYW5nZSB0b3VjaGVzLiBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCBpcyBzdGF0aWMsIHNvIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGZpbGUuIEJ1dCBib3RoIGBpb19jcmVhdGVfcmVnaW9uYCBhbmQgYGlvX2ZyZWVfcmVnaW9uYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGFyZSBteSBwb2ludHMgb2YgZW50cnkuIE5vdywgbGV0IG1lIHF1aWNrbHkgc2NhbiBgaW9fdXJpbmcvbWVtbWFwLmNgIGl0c2VsZiB0byBjb25maXJtIHRoZXNlIGtleSBmdW5jdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjA2LjMzOTk1NTk5OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyMTA5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fY3JlYXRlX3JlZ2lvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvaW9fdXJpbmcuYz0yNzI2PXN0YXRpYyBfX2NvbGQgaW50IGlvX2FsbG9jYXRlX3NjcV91cmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jLTI3NDQtXFx0fVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6Mjc0NTpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNmN0eC1cXHUwMDNlcmluZ19yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9DUV9SSU5HKTtcXG5pb191cmluZy9pb191cmluZy5jLTI3NDYtXFx0aWYgKHJldClcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjc1OC1cXHR9XFxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyNzU5OlxcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcXHUwMDI2Y3R4LVxcdTAwM2VzcV9yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9TUUVTKTtcXG5pb191cmluZy9pb191cmluZy5jLTI3NjAtXFx0aWYgKHJldCkge1xcbi0tXFxuaW9fdXJpbmcva2J1Zi5jPTYyOT1pbnQgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnKVxcbi0tXFxuaW9fdXJpbmcva2J1Zi5jLTY3Ny1cXHR9XFxuaW9fdXJpbmcva2J1Zi5jOjY3ODpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNmJsLVxcdTAwM2VyZWdpb24sIFxcdTAwMjZyZCwgbW1hcF9vZmZzZXQpO1xcbmlvX3VyaW5nL2tidWYuYy02NzktXFx0aWYgKHJldClcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jPTE3ND1zdGF0aWMgaW50IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuLS1cXG5pb191cmluZy9tZW1tYXAuYy0yMDYtXFxuaW9fdXJpbmcvbWVtbWFwLmM6MjA3OmludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuaW9fdXJpbmcvbWVtbWFwLmMtMjA4LVxcdFxcdCAgICAgc3RydWN0IGlvX3VyaW5nX3JlZ2lvbl9kZXNjICpyZWcsXFxuLS1cXG5pb191cmluZy9tZW1tYXAuaD0yMD12b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKTtcXG5pb191cmluZy9tZW1tYXAuaDoyMTppbnQgaW9fY3JlYXRlX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbmlvX3VyaW5nL21lbW1hcC5oLTIyLVxcdFxcdCAgICAgc3RydWN0IGlvX3VyaW5nX3JlZ2lvbl9kZXNjICpyZWcsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTQ5OD1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNTMxLVxcdH1cXG5pb191cmluZy9yZWdpc3Rlci5jOjUzMjpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNm4ucmluZ19yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9DUV9SSU5HKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTUzMy1cXHRpZiAocmV0KVxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy01NjEtXFx0fVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NTYyOlxcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcXHUwMDI2bi5zcV9yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9TUUVTKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTU2My1cXHRpZiAocmV0KSB7XFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTcwMz1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX21lbV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICp1YXJnKVxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03MzItXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo3MzM6XFx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFxcdTAwMjZyZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX01BUF9PRkZfUEFSQU1fUkVHSU9OKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTczNC1cXHRpZiAocmV0KVxcbi0tXFxuaW9fdXJpbmcvemNyeC5jPTM4MD1zdGF0aWMgaW50IGlvX2FsbG9jYXRlX3JidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYy0zOTktXFxuaW9fdXJpbmcvemNyeC5jOjQwMDpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNmlmcS1cXHUwMDNlcnFfcmVnaW9uLCByZCwgbW1hcF9vZmZzZXQpO1xcbmlvX3VyaW5nL3pjcnguYy00MDEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjA2LjQ1NzE3MDgzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzAzNzYzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGlvX3VyaW5nIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmAsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIGludGVncmFsIHRvIHRoZSBtZW1vcnkgbWFwcGluZyB3aXRoaW4gaW9fdXJpbmcuIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhleSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gSSdtIHNlZWluZyBhIGJ1bmNoIG9mIG90aGVyIGtleSBmdW5jdGlvbnMg4oCTIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCwgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBgaW9fYWxsb2NhdGVfcmJ1Zl9yaW5nYCwgYW5kIGV2ZW4gYGlvX2FsbG9jYXRlX3NjcV91cmluZ3NgIOKAkyBhbGwgcmVseSBvbiBgaW9fY3JlYXRlX3JlZ2lvbmAuIFRoYXTigJlzIGEgc3Ryb25nIGluZGljYXRvciBvZiBpdHMgY2VudHJhbCByb2xlIGluIHJlc291cmNlIGFsbG9jYXRpb24uXG5cbkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHRoZXNlIG1lbW9yeSByZWdpb24gZnVuY3Rpb25zIGluIGlvX3VyaW5nLCBJIHRoaW5rIGl0J3MgYSBnb29kIGlkZWEgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIEtjb25maWcgc2V0dGluZ3MgdG8gbWFrZSBzdXJlIGlvX3VyaW5nIGlzIGFjdHVhbGx5IGVuYWJsZWQuIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlIHRoZSBmZWF0dXJlIGlzIGV2ZW4gcHJlc2VudCBpbiB0aGlzIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjEwLjQ4NzU1MDg0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ4NjI0MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT19VUklOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTE5MTA9Y29uZmlnIEFJT1xcbi0tXFxuaW5pdC9LY29uZmlnLTE5MTctXFxuaW5pdC9LY29uZmlnOjE5MTg6Y29uZmlnIElPX1VSSU5HXFxuaW5pdC9LY29uZmlnLTE5MTktXFx0Ym9vbCBcXFwiRW5hYmxlIElPIHVyaW5nIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbi0tXFxuaW5pdC9LY29uZmlnPTE5Mjc9Y29uZmlnIEdDT1ZfUFJPRklMRV9VUklOR1xcbi0tXFxuaW5pdC9LY29uZmlnLTE5MzktXFxuaW5pdC9LY29uZmlnOjE5NDA6Y29uZmlnIElPX1VSSU5HX01PQ0tfRklMRVxcbmluaXQvS2NvbmZpZy0xOTQxLVxcdHRyaXN0YXRlIFxcXCJFbmFibGUgaW9fdXJpbmcgbW9jayBmaWxlcyAoRXhwZXJpbWVudGFsKVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5pb191cmluZy9LY29uZmlnLTUtXFxuaW9fdXJpbmcvS2NvbmZpZzo2OmNvbmZpZyBJT19VUklOR19aQ1JYXFxuaW9fdXJpbmcvS2NvbmZpZy03LVxcdGRlZl9ib29sIHlcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctMTItXFxuaW9fdXJpbmcvS2NvbmZpZzoxMzpjb25maWcgSU9fVVJJTkdfQlBGXFxuaW9fdXJpbmcvS2NvbmZpZy0xNC1cXHRkZWZfYm9vbCB5XFxuLS1cXG5pb191cmluZy9LY29uZmlnLTE3LVxcbmlvX3VyaW5nL0tjb25maWc6MTg6Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcXG5pb191cmluZy9LY29uZmlnLTE5LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MTIuOTM2MTgyMjAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4OTg1NjQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSU9fVVJJTkcgTWVtb3J5IFJlZ2lvbiBNYW5hZ2VtZW50IERlZXAgRGl2ZSoqXG5cblJpZ2h0LCB0aGUgY29uZmlndXJhdGlvbiBpcyBkZWZpbml0ZWx5IHNldCB0byBgSU9fVVJJTkdgLCB0aGF0J3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBnb2VzIHRvIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyBpb191cmluZyBpbnRlcmFjdHMgd2l0aCBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBoYW5kbGVkIGluIGBpb191cmluZy9tZW1tYXAuY2AuIExldCdzIGRlbHZlIGludG8gdGhlIGNydWNpYWwgZnVuY3Rpb25zOiBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmAuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBlc3RhYmxpc2ggYW5kIHJlbGVhc2UgbWVtb3J5IHJlZ2lvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGlvX3VyaW5nLCBhbmQgSSdtIGtlZW4gdG8gZXhhbWluZSB0aGUgc3BlY2lmaWNzIG9mIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIG9yIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGVtcGxveWVkIGZvciBzYWZlIGFjY2Vzcy4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgY29kZSBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgYXQgdGhhdCBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjE2LjQyNjA0MTI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTMxOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX2ZyZWVfcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9pb191cmluZy5jPTIwNzg9c3RhdGljIHZvaWQgaW9fcmluZ3NfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9pb191cmluZy5jLTIwNzkte1xcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjA4MDpcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIFxcdTAwMjZjdHgtXFx1MDAzZXNxX3JlZ2lvbik7XFxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMDgxOlxcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cXHUwMDNldXNlciwgXFx1MDAyNmN0eC1cXHUwMDNlcmluZ19yZWdpb24pO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjA4Mi1cXHRjdHgtXFx1MDAzZXJpbmdzID0gTlVMTDtcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM9MjE2Mz1zdGF0aWMgX19jb2xkIHZvaWQgaW9fcmluZ19jdHhfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE3NS1cXHRpb19kZXN0cm95X2J1ZmZlcnMoY3R4KTtcXG5pb191cmluZy9pb191cmluZy5jOjIxNzY6XFx0aW9fZnJlZV9yZWdpb24oY3R4LVxcdTAwM2V1c2VyLCBcXHUwMDI2Y3R4LVxcdTAwM2VwYXJhbV9yZWdpb24pO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE3Ny1cXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNldXJpbmdfbG9jayk7XFxuLS1cXG5pb191cmluZy9rYnVmLmM9NDU4PXN0YXRpYyB2b2lkIGlvX3B1dF9ibChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgc3RydWN0IGlvX2J1ZmZlcl9saXN0ICpibClcXG4tLVxcbmlvX3VyaW5nL2tidWYuYy00NjAtXFx0aWYgKGJsLVxcdTAwM2VmbGFncyBcXHUwMDI2IElPQkxfQlVGX1JJTkcpXFxuaW9fdXJpbmcva2J1Zi5jOjQ2MTpcXHRcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIFxcdTAwMjZibC1cXHUwMDNlcmVnaW9uKTtcXG5pb191cmluZy9rYnVmLmMtNDYyLVxcdGVsc2VcXG4tLVxcbmlvX3VyaW5nL2tidWYuYz02Mjk9aW50IGlvX3JlZ2lzdGVyX3BidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL2tidWYuYy03MTAtZmFpbDpcXG5pb191cmluZy9rYnVmLmM6NzExOlxcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cXHUwMDNldXNlciwgXFx1MDAyNmJsLVxcdTAwM2VyZWdpb24pO1xcbmlvX3VyaW5nL2tidWYuYy03MTItXFx0a2ZyZWUoYmwpO1xcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmM9OTc9ZW51bSB7XFxuLS1cXG5pb191cmluZy9tZW1tYXAuYy0xMDUtXFxuaW9fdXJpbmcvbWVtbWFwLmM6MTA2OnZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpXFxuaW9fdXJpbmcvbWVtbWFwLmMtMTA3LXtcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jPTIwNz1pbnQgaW9fY3JlYXRlX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmMtMjUxLW91dF9mcmVlOlxcbmlvX3VyaW5nL21lbW1hcC5jOjI1MjpcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIG1yKTtcXG5pb191cmluZy9tZW1tYXAuYy0yNTMtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jPTQxMT1pbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5pb191cmluZy9tZW1tYXAuYy00MjktXFx0LypcXG5pb191cmluZy9tZW1tYXAuYzo0MzA6XFx0ICogUGluIHRoZSBwYWdlcyBzbyBpb19mcmVlX3JlZ2lvbigpJ3MgcmVsZWFzZV9wYWdlcygpIGRvZXMgbm90XFxuaW9fdXJpbmcvbWVtbWFwLmMtNDMxLVxcdCAqIGRyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHdoaWxlIHRoaXMgVk1BIGV4aXN0cy4gZGVsZXRlX3ZtYSgpXFxuLS1cXG5pb191cmluZy9tZW1tYXAuaD0xOD1pbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmlvX3VyaW5nL21lbW1hcC5oLTE5LVxcbmlvX3VyaW5nL21lbW1hcC5oOjIwOnZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpO1xcbmlvX3VyaW5nL21lbW1hcC5oLTIxLWludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTQ4MD1zdGF0aWMgdm9pZCBpb19yZWdpc3Rlcl9mcmVlX3JpbmdzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy00ODIte1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NDgzOlxcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cXHUwMDNldXNlciwgXFx1MDAyNnItXFx1MDAzZXNxX3JlZ2lvbik7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo0ODQ6XFx0aW9fZnJlZV9yZWdpb24oY3R4LVxcdTAwM2V1c2VyLCBcXHUwMDI2ci1cXHUwMDNlcmluZ19yZWdpb24pO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNDg1LX1cXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmM9NzAzPXN0YXRpYyBpbnQgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKnVhcmcpXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTczNi1cXHRpZiAoY29weV90b191c2VyKHJkX3VwdHIsIFxcdTAwMjZyZCwgc2l6ZW9mKHJkKSkpIHtcXG5pb191cmluZy9yZWdpc3Rlci5jOjczNzpcXHRcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIFxcdTAwMjZyZWdpb24pO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzM4LVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxuaW9fdXJpbmcvemNyeC5jPTQxMj1zdGF0aWMgdm9pZCBpb19mcmVlX3JidWZfcmluZyhzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSlcXG5pb191cmluZy96Y3J4LmMtNDEzLXtcXG5pb191cmluZy96Y3J4LmM6NDE0OlxcdGlvX2ZyZWVfcmVnaW9uKGlmcS1cXHUwMDNldXNlciwgXFx1MDAyNmlmcS1cXHUwMDNlcnFfcmVnaW9uKTtcXG5pb191cmluZy96Y3J4LmMtNDE1LVxcdGlmcS1cXHUwMDNlcnEucmluZyA9IElPX1VSSU5HX1BUUl9QT0lTT047XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjE2LjQ4ODE3ODU0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzQ4ODI4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgaW4gYGlvX21lbV9hbGxvY19jb21wb3VuZGAuIFRoZSBjb3JlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhlIHdheSB3ZSdyZSBhbGxvY2F0aW5nIHBhZ2VzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYGFsbG9jX3BhZ2VzKGdmcCwgb3JkZXIpYCBhbmQgdGhlbiBpbmNyZW1lbnRzIGBwYWdlc1tpXSA9IHBhZ2UgKyBpYC4gVGhlIHNuZWFreSBpc3N1ZSBoZXJlIGlzIGBnZXRfb3JkZXIoKWAg4oCTIGl0J3Mgcm91bmRpbmcgdXAsIG1lYW5pbmcgdGhlIGFsbG9jYXRpb24gbWlnaHQgYmUgKmxhcmdlciogdGhhbiB3aGF0IHRoZSBleHBvc2VkIHJlZ2lvbiBhY3R1YWxseSBuZWVkcy4gV2UncmUgZWZmZWN0aXZlbHkgcmVzZXJ2aW5nIG1vcmUgbWVtb3J5IHRoYW4gd2UncmUgdXNpbmcsIGFuZCB0aGF0J3Mgbm90IGlkZWFsLlxuXG5UaGUgcGF0Y2ggc2VlbXMgdG8gYmUgY29ycmVjdGluZyB0aGlzIGJ5IHNvbWVob3cgYWNjb3VudGluZyBmb3IgdGhlc2UgXCJleHRyYVwiIHBhZ2VzLCBwcmVzdW1hYmx5IGZyZWVpbmcgdGhlbSBjb3JyZWN0bHkgaW4gYGlvX2ZyZWVfcmVnaW9uYC4gVGhhdCdzIHdoZXJlIHRoZSBmb2N1cyBzaG91bGQgYmU6IGhvdyBkbyB3ZSB0cmFjayB0aGVzZSBleHRyYSBwYWdlcywgYW5kIGhvdyBhcmUgd2UgZW5zdXJpbmcgdGhleSBnZXQgcmVsZWFzZWQgd2hlbiB0aGUgcmVnaW9uIGlzIGZyZWVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGludGVyYWN0IHRvIGJlIGNlcnRhaW4uXG5cbk15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgLCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCBgaW9fYWxsb2NhdGVfcmJ1Zl9yaW5nYC4gVGhlIGZpeCAqc2hvdWxkKiBiZSBpc29sYXRlZCB0byB0aGUgcmVnaW9uIG1hbmFnZW1lbnQgZnVuY3Rpb25zLCB3aGljaCBpcyBnb29kLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAgaXMgdXNlci1leHBvc2VkIGJlY2F1c2UgdGhhdCB3b3VsZCBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBmYXIgbW9yZSBhY2Nlc3NpYmxlLCBhbmQgdGh1cywgbW9yZSBkYW5nZXJvdXMuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCBpcywgdGhyb3VnaCBgaW9fdXJpbmdfcmVnaXN0ZXJgIHdpdGggdGhlIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgZmxhZy4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjIyLjQ2MzA2MzQyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEwMjk3NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU9SSU5HX1JFR0lTVEVSX01FTV9SRUdJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL3JlZ2lzdGVyLmM9NzUwPXN0YXRpYyBpbnQgX19pb191cmluZ19yZWdpc3RlcihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgb3Bjb2RlLFxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDktXFx0XFx0YnJlYWs7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo5NTA6XFx0Y2FzZSBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTjpcXG5pb191cmluZy9yZWdpc3Rlci5jLTk1MS1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyMi41NDQxMDQ0NjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MzIwNDc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Ugbm90ZXMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRXhhbWluaW5nIEkvTyBSaW5nIFJlZ2lzdHJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgaXMgZGVmaW5pdGVseSBleHBvc2VkIOKAkyBnb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3csIGxldCdzIHNlZSBob3cgdGhlIHJlZ2lzdHJhdGlvbiBvZiB2YXJpb3VzIHJpbmcgc3RydWN0dXJlcyBpcyBoYW5kbGVkLiBJIHNlZSB0aGF0IGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgIGlzIHNwZWNpZmljYWxseSBpbnZva2VkIHdoZW4gdGhlIGZsYWcgYElPUklOR19SRUdJU1RFUl9QQlVGX1JJTkdgIGlzIHNldC4gU2ltaWxhcmx5LCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCBpcyBjb3JyZWN0bHkgY2FsbGVkIHdpdGggYElPUklOR19SRUdJU1RFUl9SRVNJWkVfUklOR1NgLiBUaGlzIGFsbCBhbGlnbnMgd2l0aCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIHJlZ2lzdGVyaW5nIHRob3NlIGJ1ZmZlciBhbmQgcmVzaXppbmcgcmluZyBjb21wb25lbnRzLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmluZyBidWZmZXJzIHRoZW1zZWx2ZXMgYXJlIGFsbG9jYXRlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpb19hbGxvY2F0ZV9yYnVmX3JpbmdgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgb3ZlcmFsbCByZWdpc3RyYXRpb24gYW5kIGFsbG9jYXRpb24gc2NoZW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgcmVnaXN0cmF0aW9uIGNhbGxzLCBzbyBJIGNhbiBlbnN1cmUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHNvbGlkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyNi45MTczMTIwNTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzk3MjgyOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fYWxsb2NhdGVfcmJ1Zl9yaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy96Y3J4LmM9MzczPXN0YXRpYyB2b2lkIGlvX2ZpbGxfemNyeF9vZmZzZXRzKHN0cnVjdCBpb191cmluZ196Y3J4X29mZnNldHMgKm9mZnNldHMpXFxuLS1cXG5pb191cmluZy96Y3J4LmMtMzc5LVxcbmlvX3VyaW5nL3pjcnguYzozODA6c3RhdGljIGludCBpb19hbGxvY2F0ZV9yYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5jLTM4MS1cXHRcXHRcXHRcXHQgc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuLS1cXG5pb191cmluZy96Y3J4LmM9ODg0PWludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTk2OS1cXG5pb191cmluZy96Y3J4LmM6OTcwOlxcdHJldCA9IGlvX2FsbG9jYXRlX3JidWZfcmluZyhjdHgsIGlmcSwgXFx1MDAyNnJlZywgXFx1MDAyNnJkLCBpZCk7XFxuaW9fdXJpbmcvemNyeC5jLTk3MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyOC4xNTcwNTc5MjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MzUzOTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkvTyBSaW5nIFpDUlggUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIGJlaW5nIGNhbGxlZCB3aXRoIGBJT1JJTkdfUkVHSVNURVJfWkNSWGAuIFRoYXQncyB0aGUga2V5LiBUaGlzIG1lYW5zIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIGltcGFjdCBvZiB0aGVzZSBjYWxscyB3aXRoaW4gdGhlIEkvTyByaW5nIGZyYW1ld29yay4gR2l2ZW4gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGlvX2NyZWF0ZV9yZWdpb25gLCBgaW9fZnJlZV9yZWdpb25gLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSB0YXJnZXQgYGlvX3JlZ2lzdGVyX3pjcnhgIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLlxuXG5UaGUgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBJT19VUklOR2AsIHdoaWNoIGlzIHN0YW5kYXJkLlxuXG5CdXQgSSByZWFsbHkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIGBJT19VUklOR19aQ1JYYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhY3RpdmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY3VycmVudCBjYWxsLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4uLiBZZXMsIGZvdW5kIGl0LiBHb29kLiBOb3csIGlzIGl0IHVzZXItY29uZmlndXJhYmxlPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gd2lsbCBkZXRlcm1pbmUgaG93IHRoaXMgZmVhdHVyZSBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgdG8gcHJvdmlkZSBhIG1lYW5pbmdmdWwgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoaXMgbWVhbnMgdG8gdGhlIHVzZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MzIuOTMwNjAwNjk3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU5Mzc4MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPX1VSSU5HX1pDUlhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL0tjb25maWctNS1cXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcXG5pb191cmluZy9LY29uZmlnLTctXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzozMy4wNTY1NDI5NThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NzI2NjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKklPX1VSSU5HIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBgZGVmX2Jvb2wgeWAgZm9yIGB5YCBtZWFucyBpdCdzIHN0cmFpZ2h0Zm9yd2FyZCAtIGlmIGBJT19VUklOR2AgaXMgdXAsIGFuZCBpdHMgcHJlcmVxdWlzaXRlIGhhcmR3YXJlIGFuZCBzZXR0aW5ncyBhcmUgbWV0LCB0aGVuIGB5YCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQuIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIHBhcnNlIHRoZXJlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZ28gbG9vayBhdCBgaW9fdXJpbmcvS2NvbmZpZ2AuIEkgbmVlZCB0byBwcmVjaXNlbHkgZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPX1VSSU5HX1pDUlhgLiBXZSBjYW4ndCByZWx5IG9uIGFzc3VtcHRpb25zIGluIHRoaXMgZ2FtZS4gSSBuZWVkIHRvIGtub3cgdGhlIGV4YWN0IGJ1aWxkIGNvbmZpZ3VyYXRpb24gaW1wYWN0LiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHNwZWxscyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzozNi41MDM4MTI1MDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpb191cmluZy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIGlvX3VyaW5nIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIElPX1VSSU5HX1pDUlhcXG4gICA3OlxcdFxcdGRlZl9ib29sIHlcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU9fVVJJTkdcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gUEFHRV9QT09MXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gTkVUX1JYX0JVU1lfUE9MTFxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgSU9fVVJJTkdfQlBGXFxuICAxNDpcXHRcXHRkZWZfYm9vbCB5XFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIEJQRlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcXG4gIDE5OlxcdFxcdGRlZl9ib29sIHlcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gSU9fVVJJTkdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MzYuNTA2NzU4ODk5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzAxMDI5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVwZW5kZW5jaWVzIGFuZCBDb25maWd1cmF0aW9uIGZvciBJT19VUklOR19aQ1JYKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYElPX1VSSU5HX1pDUlhgLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBmZWF0dXJlIGlzIGludGVydHdpbmVkIHdpdGggc2V2ZXJhbCBvdGhlcnM6IHNwZWNpZmljYWxseSwgYElPX1VSSU5HYCwgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHdlIG5lZWQgdG8gYmUgcmVhbGx5IGNhdXRpb3VzIGFib3V0IGRlcGVuZGVuY2llcy4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCB3ZSBjb3VsZCBpbmNsdWRlIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAgd2l0aGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCwgYnV0IGhvbmVzdGx5LCBgSU9fVVJJTkdgIGl0c2VsZiBpcyBwcm9iYWJseSB0aGUgbW9zdCBjcml0aWNhbCBkZXBlbmRlbmN5LCBhbmQgaXMgbGlrZWx5IHRoZSBjb3JlIGRlcGVuZGVuY3kuIEl0J3MgdGhlIGJpZyBvbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdHJpcCB1cCBvbiBhbnkgc3VidGxlIGRlcGVuZGVuY2llcy5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgbGV0J3MgZ28gY2hlY2sgdGhlIG51YW5jZXMgb2YgYE5FVF9SWF9CVVNZX1BPTExgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTExLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NDAuMzc2ODY2NjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDUzMDQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1JYX0JVU1lfUE9MTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTM0Mj1jb25maWcgQ0dST1VQX05FVF9DTEFTU0lEXFxuLS1cXG5uZXQvS2NvbmZpZy0zNDktXFxubmV0L0tjb25maWc6MzUwOmNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXFxubmV0L0tjb25maWctMzUxLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NDAuNDkxNDA1NjkyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MjA1MDI0MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6ODM4MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NTQuNjk2NDMyOTU3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU1MjUyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ4Nz1jb25maWcgTkVUX0RFVkxJTktcXG4tLVxcbm5ldC9LY29uZmlnLTQ5MC1cXG5uZXQvS2NvbmZpZzo0OTE6Y29uZmlnIFBBR0VfUE9PTFxcbm5ldC9LY29uZmlnLTQ5Mi1cXHRib29sXFxubmV0L0tjb25maWctNDkzLVxcbm5ldC9LY29uZmlnOjQ5NDpjb25maWcgUEFHRV9QT09MX1NUQVRTXFxubmV0L0tjb25maWctNDk1LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzo1NC45MjE5NjMzNjFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3OTA4MzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5FVF9SWF9CVVNZX1BPTExgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgYm9vbGVhbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkncmUgYmVpbmcgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMsIG5vdCBkaXJlY3RseSBwcm9tcHRlZCBmb3IuIFRoaXMgbWVhbnMgdGhlaXIgdmFsdWVzIGFyZSBiZWluZyBkZXRlcm1pbmVkIGluZGlyZWN0bHksIHByb2JhYmx5IGJ5IGRlcGVuZGVuY2llcyBvciBvdGhlciBzZXR0aW5ncy4gTXkgZm9jdXMgbm93IGlzIG9uIGZpZ3VyaW5nIG91dCAqd2hhdCogZXhhY3RseSBpcyBkcml2aW5nIHRoZSBzZWxlY3Rpb24gb2YgYE5FVF9SWF9CVVNZX1BPTExgLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmNpZXMgb2YgdGhlc2Uga2luZHMgb2YgZmxhZ3MgaXMgY3JpdGljYWwgZm9yIGRlYnVnZ2luZyBhbmQgZm9yIG9wdGltaXppbmcgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbi4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBjaGFpbiB0aGF0IGxlYWRzIHRvIHRoaXMgc2V0dGluZyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIHdpbGwgZ2l2ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aWRlciBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NDcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzo1OC44MDEwNDk3OTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDYxMTU5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9SWF9CVVNZX1BPTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NTguOTUxNjY3NTEyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDgyMDc3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIFJYIEJ1c3kgUG9sbGluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBuZXR3b3JrIHJlY2VpdmUgYnVzeSBwb2xsaW5nLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIGFsd2F5cyB0byBkaXZlIGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgTkVUX1JYX0JVU1lfUE9MTGAgaXMgdXNlZC4gSW5zdGVhZCBvZiBhIGdlbmVyYWwgc2VhcmNoLCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGBncmVwYCBpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IHJlbGV2YW50IHBsYWNlIHRvIHN0YXJ0LiBJJ20gbG9va2luZyBmb3IgYWxsIGluc3RhbmNlcyBvZiBgTkVUX1JYX0JVU1lfUE9MTGAsIHRvIHNlZSB3aGVyZSBhbmQgaG93IGl0J3MgZGVmaW5lZCBhbmQgdXRpbGl6ZWQgd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBUaGlzIHNob3VsZCBwcm92aWRlIGluc2lnaHRzIGludG8gdGhlIGNpcmN1bXN0YW5jZXMgd2hlcmUgYnVzeSBwb2xsaW5nIGlzIGltcGxlbWVudGVkLCBhbmQgaWRlYWxseSwgc2hlZCBsaWdodCBvbiBhbnkgc3BlY2lmaWMgZGV2aWNlcyBvciBpbnRlcmZhY2VzIGl0J3MgdGFyZ2V0aW5nLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIHF1aWNrZXIgdGhhbiBhIGJyb2FkIHNlYXJjaCwgbGVhZGluZyBtZSBzdHJhaWdodCB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGViYXNlLiBUaGVuIEkgY2FuIHN0YXJ0IHBpZWNpbmcgdG9nZXRoZXIgdGhlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NzMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODowMi42NTk4Nzc3ODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzUwODAxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfUlhfQlVTWV9QT0xMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9LY29uZmlnLTM0OS1cXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcXG5uZXQvS2NvbmZpZy0zNTEtXFx0Ym9vbFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9Njg1MT1zdGF0aWMgdm9pZCBza2JfZGVmZXJfZnJlZV9mbHVzaCh2b2lkKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNjg3Mi1cXG5uZXQvY29yZS9kZXYuYzo2ODczOiNpZiBkZWZpbmVkKENPTkZJR19ORVRfUlhfQlVTWV9QT0xMKVxcbm5ldC9jb3JlL2Rldi5jLTY4NzQtXFxuLS1cXG5uZXQvY29yZS9kZXYuYz03MDYxPXZvaWQgbmFwaV9yZXN1bWVfaXJxcyh1bnNpZ25lZCBpbnQgbmFwaV9pZClcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTcwODEtXFxubmV0L2NvcmUvZGV2LmM6NzA4MjojZW5kaWYgLyogQ09ORklHX05FVF9SWF9CVVNZX1BPTEwgKi9cXG5uZXQvY29yZS9kZXYuYy03MDgzLVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9OTg3OT1zdGF0aWMgdTMyIGJwZl9jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEwMDcxLVxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IF9fc2tfYnVmZiwgbmFwaV9pZCk6XFxubmV0L2NvcmUvZmlsdGVyLmM6MTAwNzI6I2lmIGRlZmluZWQoQ09ORklHX05FVF9SWF9CVVNZX1BPTEwpXFxubmV0L2NvcmUvZmlsdGVyLmMtMTAwNzMtXFx0XFx0Kmluc24rKyA9IEJQRl9MRFhfTUVNKEJQRl9XLCBzaS1cXHUwMDNlZHN0X3JlZywgc2ktXFx1MDAzZXNyY19yZWcsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xNTU2PXN0YXRpYyB2b2lkIF9fY29weV9za2JfaGVhZGVyKHN0cnVjdCBza19idWZmICpuZXcsIGNvbnN0IHN0cnVjdCBza19idWZmICpvbGQpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xNTg5LSNlbmRpZlxcbm5ldC9jb3JlL3NrYnVmZi5jOjE1OTA6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L2NvcmUvc2tidWZmLmMtMTU5MS1cXHRDSEVDS19TS0JfRklFTEQobmFwaV9pZCk7XFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9MTE5NT1pbnQgc2tfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvY29yZS9zb2NrLmMtMTIzMy1cXHRcXHRyZXR1cm4gLUVOT1BST1RPT1BUO1xcbm5ldC9jb3JlL3NvY2suYzoxMjM0OiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxcbm5ldC9jb3JlL3NvY2suYy0xMjM1LVxcdGNhc2UgU09fQlVTWV9QT0xMOlxcbi0tXFxubmV0L2NvcmUvc29jay5jPTE3MzI9aW50IHNrX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2NvcmUvc29jay5jLTIwNjYtXFxubmV0L2NvcmUvc29jay5jOjIwNjc6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L2NvcmUvc29jay5jLTIwNjgtXFx0Y2FzZSBTT19CVVNZX1BPTEw6XFxuLS1cXG5uZXQvY29yZS9zb2NrLmMtMjEwNC1cXG5uZXQvY29yZS9zb2NrLmM6MjEwNTojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcXG5uZXQvY29yZS9zb2NrLmMtMjEwNi1cXHRjYXNlIFNPX0lOQ09NSU5HX05BUElfSUQ6XFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9Mzc0ND12b2lkIHNvY2tfaW5pdF9kYXRhX3VpZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29jayAqc2ssIGt1aWRfdCB1aWQpXFxuLS1cXG5uZXQvY29yZS9zb2NrLmMtMzc5My1cXG5uZXQvY29yZS9zb2NrLmM6Mzc5NDojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcXG5uZXQvY29yZS9zb2NrLmMtMzc5NS1cXHRzay1cXHUwMDNlc2tfbmFwaV9pZFxcdFxcdD1cXHQwO1xcbi0tXFxubmV0L2NvcmUvc29jay5jPTQ0NjE9c3Vic3lzX2luaXRjYWxsKHByb3RvX2luaXQpO1xcbi0tXFxubmV0L2NvcmUvc29jay5jLTQ0NjQtXFxubmV0L2NvcmUvc29jay5jOjQ0NjU6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L2NvcmUvc29jay5jLTQ0NjYtYm9vbCBza19idXN5X2xvb3BfZW5kKHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZSlcXG4tLVxcbm5ldC9jb3JlL3NvY2suYz00NDc5PUVYUE9SVF9TWU1CT0woc2tfYnVzeV9sb29wX2VuZCk7XFxubmV0L2NvcmUvc29jay5jOjQ0ODA6I2VuZGlmIC8qIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMICovXFxubmV0L2NvcmUvc29jay5jLTQ0ODEtXFxuLS1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz00MzA9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmV0X2NvcmVfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTU3MS0jZW5kaWYgLyogQ09ORklHX05FVF9GTE9XX0xJTUlUICovXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NTcyOiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTU3My1cXHR7XFxuLS1cXG5uZXQvc29ja2V0LmMtMTE1LVxcbm5ldC9zb2NrZXQuYzoxMTY6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L3NvY2tldC5jLTExNy11bnNpZ25lZCBpbnQgc3lzY3RsX25ldF9idXN5X3JlYWQgX19yZWFkX21vc3RseTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9MTMxNj1zdGF0aWMgYm9vbCB4c2tfbm9fd2FrZXVwKHN0cnVjdCBzb2NrICpzaylcXG5uZXQveGRwL3hzay5jLTEzMTcte1xcbm5ldC94ZHAveHNrLmM6MTMxODojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcXG5uZXQveGRwL3hzay5jLTEzMTktXFx0LyogUHJlZmVyIGJ1c3ktcG9sbGluZywgc2tpcCB0aGUgd2FrZXVwLiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODowMi43NjczODk5ODdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ4ODU5OTczNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxMDI5OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6MTcuNjUzMzkwMjQ1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDEyNjE2MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz0zNDI9Y29uZmlnIENHUk9VUF9ORVRfQ0xBU1NJRFxcbi0tXFxubmV0L0tjb25maWctMzQ5LVxcbm5ldC9LY29uZmlnOjM1MDpjb25maWcgTkVUX1JYX0JVU1lfUE9MTFxcbm5ldC9LY29uZmlnLTM1MS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjIwLjA2NjAxMzk0OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE1NjI2MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBgTkVUX1JYX0JVU1lfUE9MTGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhpcyBgTkVUX1JYX0JVU1lfUE9MTGAgb3B0aW9uLCBhbmQgaXQncyBwb3BwaW5nIHVwIGFnYWluLiBJdCdzIHRpbWUgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgaG93IHRoaXMgaXMgYmVpbmcgc2VsZWN0ZWQuIFdoYXQncyB0aGUgZGVjaXNpb24gdHJlZSBoZXJlPyBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW5mbHVlbmNpbmcgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24/IElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBuZXR3b3JrIGRyaXZlciwgb3IgYSBicm9hZGVyIGFyY2hpdGVjdHVyYWwgY2hvaWNlPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBsZWFkcyB0byB0aGlzIHNldHRpbmcgYmVpbmcgZW5hYmxlZC4gVGhlIGdvYWwgaXMgYSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjI0LjU4MTY0MzEwNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MjYwMTUxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9SWF9CVVNZX1BPTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODoyNi43NDQyNTAwNTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNTIwMTQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ3VyaW91cyBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGBORVRfUlhfQlVTWV9QT0xMYCB0aGluZy4uLiBpdCdzIG5vdCBwcm9tcHRpbmcgbWUgZm9yIGlucHV0LCBhbmQgaXQncyBub3QgYmVpbmcgc2VsZWN0ZWQgYnkgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGhhdCdzIHVudXN1YWwuIFVzdWFsbHksIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGRlcGVuZGVuY3kgb3IgY29uZGl0aW9uYWwgc2VsZWN0aW9uIGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9wdGlvbiBleGlzdHMgYW5kIGhvdyBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQsIGV2ZW4gaWYgaXQncyBpbXBsaWNpdGx5IGVuYWJsZWQgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9LY29uZmlnYCBmaWxlIGFuZCBzdGFydCBhcm91bmQgbGluZSAzNTAuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhhdCBzZWN0aW9uLiBIb3BlZnVsbHksIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHdpbGwgc2hlZCBzb21lIGxpZ2h0IG9uIHRoaXMgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2MDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODozMS4yNjk0NTM1NzNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzQ1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzQ1OlxcdFxcdHNlbGVjdCBTT0NLX0NHUk9VUF9EQVRBXFxuIDM0NjpcXHRcXHRoZWxwXFxuIDM0NzpcXHRcXHQgIENncm91cCBzdWJzeXN0ZW0gZm9yIHVzZSBhcyBnZW5lcmFsIHB1cnBvc2Ugc29ja2V0IGNsYXNzaWQgbWFya2VyIHRoYXQgaXNcXG4gMzQ4OlxcdFxcdCAgYmVpbmcgdXNlZCBpbiBjbHNfY2dyb3VwIGFuZCBmb3IgbmV0ZmlsdGVyIG1hdGNoaW5nLlxcbiAzNDk6XFx0XFxuIDM1MDpcXHRjb25maWcgTkVUX1JYX0JVU1lfUE9MTFxcbiAzNTE6XFx0XFx0Ym9vbFxcbiAzNTI6XFx0XFx0ZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUIFxcdTAwMjZcXHUwMDI2ICFORVRDT05TT0xFKVxcbiAzNTM6XFx0XFxuIDM1NDpcXHRjb25maWcgQlFMXFxuIDM1NTpcXHRcXHRib29sXFxuIDM1NjpcXHRcXHRwcm9tcHQgXFxcIkVuYWJsZSBCeXRlIFF1ZXVlIExpbWl0c1xcXCJcXG4gMzU3OlxcdFxcdGRlcGVuZHMgb24gU1lTRlNcXG4gMzU4OlxcdFxcdHNlbGVjdCBEUUxcXG4gMzU5OlxcdFxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODozMS4yNjk1MzMyMTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwNDIxNjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlZmF1bHRzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBkZWZhdWx0IHNldHRpbmcuIFRoZSBpbml0aWFsIHRob3VnaHQsIGBkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXHUwMDI2XHUwMDI2ICFORVRDT05TT0xFKWAsIGRpcmVjdGx5IHRyYW5zbGF0ZXMgdG8gXCJpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdC5cIiBNYWtlcyBzZW5zZSwgaXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY29uZGl0aW9uYWwgbG9naWMuIElmIFJlYWwtVGltZSBQcmVlbXB0aW9uIGlzbid0IGVuYWJsZWQsIGl0IGRlZmF1bHRzIHRvICd5JywgKm9yKiBpZiBSZWFsLVRpbWUgUHJlZW1wdGlvbiAqaXMqIGVuYWJsZWQsIGFuZCAqTmV0Y29uc29sZSBpcyBub3QqLCBpdCBhbHNvIGRlZmF1bHRzIHRvICd5Jy4gVGhhdCdzIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgdGhhdCBzY2VuYXJpby5cblxuTm93LCBhIG1vcmUgY3J1Y2lhbCBxdWVzdGlvbiBhcmlzZXM6IFdoYXQgYWJvdXQgYFBBR0VfUE9PTGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhpcyBpbml0aWFsIGRlZmF1bHQuIFdoZXJlIGRvZXMgYFBBR0VfUE9PTGAgZml0IGludG8gYWxsIHRoaXM/IElzIGl0IGRlcGVuZGVudCBvbiB0aGlzIGRlZmF1bHQsIG9yIGlzIHRoaXMgdGhlIGFudGVjZWRlbnQgdGhhdCBmZWVkcyBpbnRvIHRoZSBkZXRlcm1pbmF0aW9uIG9mIHRoZSBgUEFHRV9QT09MYCBvcHRpb24/IEkgbmVlZCB0byBhbmFseXplIGl0cyBpbnRlcmRlcGVuZGVuY2llcywgaXQncyB1c2UgY2FzZXMsIGFuZCBob3cgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24gbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBrZXJuZWwgY29uZmlndXJhdGlvbiwgZXNwZWNpYWxseSByZWdhcmRpbmcgcmVhbC10aW1lIGNvbnN0cmFpbnRzIGFuZCBuZXR3b3JrIGRlYnVnZ2luZy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBudWFuY2UgbGllcywgdW5kZXJzdGFuZGluZyBob3cgdGhlc2Ugc2VlbWluZ2x5IHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGludGVycmVsYXRlIGFuZCBpbmZsdWVuY2UgcGVyZm9ybWFuY2UgYW5kIHN5c3RlbSBzdGFiaWxpdHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDYzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODozNS44NzM3NTIyMDRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4NSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4NTpcXHRcXHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxcbiA0ODY6XFx0XFxuIDQ4NzpcXHRjb25maWcgTkVUX0RFVkxJTktcXG4gNDg4OlxcdFxcdGJvb2xcXG4gNDg5OlxcdFxcdGRlZmF1bHQgblxcbiA0OTA6XFx0XFxuIDQ5MTpcXHRjb25maWcgUEFHRV9QT09MXFxuIDQ5MjpcXHRcXHRib29sXFxuIDQ5MzpcXHRcXG4gNDk0OlxcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG4gNDk1OlxcdFxcdGRlZmF1bHQgblxcbiA0OTY6XFx0XFx0Ym9vbCBcXFwiUGFnZSBwb29sIHN0YXRzXFxcIlxcbiA0OTc6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gNDk4OlxcdFxcdGhlbHBcXG4gNDk5OlxcdFxcdCAgRW5hYmxlIHBhZ2UgcG9vbCBzdGF0aXN0aWNzIHRvIHRyYWNrIHBhZ2UgYWxsb2NhdGlvbiBhbmQgcmVjeWNsaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjM1Ljg3Mzg1NTIxNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQxMTA4MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFBBR0VfUE9PTCBGbGFnKipcblxuUmlnaHQsIHNvIGBQQUdFX1BPT0xgIGlzIGVzc2VudGlhbGx5IGEgYm9vbGVhbiBmbGFnLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbWVjaGFuaXNtcyBpbiB0aGUgc3lzdGVtIGFyZSBtYWtpbmcgZGVjaXNpb25zIGJhc2VkIG9uIHRoaXMgZmxhZywgd2hpY2ggbWVhbnMgSSBoYXZlIHRvIGlkZW50aWZ5IHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmVzdWx0aW5nIGJlaGF2aW9yLiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nIGZvciBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBtYWNyb3MsIG9yIGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVmZXJlbmNlIGBQQUdFX1BPT0xgLiBVbmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciB3aWxsIGJlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1ODgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjM5LjcxNDk2NjMyOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NTI2MDQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTQzNT1jb25maWcgVkVUSFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDM2LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIGV0aGVybmV0IHBhaXIgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDctXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDktXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODctXFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEyLVxcdHNlbGVjdCBORVRfU0hBUEVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZz0xOD1jb25maWcgTkVUX0FJUk9IQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjEtXFx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZz0xOD1jb25maWcgQUxJQkFCQV9FRUFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIDY0QklUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz03Mj1jb25maWcgQkNNR0VORVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODAtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODItXFx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjA3PWNvbmZpZyBCTlhUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxMy1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTUtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYxLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2My1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNjk9Y29uZmlnIEJDTUFTUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzUtXFx0c2VsZWN0IE1ESU9fQkNNX1VOSU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc9Nj1jb25maWcgRU5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTEwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc9MTk9Y29uZmlnIFRTTkVQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTIzLVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTIzPWNvbmZpZyBGRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMxLVxcdHNlbGVjdCBGSVhFRF9QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzMtXFx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xOD1jb25maWcgR1ZFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTkxPWNvbmZpZyBITlMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9MTQ3PWNvbmZpZyBISUJNQ0dFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTMtXFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnPTY9Y29uZmlnIEhJTklDM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE0LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZz00PWNvbmZpZyBMSUJFVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJDb21tb24gRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKVxcXCIgaWYgQ09NUElMRV9URVNUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc6NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTYzLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTAtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNi1cXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIwLVxcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjMtXFx0c2VsZWN0IFBDU19NVEtfTFlOWElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZz02PWNvbmZpZyBNTFg0X0VOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjEwOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMTEtXFx0c2VsZWN0IE1MWDRfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9Mjk9Y29uZmlnIE1MWDVfQ09SRV9FTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXFx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFxcdTAwMjZcXHUwMDI2IEVUSEVSTkVUIFxcdTAwMjZcXHUwMDI2IElORVQgXFx1MDAyNlxcdTAwMjYgUENJIFxcdTAwMjZcXHUwMDI2IE1MWDVfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzQtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz0zMz1jb25maWcgTUxYU1dfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM1LVxcdGRlcGVuZHMgb24gUENJIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNy1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6Mjg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cXHRzZWxlY3QgUENTX1hQQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOC1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cXHRzZWxlY3QgVkNBUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMwLVxcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjMtXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI1LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM1LVxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMjgtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOC1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMjgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01NS1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNjktXFx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDEtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDgtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6NDEuODgwMjM1OTU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDI5NDc3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgUEFHRV9QT09MIGFuZCBpb191cmluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gaWYgYE5FVGAgaXMgZGVmaW5lZCwgYEJQRl9TWVNDQUxMYCBpcyBnb2luZyB0byBjaG9vc2UgYFBBR0VfUE9PTGAuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgaXQncyBsaWtlbHkgdG8gYmUgZW5hYmxlZC4gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSBhbmQgZW5zdXJlIGNvbnNpc3RlbmN5IGluIG91ciBjb25maWd1cmF0aW9ucywgSSdtIGdvaW5nIHRvIGFkZCBgUEFHRV9QT09MYCBkaXJlY3RseSB0byBgRW5hYmxlQ29uZmlnc2AuIFRoaXMgd2lsbCByZW1vdmUgYW55IGFtYmlndWl0eS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBkb3VibGUtY2hlY2sgdGhlIGBpb191cmluZy9LY29uZmlnYCBmaWxlIGFnYWluLCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBkZXBlbmRlbmNpZXMgb3Igc3BlY2lmaWMgc2V0dGluZ3MgSSd2ZSBtaXNzZWQuIEJldHRlciB0byBiZSBjZXJ0YWluLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNyaXRpY2FsIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTkyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6NDYuMzIzMTg2MzlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW9fdXJpbmcvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBpb191cmluZyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBJT19VUklOR19aQ1JYXFxuICAgNzpcXHRcXHRkZWZfYm9vbCB5XFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElPX1VSSU5HXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9SWF9CVVNZX1BPTExcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIElPX1VSSU5HX0JQRlxcbiAgMTQ6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBCUEZcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBJT19VUklOR19CUEZfT1BTXFxuICAxOTpcXHRcXHRkZWZfYm9vbCB5XFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIElPX1VSSU5HXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjQ2LjMyMzI0MDU1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDA3OTU2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyBhbmQgRm9jdXMgU3ltYm9scyBmb3IgSU9fVVJJTkdfWkNSWCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBJT19VUklOR19aQ1JYYCB0aGluZy4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBhcmUgaW4gcGxhY2UuIEJhc2VkIG9uIHRoZSBkZXBlbmRlbmNpZXMsIGl0IGxvb2tzIGxpa2UgYElPX1VSSU5HYCwgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYCBhcmUgY3J1Y2lhbC4gIGBJTkVUYCBpcyB1c3VhbGx5IGVuYWJsZWQsIGJ1dCBpdCB3b24ndCBodXJ0IHRvIGJlIGV4cGxpY2l0LiBgTkVUX1JYX0JVU1lfUE9MTGAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyB0aGF0J3MgZ29vZC4gYFBBR0VfUE9PTGAgaXMgbWFuYWdlZCBieSBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIHNldCwgc28gdGhhdCdzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIExldCdzIGluY2x1ZGUgdGhlc2UgaW4gYEVuYWJsZUNvbmZpZ3NgLlxuXG5Ob3csIEknbSBmb2N1c2luZyBvbiB0aGUgY29yZSBmdW5jdGlvbnMuIEkgbmVlZCB0byByZXZpc2l0IGBpb19jcmVhdGVfcmVnaW9uYCBhbmQgYGlvX2ZyZWVfcmVnaW9uYOKAlHRoZXkgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBCZXlvbmQgdGhvc2UsIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCwgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBhbmQgYGlvX3JlZ2lzdGVyX3pjcnhgIGFyZSBsaWtlbHkgdGhlIGVudHJ5IHBvaW50cy5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGVzZSBcInJlZ2lzdGVyXCIgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCB0aHJvdWdoIHRoZSBgSU9SSU5HX1JFR0lTVEVSXypgIG1lY2hhbmlzbS4gT2theSwgYSBxdWljayBjaGVjayBjb25maXJtczogYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gIGlzIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGlzIGBJT1JJTkdfUkVHSVNURVJfUkVTSVpFX1JJTkdTYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AgaXMgYElPUklOR19SRUdJU1RFUl9QQlVGX1JJTkdgLCBhbmQgZmluYWxseSBgaW9fcmVnaXN0ZXJfemNyeGAgaXMgYElPUklOR19SRUdJU1RFUl9aQ1JYYC4gUGVyZmVjdC5cblxuU28sIEknbSBnb2luZyB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBteSBgRm9jdXNTeW1ib2xzYCBsaXN0OiBgaW9fY3JlYXRlX3JlZ2lvbmAsIGBpb19mcmVlX3JlZ2lvbmAsIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCwgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBhbmQgYGlvX3JlZ2lzdGVyX3pjcnhgLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcsIHNvIEknbGwgY2hlY2sgZm9yIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBtYXkgYmUgaW1wb3J0YW50LiBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCBpcyBzdGF0aWMsIHNvIEkgY2FuIGlnbm9yZSB0aGF0LiBgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzYCBhbmQgYGlvX3JlZ2lvbl9waW5fcGFnZXNgIGFyZSBhbHNvIHN0YXRpYywgc28gdGhleSdyZSBub3QgdXNlZnVsIGluIHRoaXMgY29udGV4dC4gTGV0J3MgYnJpZWZseSBjaGVjayBgaW9fYWxsb2NhdGVfc2NxX3VyaW5nc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDQzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6NTUuMzY0MDM5MDY0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk3NzExOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fYWxsb2NhdGVfc2NxX3VyaW5nc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvaW9fdXJpbmcuYz0yNzIxPWJvb2wgaW9faXNfdXJpbmdfZm9wcyhzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjcyNS1cXG5pb191cmluZy9pb191cmluZy5jOjI3MjY6c3RhdGljIF9fY29sZCBpbnQgaW9fYWxsb2NhdGVfc2NxX3VyaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy9pb191cmluZy5jLTI3MjctXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jPTI5NzM9c3RhdGljIF9fY29sZCBpbnQgaW9fdXJpbmdfY3JlYXRlKHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jLTMwNDktXFxuaW9fdXJpbmcvaW9fdXJpbmcuYzozMDUwOlxcdHJldCA9IGlvX2FsbG9jYXRlX3NjcV91cmluZ3MoY3R4LCBjb25maWcpO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzA1MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODo1NS40ODM4MTQ0ODVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3MjMyNTIzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkluaXRpYWwgSW1wcmVzc2lvbnMgb2YgdGhlIGlvX3VyaW5nIENvZGViYXNlKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHdoZXJlIHRoZSBhY3Rpb24gc3RhcnRzLiBgaW9fYWxsb2NhdGVfc2NxX3VyaW5nc2AgaXMgZGVjbGFyZWQgc3RhdGljLCBzbyBpdCdzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBTYW1lIGRlYWwgd2l0aCBgaW9fdXJpbmdfY3JlYXRlYDsgYWxzbyBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBpb191cmluZ19zZXR1cGAuIFRoYXQgbWVhbnMgYGlvX3VyaW5nX3NldHVwYCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBzeXNjYWxsLiBUaGF0J3MgZ29vZCwgdGhhdCBnaXZlcyBtZSBhIHJlYWxseSBzb2xpZCBmb2N1cyBzeW1ib2wgdG8gc3RhcnQgd2l0aC4gSXQncyB0aGUgbHluY2hwaW4sIHRoZSBwbGFjZSB3aGVyZSBldmVyeXRoaW5nIGNvbWVzIHRvZ2V0aGVyLiBJIGNhbiBidWlsZCBvdXQgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3MjIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODo1OS43NTYxNDI4NVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMjkxMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3VyaW5nX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9pb191cmluZy5jPTI5NzM9c3RhdGljIF9fY29sZCBpbnQgaW9fdXJpbmdfY3JlYXRlKHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jLTMxMDUtICovXFxuaW9fdXJpbmcvaW9fdXJpbmcuYzozMTA2OnN0YXRpYyBsb25nIGlvX3VyaW5nX3NldHVwKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgaW9fdXJpbmdfcGFyYW1zIF9fdXNlciAqcGFyYW1zKVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzEwNy17XFxuLS1cXG5pb191cmluZy9pb191cmluZy5jPTMxMjM9c3RhdGljIGlubGluZSBpbnQgaW9fdXJpbmdfYWxsb3dlZCh2b2lkKVxcbi0tXFxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTQ0LVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE0NTpTWVNDQUxMX0RFRklORTIoaW9fdXJpbmdfc2V0dXAsIHUzMiwgZW50cmllcyxcXG5pb191cmluZy9pb191cmluZy5jLTMxNDYtXFx0XFx0c3RydWN0IGlvX3VyaW5nX3BhcmFtcyBfX3VzZXIgKiwgcGFyYW1zKVxcbi0tXFxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTUzLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE1NDpcXHRyZXR1cm4gaW9fdXJpbmdfc2V0dXAoZW50cmllcywgcGFyYW1zKTtcXG5pb191cmluZy9pb191cmluZy5jLTMxNTUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODo1OS44NzY0Mzg3MTJaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM1MjUwMzM2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxNzU0OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MTMuNDAxNDc2Nzc1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTQzOTU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl9wYnVmX3JpbmdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL2tidWYuYz02MTE9aW50IGlvX21hbmFnZV9idWZmZXJzX2xlZ2FjeShzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuaW9fdXJpbmcva2J1Zi5jLTYyOC1cXG5pb191cmluZy9rYnVmLmM6NjI5OmludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXFxuaW9fdXJpbmcva2J1Zi5jLTYzMC17XFxuLS1cXG5pb191cmluZy9rYnVmLmg9ODA9aW50IGlvX21hbmFnZV9idWZmZXJzX2xlZ2FjeShzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG5pb191cmluZy9rYnVmLmgtODEtXFxuaW9fdXJpbmcva2J1Zi5oOjgyOmludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpO1xcbmlvX3VyaW5nL2tidWYuaC04My1pbnQgaW9fdW5yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpO1xcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTg4Ny1cXHRcXHRcXHRicmVhaztcXG5pb191cmluZy9yZWdpc3Rlci5jOjg4ODpcXHRcXHRyZXQgPSBpb19yZWdpc3Rlcl9wYnVmX3JpbmcoY3R4LCBhcmcpO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtODg5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOToxMy40ODY5MjEzOTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMTgyMTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSBhcmUgbXkgb3duOlxuXG4qKlBvbmRlcmluZyBSaW5nIEJ1ZmZlciBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbSB0YWtpbmcgYSBsb29rIGF0IGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLiBIbW0sIG5vdCBzdGF0aWMuIFRoYXQncyBpbnRlcmVzdGluZy4gT2theSwgbGV0J3Mga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgd2hhdCBhYm91dCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLiBSaWdodCwgcmlnaHQuIEdvdHRhIHF1aWNrbHkgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGRpc3RpbmN0aW9uLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgY2FzZS4gT2theSwgY29uZmlybWluZy4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIG1ha2luZyBvbmUgcHVibGljIGFuZCB0aGUgb3RoZXIgcHJpdmF0ZS4uLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MjcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOToxNy4xOTg3NDU1NDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTA2MTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL3JlZ2lzdGVyLmM9NDgwPXN0YXRpYyB2b2lkIGlvX3JlZ2lzdGVyX2ZyZWVfcmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTQ5Ny1cXG5pb191cmluZy9yZWdpc3Rlci5jOjQ5ODpzdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG5pb191cmluZy9yZWdpc3Rlci5jLTQ5OS17XFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQ3LVxcdFxcdFxcdGJyZWFrO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTQ4OlxcdFxcdHJldCA9IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhjdHgsIGFyZyk7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDktXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE5OjE3Ljc3OTgxMDc1MVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg4NDQ2NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0czpcblxuKipTdGF0aWMgRnVuY3Rpb24gT2JzZXJ2YXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCBhbmQgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgdGhleSdyZSBib3RoIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGEgY291cGxlIG9mIGltcG9ydGFudCB0aGluZ3MuIFByaW1hcmlseSwgdGhlIGBzdGF0aWNgIGtleXdvcmQgbWVhbnMgdGhlc2UgZnVuY3Rpb25zIGhhdmUgKmludGVybmFsIGxpbmthZ2UqLiBUaGV5IGFyZSBub3QgZXhwb3NlZCB0byBvdGhlciB0cmFuc2xhdGlvbiB1bml0cyB3aXRoaW4gdGhlIHByb2plY3QuIEl0IHN1Z2dlc3RzIHRoZXNlIGFyZSB2ZXJ5IHNwZWNpZmljLCBpbnRlcm5hbCB1dGlsaXR5IGZ1bmN0aW9ucywgcHJvYmFibHkgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgd2l0aGluIHRoZSBtb2R1bGUgb3IgZmlsZSB0aGV5J3JlIGRlZmluZWQgaW4uIFRoZXnigJlyZSBwYXJ0IG9mIGEgcHJpdmF0ZSBpbnRlcmZhY2UsIGxpa2VseSBkZXNpZ25lZCBmb3IgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3Igc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgd2l0aGluIHdoYXRldmVyIHN5c3RlbSB0aGlzIGNvZGUgaXMgcGFydCBvZi4gSSBpbW1lZGlhdGVseSBzdGFydCB3b25kZXJpbmcgYWJvdXQgdGhlIHNjb3BlIGFuZCBvcmdhbml6YXRpb24gb2YgdGhlIGNvZGViYXNlOyB0aGVzZSBzdGF0aWMgZGVjbGFyYXRpb25zIHN1Z2dlc3QgYSB3ZWxsLWRlZmluZWQgbW9kdWxlIHN0cnVjdHVyZSwgYW5kIEknZCBiZSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkLiBLbm93aW5nIHRoZXkgYXJlIHN0YXRpYywgSSBhbnRpY2lwYXRlIHRoZXkgd291bGQgYmUgZGlyZWN0bHkgY2FsbGVkIHdpdGhpbiB0aGUgc2FtZSBmaWxlLCBvciBwZXJoYXBzIHdpdGhpbiBpbmxpbmUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLCB3aXRoIG1pbmltYWwgaW50ZXJhY3Rpb25zIHdpdGggZXh0ZXJuYWwgY29tcG9uZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNDksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOToyMi4zNjgyNTkzNTNaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjk3NTM0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl9tZW1fcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9yZWdpc3Rlci5jPTQ5OD1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzAyLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzAzOnN0YXRpYyBpbnQgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKnVhcmcpXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03MDQte1xcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTk1My1cXHRcXHRcXHRicmVhaztcXG5pb191cmluZy9yZWdpc3Rlci5jOjk1NDpcXHRcXHRyZXQgPSBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKGN0eCwgYXJnKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTk1NS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MjIuNDgxMjM4OTA2WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDk1MTYxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBpb191cmluZyBSZWdpc3RyYXRpb24gTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZXNlIGBpb191cmluZ2Agb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGBfX2lvX3VyaW5nX3JlZ2lzdGVyYC4gTGV0J3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGFjdHVhbGx5IGRvaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiB0aGlzIGVudHJ5IHBvaW50IHRvIGdldCBhIGdyYXNwIG9uIGhvdyByZXNvdXJjZXMgYXJlIGFjdHVhbGx5IG1hcHBlZCBhbmQgbWFuYWdlZCBmb3IgYGlvX3VyaW5nYC4gVGltZSB0byB0cmFjZSBpdHMgY2FsbCBmbG93IGFuZCB1bmRlcnN0YW5kIGl0cyBhcmd1bWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTUzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MjcuMTMwNzU5MTY0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE5MDE0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lvX3VyaW5nX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9yZWdpc3Rlci5jPTcwMz1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX21lbV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICp1YXJnKVxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03NDktXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo3NTA6c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03NTEtXFx0XFx0XFx0ICAgICAgIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZ3MpXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTEwMTc9U1lTQ0FMTF9ERUZJTkU0KGlvX3VyaW5nX3JlZ2lzdGVyLCB1bnNpZ25lZCBpbnQsIGZkLCB1bnNpZ25lZCBpbnQsIG9wY29kZSxcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtMTAzOS1cXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZXVyaW5nX2xvY2spO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6MTA0MDpcXHRyZXQgPSBfX2lvX3VyaW5nX3JlZ2lzdGVyKGN0eCwgb3Bjb2RlLCBhcmcsIG5yX2FyZ3MpO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtMTA0MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MjcuMTk3OTU0MzY5WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODg0MTk2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipGb2N1c2luZyBvbiBpb191cmluZ19yZWdpc3RlciBmb3IgQW5hbHlzaXMqKlxuXG5SaWdodCwgYF9faW9fdXJpbmdfcmVnaXN0ZXJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCdzIG9ubHkgY2FsbGVkIGludGVybmFsbHksIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0IGFzIGl0J3MgZGVmaW5lZC4gQW5kIGl0J3MgY2FsbGVkIGZyb20gdGhlIGBpb191cmluZ19yZWdpc3RlcmAgc3lzdGVtIGNhbGwgZW50cnkgcG9pbnQuIEdpdmVuIHRoaXMsIGBpb191cmluZ19yZWdpc3RlcmAgaXRzZWxmIGlzIGdvaW5nIHRvIGJlIHRoZSBtb3JlIHJlbGV2YW50IGZ1bmN0aW9uIHRvIGV4YW1pbmUgZmlyc3QuIEl0J3MgdGhlIHB1YmxpYyBmYWNlIG9mIHRoZSBzeXN0ZW0gY2FsbC4gSXQncyBhIGtleSBzeW1ib2wuIEl0J3Mgd2hlcmUgdGhlIGFjdGlvbiAqc3RhcnRzKiBmcm9tIHRoZSB1c2VyJ3MgcGVyc3BlY3RpdmUsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gY29uY2VudHJhdGUgbXkgaW5pdGlhbCBlZmZvcnRzLiBOb3csIGxldCdzIGFsc28gY2hlY2sgb3V0IGBpb19yZWdpc3Rlcl96Y3J4YCBhcyBhIHBvdGVudGlhbCBhcmVhIG9mIGludGVyZXN0IHNpbmNlIHRoaXMgaXMgcmVsYXRlZCB0byByZWdpc3RyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTc3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MzEuNTg2Mzc3MDM1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTAxMDM3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQxLVxcdFxcdFxcdGJyZWFrO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTQyOlxcdFxcdHJldCA9IGlvX3JlZ2lzdGVyX3pjcngoY3R4LCBhcmcpO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQzLVxcdFxcdGJyZWFrO1xcbi0tXFxuaW9fdXJpbmcvemNyeC5jPTg1Nz1zdGF0aWMgaW50IHpjcnhfdmFsaWRhdGVfbm90aWZfc3RhdHMoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuLS1cXG5pb191cmluZy96Y3J4LmMtODgzLVxcbmlvX3VyaW5nL3pjcnguYzo4ODQ6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5jLTg4NS1cXHRcXHQgICAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXFxuLS1cXG5pb191cmluZy96Y3J4Lmg9ODg9aW50IGlvX3pjcnhfY3RybChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZywgdW5zaWduZWQgbnJfYXJnKTtcXG5pb191cmluZy96Y3J4Lmg6ODk6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5oLTkwLVxcdFxcdFxcdCBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKTtcXG4tLVxcbmlvX3VyaW5nL3pjcnguaD05Nj1zdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqaW9femNyeF9nZXRfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5oLTk4LSNlbHNlXFxuaW9fdXJpbmcvemNyeC5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5oLTEwMC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOTozMS42ODEzOTE3NzhaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2ODYwODY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSU8gUmVnaW9uIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIGBpb19yZWdpc3Rlcl96Y3J4YCBpc24ndCBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBleHRlcm5hbGx5LCBhbmQgdGhhdCBicm9hZGVucyBpdHMgcG90ZW50aWFsIGltcGFjdC4gTXkgYXR0ZW50aW9uIGlzIG5vdyBob25lZCBvbiBhIHNwZWNpZmljIHNldCBvZiBzeW1ib2xzIHJlbGF0ZWQgdG8gSU8gcmVnaW9uIG1hbmFnZW1lbnQgYW5kIHNwZWNpZmljYWxseSwgSU8gcmluZyBtYW5hZ2VtZW50OlxuXG4qICAgYGlvX2NyZWF0ZV9yZWdpb25gXG4qICAgYGlvX2ZyZWVfcmVnaW9uYFxuKiAgIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgXG4qICAgYGlvX3JlZ2lzdGVyX3pjcnhgXG4qICAgYGlvX3VyaW5nX3NldHVwYFxuKiAgIGBpb191cmluZ19yZWdpc3RlcmBcblxuR2l2ZW4gdGhlIGNvbnRleHQsIEkgdGhpbmsgaXQncyBwcnVkZW50IHRvIGV4YW1pbmUgaG93IGBpb191cmluZ19tbWFwYCB3b3JrcywgYXMgaXQgc2VlbXMgYSBsaWtlbHkgcG9pbnQgb2YgaW50ZXJzZWN0aW9uIGZvciB0aGVzZSBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhlIG1lbW9yeSBtYXBwaW5nIGxheWVyIGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGhpbiBpdC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gdGVybXMgb2YgbWFuYWdpbmcgcmVnaW9ucyBhbmQgYnVmZmVycyB3aXRoaW4gdGhlIElPIHJpbmcgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3MjIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOTozNS41NTAwMDQyMloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA4OTIwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fdXJpbmdfbW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvaW9fdXJpbmcuYz0yNzA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGlvX3VyaW5nX2ZvcHMgPSB7XFxuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzA5LVxcdC5yZWxlYXNlXFx0PSBpb191cmluZ19yZWxlYXNlLFxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjcxMDpcXHQubW1hcFxcdFxcdD0gaW9fdXJpbmdfbW1hcCxcXG5pb191cmluZy9pb191cmluZy5jLTI3MTEtXFx0LmdldF91bm1hcHBlZF9hcmVhID0gaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEsXFxuLS1cXG5pb191cmluZy9tZW1tYXAuYz0zMDc9c3RhdGljIGludCBpb19yZWdpb25fbW1hcChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jLTMxNy1cXG5pb191cmluZy9tZW1tYXAuYzozMTg6X19jb2xkIGludCBpb191cmluZ19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5pb191cmluZy9tZW1tYXAuYy0zMTkte1xcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmM9MzQ0PXVuc2lnbmVkIGxvbmcgaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jLTM5My0gKiBEcm9wIHRoZSBwYWdlcyB0aGF0IHdlcmUgaW5pdGlhbGx5IHJlZmVyZW5jZWQgYW5kIGFkZGVkIGluXFxuaW9fdXJpbmcvbWVtbWFwLmM6Mzk0OiAqIGlvX3VyaW5nX21tYXAoKS4gV2UgY2Fubm90IGhhdmUgaGFkIGEgbXJlbWFwKCkgYXMgdGhhdCBpc24ndCBzdXBwb3J0ZWQsXFxuaW9fdXJpbmcvbWVtbWFwLmMtMzk1LSAqIGhlbmNlIHRoZSB2bWEgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0aGUgb25lIHdlIGluaXRpYWxseSByZWZlcmVuY2VkIGFuZFxcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmM9NDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaW9fdXJpbmdfbm9tbXVfdm1fb3BzID0ge1xcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmMtNDEwLVxcbmlvX3VyaW5nL21lbW1hcC5jOjQxMTppbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW9fdXJpbmcvbWVtbWFwLmMtNDEyLXtcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5oPTE1PXVuc2lnbmVkIGxvbmcgaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5oLTE3LVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGZsYWdzKTtcXG5pb191cmluZy9tZW1tYXAuaDoxODppbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmlvX3VyaW5nL21lbW1hcC5oLTE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOTozNS42MjA5MDIwOTZaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0NDU0Nzk5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBGdXp6aW5nIGlvX3VyaW5nIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBmdXp6aW5nIHRhcmdldHMgYW5kIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdGhpcyBgaW9fdXJpbmdgIHBhdGNoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gbWVtb3J5IG1hcHBpbmcuIFNpbmNlIHRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgbWVtb3J5IG1hcHBpbmcgbG9naWMgd2l0aGluIGBpb191cmluZ2AsIHRoZSBub24tc3RhdGljIGBpb191cmluZ19tbWFwYCBmdW5jdGlvbiwgYmVpbmcgYSBwYXJ0IG9mIHRoZSBmaWxlIG9wZXJhdGlvbnMsIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uIGFzIGEgY3JpdGljYWwgc3ltYm9sIHRvIGFuYWx5emUuXG5cbkkndmUgdGFrZW4gYSBsb29rIGF0IGEgcmFuZ2Ugb2YgZnVuY3Rpb25zLCB3aGljaCBJJ3ZlIGR1YmJlZCBcIkZvY3VzU3ltYm9scyxcIiBiZXlvbmQgdGhlIG1tYXAgZnVuY3Rpb246IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl96Y3J4YCwgYGlvX3VyaW5nX3NldHVwYCwgYW5kIGBpb191cmluZ19yZWdpc3RlcmAuIEhvd2V2ZXIsIGNvbnNpZGVyaW5nIHRoZSBzY29wZSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gcHJvdmlkZSB0aGUgYmVzdCBjb250ZXh0LlxuXG5Ob3csIGxldCdzIG1vdmUgb24gdG8gY29uZmlndXJhdGlvbnMuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gSSBuZWVkIHRvIGVuc3VyZSBpcyBlbmFibGVkIGlzIG9idmlvdXNseSBgSU9fVVJJTkdgLiBEaWdnaW5nIGRlZXBlciwgdGhlcmUncyBgSU9fVVJJTkdfWkNSWGAsIGJ1dCBpdCdzIGEgYGRlZl9ib29sIHlgLCB3aGljaCBtZWFucyBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbyBJIGNoZWNrZWQgdGhvc2U6IGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIFRodXMsIEkgY2FuIHNpbXBsaWZ5IHRoZSBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBvbmx5IGBJT19VUklOR2AuIEkgZG91YmxlLWNoZWNrZWQgYFBBR0VfUE9PTGAgdG8gc2VlIGlmIGl0J3MgdXNlciBzZWxlY3RhYmxlLiBJdCB0dXJucyBvdXQgdGhhdCBgUEFHRV9QT09MYCBpcyBzZWxlY3RlZCBieSBtYW55IG90aGVyIGNvbmZpZ3MsIHNvIGl0IGlzIGFsbW9zdCBjZXJ0YWlubHkgZW5hYmxlZCBpbiBhIHJlYXNvbmFibGUga2VybmVsIGNvbmZpZy5cblxuVGhlbiwgdGhlcmUgYXJlIGBJT19VUklOR19CUEZgIGFuZCBgSU9fVVJJTkdfQlBGX09QU2AuIFRoZXNlIGNhbiBhbHNvIGJlIGlnbm9yZWQgc2luY2UgdGhlIGZvY3VzIGlzIG9uIHRoZSBtZW1vcnkgbWFwcGluZy5cblxuQWZ0ZXIgcmV2aWV3aW5nLCBJJ20gZ29pbmcgYmFjayB0byBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmAsIGFzIHRoZXkgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4gVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYSBtZW1vcnkgYWNjb3VudGluZyBidWcgaW4gaG93IGBnZXRfb3JkZXIoKWAgcm91bmRzIHVwIGFsbG9jYXRpb24gc2l6ZXMuIFRoaXMgbGVhZHMgdG8gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIHRoYW4gYXJlIGluaXRpYWxseSBkZXNjcmliZWQgYnkgdGhlIHJlZ2lvbiwgd2hpY2ggY2F1c2VzIGRpc2NyZXBhbmNpZXMgaW4gcGFnZSBhY2NvdW50aW5nLiBUaGUgY2hhbmdlcyBpbnZvbHZlIG1vZGlmeWluZyBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCB0byBhY2NvdW50IGZvciB0aGUgZXh0cmEgcGFnZXMgY29ycmVjdGx5IGFuZCBgaW9fZnJlZV9yZWdpb25gIHRvIGFwcHJvcHJpYXRlbHkgZnJlZSB0aGVtLlxuXG5UaGlzIG1lbW9yeSBhY2NvdW50aW5nIGZpeCBpcyBkZWZpbml0ZWx5IGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgY29yZSBvZiBgaW9fdXJpbmdgIG1lbW9yeSBtYW5hZ2VtZW50LiBUaGVyZWZvcmUsIGl0J3MgYWJzb2x1dGVseSBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGZ1enppbmcgYXR0ZW50aW9uLlxuXG4qKkluIHN1bW1hcnksIG15IGFuYWx5c2lzIHJldmVhbHMgdGhlIGZvbGxvd2luZzoqKlxuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIFRoZSBtb3N0IGltcG9ydGFudCBvbmVzIGZvciBmdXp6aW5nIGFyZSBgaW9fY3JlYXRlX3JlZ2lvbmAsIGBpb19mcmVlX3JlZ2lvbmAsIGBpb191cmluZ19tbWFwYCBhbmQgdGhlIG90aGVyIGFzc29jaWF0ZWQgb25lcy5cbiogICAqKkVuYWJsZSBDb25maWdzOioqIGBJT19VUklOR2AgaXMgZXNzZW50aWFsLlxuXG5JJ20gbm93IHJlYWR5IHRvIHByb2NlZWQgd2l0aCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZSBmdXp6ZXIgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2MzMsIk91dHB1dFRva2VucyI6MTc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE5OjQ5LjA2NjM4MzgyNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDMwNzQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19jcmVhdGVfcmVnaW9uXCIsXG4gICAgXCJpb19mcmVlX3JlZ2lvblwiLFxuICAgIFwiaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nXCIsXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gICAgXCJpb191cmluZ19zZXR1cFwiLFxuICAgIFwiaW9fdXJpbmdfcmVnaXN0ZXJcIixcbiAgICBcImlvX3VyaW5nX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBhY2NvdW50aW5nIGlzc3VlIGluIGlvX3VyaW5nIG1lbW9yeSBtYXBwaW5nIHdoZXJlIGdldF9vcmRlcigpIHJvdW5kcyB1cCB0aGUgYWxsb2NhdGlvbiBzaXplLCByZXN1bHRpbmcgaW4gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgcHJvcGVybHkgYWNjb3VudGVkIGZvci4gSXQgbW9kaWZpZXMgaW9fbWVtX2FsbG9jX2NvbXBvdW5kIHRvIGFjY291bnQgZm9yIHRoZXNlIGV4dHJhIHBhZ2VzIGFuZCBpb19mcmVlX3JlZ2lvbiB0byB1bmFjY291bnQgdGhlbS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgaW9fdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19jcmVhdGVfcmVnaW9uXCIsXG4gICAgXCJpb19mcmVlX3JlZ2lvblwiLFxuICAgIFwiaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nXCIsXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gICAgXCJpb191cmluZ19zZXR1cFwiLFxuICAgIFwiaW9fdXJpbmdfcmVnaXN0ZXJcIixcbiAgICBcImlvX3VyaW5nX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBhY2NvdW50aW5nIGlzc3VlIGluIGlvX3VyaW5nIG1lbW9yeSBtYXBwaW5nIHdoZXJlIGdldF9vcmRlcigpIHJvdW5kcyB1cCB0aGUgYWxsb2NhdGlvbiBzaXplLCByZXN1bHRpbmcgaW4gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgcHJvcGVybHkgYWNjb3VudGVkIGZvci4gSXQgbW9kaWZpZXMgaW9fbWVtX2FsbG9jX2NvbXBvdW5kIHRvIGFjY291bnQgZm9yIHRoZXNlIGV4dHJhIHBhZ2VzIGFuZCBpb19mcmVlX3JlZ2lvbiB0byB1bmFjY291bnQgdGhlbS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgaW9fdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 21:15:09 +0000 UTC FinishedAt: 2026-08-06 21:19:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d839570765118029aa8bf4a95444c6a11aacf85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "0d839570765118029aa8bf4a95444c6a11aacf85", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IO_URING" ], "series_id": "2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e" }, "track": "KASAN", "fuzz": { "focus": [ "io_uring" ], "focus_symbols": [ "io_create_region", "io_free_region", "io_register_pbuf_ring", "io_register_zcrx", "io_uring_setup", "io_uring_register", "io_uring_mmap" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fY3JlYXRlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19mcmVlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpb191cmluZ19tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDUyM2FhNzJmODBlMzA1NjFiYTUyZmZiZjc3ZmNlMDU0ODNhODczMWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE2OjU0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL21lbW1hcC5jIGIvaW9fdXJpbmcvbWVtbWFwLmNcbmluZGV4IDIzZThhODUxMTFiY2EuLjQ4YzBlYjAxMjQxMjMgMTAwNjQ0XG4tLS0gYS9pb191cmluZy9tZW1tYXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvbWVtbWFwLmNcbkBAIC0xNiw4ICYjNDM7MTYsMTAgQEBcbiAjaW5jbHVkZSBcJiMzNDt6Y3J4LmhcJiMzNDtcbiBcbiBzdGF0aWMgYm9vbCBpb19tZW1fYWxsb2NfY29tcG91bmQoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yX3BhZ2VzLFxuLVx0XHRcdFx0ICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKVxuJiM0MztcdFx0XHRcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcCxcbiYjNDM7XHRcdFx0XHQgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcbiB7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBucl9jb21wb3VuZCwgZXh0cmE7XG4gXHRzdHJ1Y3QgcGFnZSAqcGFnZTtcbiBcdGludCBpLCBvcmRlcjtcbiBcbkBAIC0yNyw5ICYjNDM7MjksMjIgQEAgc3RhdGljIGJvb2wgaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9wYWdlcyxcbiBcdGVsc2UgaWYgKG9yZGVyKVxuIFx0XHRnZnAgfD0gX19HRlBfQ09NUDtcbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIGdldF9vcmRlcigpIHJvdW5kcyBhIG5vbiBwb3dlciBvZiB0d28gc2l6ZSB1cCwgc28gdGhlIGFsbG9jYXRpb25cbiYjNDM7XHQgKiBjYW4gaG9sZCBtb3JlIHBhZ2VzIHRoYW4gdGhlIHJlZ2lvbiBleHBvc2VzLiBBY2NvdW50IHRob3NlIHRvbyxcbiYjNDM7XHQgKiBhbmQgbGVhdmUgdGhlIGNvbXBvdW5kIGFsbG9jYXRpb24gYWxvbmUgaWYgdGhleSBkbyBub3QgZml0LlxuJiM0MztcdCAqL1xuJiM0MztcdG5yX2NvbXBvdW5kID0gMVVMIFx1MDAzY1x1MDAzYyBvcmRlcjtcbiYjNDM7XHRleHRyYSA9IG5yX2NvbXBvdW5kIC0gbnJfcGFnZXM7XG4mIzQzO1x0aWYgKGV4dHJhIFx1MDAyNlx1MDAyNiB1c2VyIFx1MDAyNlx1MDAyNiBfX2lvX2FjY291bnRfbWVtKHVzZXIsIGV4dHJhKSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4gXHRwYWdlID0gYWxsb2NfcGFnZXMoZ2ZwLCBvcmRlcik7XG4tXHRpZiAoIXBhZ2UpXG4mIzQzO1x0aWYgKCFwYWdlKSB7XG4mIzQzO1x0XHRpZiAoZXh0cmEgXHUwMDI2XHUwMDI2IHVzZXIpXG4mIzQzO1x0XHRcdF9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBleHRyYSk7XG4gXHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBucl9wYWdlczsgaSYjNDM7JiM0MzspXG4gXHRcdHBhZ2VzW2ldID0gcGFnZSAmIzQzOyBpO1xuQEAgLTEwNSw4ICYjNDM7MTIwLDE1IEBAIHZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpXG4gXHR9XG4gXHRpZiAoKG1yLVx1MDAzZWZsYWdzIFx1MDAyNiBJT19SRUdJT05fRl9WTUFQKSBcdTAwMjZcdTAwMjYgbXItXHUwMDNlcHRyKVxuIFx0XHR2dW5tYXAobXItXHUwMDNlcHRyKTtcbi1cdGlmIChtci1cdTAwM2Vucl9wYWdlcyBcdTAwMjZcdTAwMjYgdXNlcilcbi1cdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG1yLVx1MDAzZW5yX3BhZ2VzKTtcbiYjNDM7XHRpZiAobXItXHUwMDNlbnJfcGFnZXMgXHUwMDI2XHUwMDI2IHVzZXIpIHtcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgbnJfYWNjb3VudGVkID0gbXItXHUwMDNlbnJfcGFnZXM7XG4mIzQzO1xuJiM0MztcdFx0LyogYSBjb21wb3VuZCByZWdpb24gd2FzIGFjY291bnRlZCBmb3IgdGhlIHdob2xlIGFsbG9jYXRpb24gKi9cbiYjNDM7XHRcdGlmIChtci1cdTAwM2VmbGFncyBcdTAwMjYgSU9fUkVHSU9OX0ZfU0lOR0xFX1JFRilcbiYjNDM7XHRcdFx0bnJfYWNjb3VudGVkID0gMVVMIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoaW9fcmVnaW9uX3NpemUobXIpKTtcbiYjNDM7XG4mIzQzO1x0XHRfX2lvX3VuYWNjb3VudF9tZW0odXNlciwgbnJfYWNjb3VudGVkKTtcbiYjNDM7XHR9XG4gXG4gXHRtZW1zZXQobXIsIDAsIHNpemVvZigqbXIpKTtcbiB9XG5AQCAtMTUxLDcgJiM0MzsxNzMsOCBAQCBzdGF0aWMgaW50IGlvX3JlZ2lvbl9waW5fcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxuIFxuIHN0YXRpYyBpbnQgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZyxcbi1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1tYXBfb2Zmc2V0KVxuJiM0MztcdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1tYXBfb2Zmc2V0LFxuJiM0MztcdFx0XHRcdCAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpXG4ge1xuIFx0Z2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyB8IF9fR0ZQX05PV0FSTjtcbiBcdHNpemVfdCBzaXplID0gaW9fcmVnaW9uX3NpemUobXIpO1xuQEAgLTE2Miw3ICYjNDM7MTg1LDcgQEAgc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxuIFx0aWYgKCFwYWdlcylcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4tXHRpZiAoaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHBhZ2VzLCBtci1cdTAwM2Vucl9wYWdlcywgc2l6ZSwgZ2ZwKSkge1xuJiM0MztcdGlmIChpb19tZW1fYWxsb2NfY29tcG91bmQocGFnZXMsIG1yLVx1MDAzZW5yX3BhZ2VzLCBzaXplLCBnZnAsIHVzZXIpKSB7XG4gXHRcdG1yLVx1MDAzZWZsYWdzIHw9IElPX1JFR0lPTl9GX1NJTkdMRV9SRUY7XG4gXHRcdGdvdG8gZG9uZTtcbiBcdH1cbkBAIC0yMTcsNyAmIzQzOzI0MCw3IEBAIGludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXHRpZiAocmVnLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfTUVNX1JFR0lPTl9UWVBFX1VTRVIpXG4gXHRcdHJldCA9IGlvX3JlZ2lvbl9waW5fcGFnZXMobXIsIHJlZyk7XG4gXHRlbHNlXG4tXHRcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCk7XG4mIzQzO1x0XHRyZXQgPSBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMobXIsIHJlZywgbW1hcF9vZmZzZXQsIGN0eC1cdTAwM2V1c2VyKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gb3V0X2ZyZWU7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fY3JlYXRlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19mcmVlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpb191cmluZ19tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUyM2FhNzJmODBlMzA1NjFiYTUyZmZiZjc3ZmNlMDU0ODNhODczMWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE2OjU0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW9fdXJpbmcvbWVtbWFwLmMgYi9pb191cmluZy9tZW1tYXAuYwppbmRleCAyM2U4YTg1MTExYmNhLi40OGMwZWIwMTI0MTIzIDEwMDY0NAotLS0gYS9pb191cmluZy9tZW1tYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy9tZW1tYXAuYwpAQCAtMTYsOCAmIzQzOzE2LDEwIEBACiAjaW5jbHVkZSAmIzM0O3pjcnguaCYjMzQ7CiAKIHN0YXRpYyBib29sIGlvX21lbV9hbGxvY19jb21wb3VuZChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgbnJfcGFnZXMsCi0JCQkJICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwKQomIzQzOwkJCQkgIHNpemVfdCBzaXplLCBnZnBfdCBnZnAsCiYjNDM7CQkJCSAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKQogewomIzQzOwl1bnNpZ25lZCBsb25nIG5yX2NvbXBvdW5kLCBleHRyYTsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAlpbnQgaSwgb3JkZXI7CiAKQEAgLTI3LDkgJiM0MzsyOSwyMiBAQCBzdGF0aWMgYm9vbCBpb19tZW1fYWxsb2NfY29tcG91bmQoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yX3BhZ2VzLAogCWVsc2UgaWYgKG9yZGVyKQogCQlnZnAgfD0gX19HRlBfQ09NUDsKIAomIzQzOwkvKgomIzQzOwkgKiBnZXRfb3JkZXIoKSByb3VuZHMgYSBub24gcG93ZXIgb2YgdHdvIHNpemUgdXAsIHNvIHRoZSBhbGxvY2F0aW9uCiYjNDM7CSAqIGNhbiBob2xkIG1vcmUgcGFnZXMgdGhhbiB0aGUgcmVnaW9uIGV4cG9zZXMuIEFjY291bnQgdGhvc2UgdG9vLAomIzQzOwkgKiBhbmQgbGVhdmUgdGhlIGNvbXBvdW5kIGFsbG9jYXRpb24gYWxvbmUgaWYgdGhleSBkbyBub3QgZml0LgomIzQzOwkgKi8KJiM0MzsJbnJfY29tcG91bmQgPSAxVUwgJmx0OyZsdDsgb3JkZXI7CiYjNDM7CWV4dHJhID0gbnJfY29tcG91bmQgLSBucl9wYWdlczsKJiM0MzsJaWYgKGV4dHJhICZhbXA7JmFtcDsgdXNlciAmYW1wOyZhbXA7IF9faW9fYWNjb3VudF9tZW0odXNlciwgZXh0cmEpKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwogCXBhZ2UgPSBhbGxvY19wYWdlcyhnZnAsIG9yZGVyKTsKLQlpZiAoIXBhZ2UpCiYjNDM7CWlmICghcGFnZSkgewomIzQzOwkJaWYgKGV4dHJhICZhbXA7JmFtcDsgdXNlcikKJiM0MzsJCQlfX2lvX3VuYWNjb3VudF9tZW0odXNlciwgZXh0cmEpOwogCQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAogCWZvciAoaSA9IDA7IGkgJmx0OyBucl9wYWdlczsgaSYjNDM7JiM0MzspCiAJCXBhZ2VzW2ldID0gcGFnZSAmIzQzOyBpOwpAQCAtMTA1LDggJiM0MzsxMjAsMTUgQEAgdm9pZCBpb19mcmVlX3JlZ2lvbihzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcikKIAl9CiAJaWYgKChtci0mZ3Q7ZmxhZ3MgJmFtcDsgSU9fUkVHSU9OX0ZfVk1BUCkgJmFtcDsmYW1wOyBtci0mZ3Q7cHRyKQogCQl2dW5tYXAobXItJmd0O3B0cik7Ci0JaWYgKG1yLSZndDtucl9wYWdlcyAmYW1wOyZhbXA7IHVzZXIpCi0JCV9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBtci0mZ3Q7bnJfcGFnZXMpOwomIzQzOwlpZiAobXItJmd0O25yX3BhZ2VzICZhbXA7JmFtcDsgdXNlcikgewomIzQzOwkJdW5zaWduZWQgbG9uZyBucl9hY2NvdW50ZWQgPSBtci0mZ3Q7bnJfcGFnZXM7CiYjNDM7CiYjNDM7CQkvKiBhIGNvbXBvdW5kIHJlZ2lvbiB3YXMgYWNjb3VudGVkIGZvciB0aGUgd2hvbGUgYWxsb2NhdGlvbiAqLwomIzQzOwkJaWYgKG1yLSZndDtmbGFncyAmYW1wOyBJT19SRUdJT05fRl9TSU5HTEVfUkVGKQomIzQzOwkJCW5yX2FjY291bnRlZCA9IDFVTCAmbHQ7Jmx0OyBnZXRfb3JkZXIoaW9fcmVnaW9uX3NpemUobXIpKTsKJiM0MzsKJiM0MzsJCV9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBucl9hY2NvdW50ZWQpOwomIzQzOwl9CiAKIAltZW1zZXQobXIsIDAsIHNpemVvZigqbXIpKTsKIH0KQEAgLTE1MSw3ICYjNDM7MTczLDggQEAgc3RhdGljIGludCBpb19yZWdpb25fcGluX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptciwKIAogc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLAogCQkJCSAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZywKLQkJCQkgICAgdW5zaWduZWQgbG9uZyBtbWFwX29mZnNldCkKJiM0MzsJCQkJICAgIHVuc2lnbmVkIGxvbmcgbW1hcF9vZmZzZXQsCiYjNDM7CQkJCSAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpCiB7CiAJZ2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyB8IF9fR0ZQX05PV0FSTjsKIAlzaXplX3Qgc2l6ZSA9IGlvX3JlZ2lvbl9zaXplKG1yKTsKQEAgLTE2Miw3ICYjNDM7MTg1LDcgQEAgc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLAogCWlmICghcGFnZXMpCiAJCXJldHVybiAtRU5PTUVNOwogCi0JaWYgKGlvX21lbV9hbGxvY19jb21wb3VuZChwYWdlcywgbXItJmd0O25yX3BhZ2VzLCBzaXplLCBnZnApKSB7CiYjNDM7CWlmIChpb19tZW1fYWxsb2NfY29tcG91bmQocGFnZXMsIG1yLSZndDtucl9wYWdlcywgc2l6ZSwgZ2ZwLCB1c2VyKSkgewogCQltci0mZ3Q7ZmxhZ3MgfD0gSU9fUkVHSU9OX0ZfU0lOR0xFX1JFRjsKIAkJZ290byBkb25lOwogCX0KQEAgLTIxNyw3ICYjNDM7MjQwLDcgQEAgaW50IGlvX2NyZWF0ZV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptciwKIAlpZiAocmVnLSZndDtmbGFncyAmYW1wOyBJT1JJTkdfTUVNX1JFR0lPTl9UWVBFX1VTRVIpCiAJCXJldCA9IGlvX3JlZ2lvbl9waW5fcGFnZXMobXIsIHJlZyk7CiAJZWxzZQotCQlyZXQgPSBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMobXIsIHJlZywgbW1hcF9vZmZzZXQpOwomIzQzOwkJcmV0ID0gaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKG1yLCByZWcsIG1tYXBfb2Zmc2V0LCBjdHgtJmd0O3VzZXIpOwogCWlmIChyZXQpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk4NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Kippb191cmluZyBNZW1vcnkgQWNjb3VudGluZyBQYXRjaCBSZXZpZXcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGlvX3VyaW5nL21lbW1hcC5jYCBwYXRjaC4gSXQgc2VlbXMgbGlrZSBhIHJlbGF0aXZlbHkgZm9jdXNlZCBjaGFuZ2UsIHByaW1hcmlseSBjb25jZXJuZWQgd2l0aCBtZW1vcnkgYWNjb3VudGluZyBkdXJpbmcgaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBtb2RpZnlpbmcgYGlvX21lbV9hbGxvY19jb21wb3VuZGAgdG8gYWNjZXB0IGEgYHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcmAgYW5kIGNvcnJlY3RseSBhY2NvdW50cyBmb3IgdGhlIHBhZ2Ugb3ZlcmhlYWQgaW50cm9kdWNlZCBieSBgZ2V0X29yZGVyKClgIHJvdW5kaW5nLiBUaGVuLCB0aGUgY29ycmVzcG9uZGluZyBhZGp1c3RtZW50IGlzIG1hZGUgaW4gYGlvX2ZyZWVfcmVnaW9uYCB0byB1bi1hY2NvdW50IHRob3NlIGV4dHJhIHBhZ2VzLCBlbnN1cmluZyBwcm9wZXIgYWNjb3VudGluZy4gRmluYWxseSwgdGhlIHBhdGNoIHVwZGF0ZXMgYGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlc2AgdG8gcGFzcyB0aGUgdXNlciBjb250ZXh0IHRvIGBpb19tZW1fYWxsb2NfY29tcG91bmRgLgoKRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjaGFuZ2UgYWZmZWN0cyBob3cgaW9fdXJpbmcgbWFuYWdlcyBhbmQgYWNjb3VudHMgZm9yIG1lbW9yeSwgd2hpY2gsIGFzIHdlIGtub3csIGNhbiBiZSBhIGZlcnRpbGUgZ3JvdW5kIGZvciBidWdzIGFuZCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0byB2YWxpZGF0ZSB0aGVzZSBjaGFuZ2VzLgoKVG8gZ2V0IHN0YXJ0ZWQgd2l0aCBmdXp6aW5nLCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdGhpcyBjaGFuZ2UgdG91Y2hlcy4gYGlvX21lbV9hbGxvY19jb21wb3VuZGAgaXMgc3RhdGljLCBzbyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGUgZmlsZS4gQnV0IGJvdGggYGlvX2NyZWF0ZV9yZWdpb25gIGFuZCBgaW9fZnJlZV9yZWdpb25gIGFyZSBleHBvcnRlZCwgd2hpY2ggYXJlIG15IHBvaW50cyBvZiBlbnRyeS4gTm93LCBsZXQgbWUgcXVpY2tseSBzY2FuIGBpb191cmluZy9tZW1tYXAuY2AgaXRzZWxmIHRvIGNvbmZpcm0gdGhlc2Uga2V5IGZ1bmN0aW9ucyBhbmQgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX2NyZWF0ZV9yZWdpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvaW9fdXJpbmcuYz0yNzI2PXN0YXRpYyBfX2NvbGQgaW50IGlvX2FsbG9jYXRlX3NjcV91cmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzQ0LVx0fVxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyNzQ1Olx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFx1MDAyNmN0eC1cdTAwM2VyaW5nX3JlZ2lvbiwgXHUwMDI2cmQsIElPUklOR19PRkZfQ1FfUklORyk7XG5pb191cmluZy9pb191cmluZy5jLTI3NDYtXHRpZiAocmV0KVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjc1OC1cdH1cbmlvX3VyaW5nL2lvX3VyaW5nLmM6Mjc1OTpcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcdTAwMjZjdHgtXHUwMDNlc3FfcmVnaW9uLCBcdTAwMjZyZCwgSU9SSU5HX09GRl9TUUVTKTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjc2MC1cdGlmIChyZXQpIHtcbi0tXG5pb191cmluZy9rYnVmLmM9NjI5PWludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTY3Ny1cdH1cbmlvX3VyaW5nL2tidWYuYzo2Nzg6XHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXHUwMDI2YmwtXHUwMDNlcmVnaW9uLCBcdTAwMjZyZCwgbW1hcF9vZmZzZXQpO1xuaW9fdXJpbmcva2J1Zi5jLTY3OS1cdGlmIChyZXQpXG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9MTc0PXN0YXRpYyBpbnQgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcbi0tXG5pb191cmluZy9tZW1tYXAuYy0yMDYtXG5pb191cmluZy9tZW1tYXAuYzoyMDc6aW50IGlvX2NyZWF0ZV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcbmlvX3VyaW5nL21lbW1hcC5jLTIwOC1cdFx0ICAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZyxcbi0tXG5pb191cmluZy9tZW1tYXAuaD0yMD12b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKTtcbmlvX3VyaW5nL21lbW1hcC5oOjIxOmludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG5pb191cmluZy9tZW1tYXAuaC0yMi1cdFx0ICAgICBzdHJ1Y3QgaW9fdXJpbmdfcmVnaW9uX2Rlc2MgKnJlZyxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jPTQ5OD1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTUzMS1cdH1cbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NTMyOlx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFx1MDAyNm4ucmluZ19yZWdpb24sIFx1MDAyNnJkLCBJT1JJTkdfT0ZGX0NRX1JJTkcpO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYy01MzMtXHRpZiAocmV0KVxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNTYxLVx0fVxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo1NjI6XHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXHUwMDI2bi5zcV9yZWdpb24sIFx1MDAyNnJkLCBJT1JJTkdfT0ZGX1NRRVMpO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYy01NjMtXHRpZiAocmV0KSB7XG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03MDM9c3RhdGljIGludCBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqdWFyZylcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTczMi1cbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzMzOlx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFx1MDAyNnJlZ2lvbiwgXHUwMDI2cmQsIElPUklOR19NQVBfT0ZGX1BBUkFNX1JFR0lPTik7XG5pb191cmluZy9yZWdpc3Rlci5jLTczNC1cdGlmIChyZXQpXG4tLVxuaW9fdXJpbmcvemNyeC5jPTM4MD1zdGF0aWMgaW50IGlvX2FsbG9jYXRlX3JidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy96Y3J4LmMtMzk5LVxuaW9fdXJpbmcvemNyeC5jOjQwMDpcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcdTAwMjZpZnEtXHUwMDNlcnFfcmVnaW9uLCByZCwgbW1hcF9vZmZzZXQpO1xuaW9fdXJpbmcvemNyeC5jLTQwMS1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwOAoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgaW9fdXJpbmcgTWVtb3J5IE1hbmFnZW1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9ucywgYGlvX2NyZWF0ZV9yZWdpb25gIGFuZCBgaW9fZnJlZV9yZWdpb25gLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoZXkmIzM5O3JlIGludGVncmFsIHRvIHRoZSBtZW1vcnkgbWFwcGluZyB3aXRoaW4gaW9fdXJpbmcuIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhleSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gSSYjMzk7bSBzZWVpbmcgYSBidW5jaCBvZiBvdGhlciBrZXkgZnVuY3Rpb25zIOKAkyBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYGlvX2FsbG9jYXRlX3JidWZfcmluZ2AsIGFuZCBldmVuIGBpb19hbGxvY2F0ZV9zY3FfdXJpbmdzYCDigJMgYWxsIHJlbHkgb24gYGlvX2NyZWF0ZV9yZWdpb25gLiBUaGF04oCZcyBhIHN0cm9uZyBpbmRpY2F0b3Igb2YgaXRzIGNlbnRyYWwgcm9sZSBpbiByZXNvdXJjZSBhbGxvY2F0aW9uLgoKR2l2ZW4gdGhlIGltcG9ydGFuY2Ugb2YgdGhlc2UgbWVtb3J5IHJlZ2lvbiBmdW5jdGlvbnMgaW4gaW9fdXJpbmcsIEkgdGhpbmsgaXQmIzM5O3MgYSBnb29kIGlkZWEgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIEtjb25maWcgc2V0dGluZ3MgdG8gbWFrZSBzdXJlIGlvX3VyaW5nIGlzIGFjdHVhbGx5IGVuYWJsZWQuIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlIHRoZSBmZWF0dXJlIGlzIGV2ZW4gcHJlc2VudCBpbiB0aGlzIGJ1aWxkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJT19VUklORyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbml0L0tjb25maWc9MTkxMD1jb25maWcgQUlPXG4tLVxuaW5pdC9LY29uZmlnLTE5MTctXG5pbml0L0tjb25maWc6MTkxODpjb25maWcgSU9fVVJJTkdcbmluaXQvS2NvbmZpZy0xOTE5LVx0Ym9vbCBcJiMzNDtFbmFibGUgSU8gdXJpbmcgc3VwcG9ydFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5pbml0L0tjb25maWc9MTkyNz1jb25maWcgR0NPVl9QUk9GSUxFX1VSSU5HXG4tLVxuaW5pdC9LY29uZmlnLTE5MzktXG5pbml0L0tjb25maWc6MTk0MDpjb25maWcgSU9fVVJJTkdfTU9DS19GSUxFXG5pbml0L0tjb25maWctMTk0MS1cdHRyaXN0YXRlIFwmIzM0O0VuYWJsZSBpb191cmluZyBtb2NrIGZpbGVzIChFeHBlcmltZW50YWwpXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmlvX3VyaW5nL0tjb25maWctNS1cbmlvX3VyaW5nL0tjb25maWc6Njpjb25maWcgSU9fVVJJTkdfWkNSWFxuaW9fdXJpbmcvS2NvbmZpZy03LVx0ZGVmX2Jvb2wgeVxuLS1cbmlvX3VyaW5nL0tjb25maWctMTItXG5pb191cmluZy9LY29uZmlnOjEzOmNvbmZpZyBJT19VUklOR19CUEZcbmlvX3VyaW5nL0tjb25maWctMTQtXHRkZWZfYm9vbCB5XG4tLVxuaW9fdXJpbmcvS2NvbmZpZy0xNy1cbmlvX3VyaW5nL0tjb25maWc6MTg6Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcbmlvX3VyaW5nL0tjb25maWctMTktXHRkZWZfYm9vbCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTE0MAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKklPX1VSSU5HIE1lbW9yeSBSZWdpb24gTWFuYWdlbWVudCBEZWVwIERpdmUqKgoKUmlnaHQsIHRoZSBjb25maWd1cmF0aW9uIGlzIGRlZmluaXRlbHkgc2V0IHRvIGBJT19VUklOR2AsIHRoYXQmIzM5O3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBnb2VzIHRvIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyBpb191cmluZyBpbnRlcmFjdHMgd2l0aCBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQmIzM5O3MgaGFuZGxlZCBpbiBgaW9fdXJpbmcvbWVtbWFwLmNgLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgY3J1Y2lhbCBmdW5jdGlvbnM6IGBpb19jcmVhdGVfcmVnaW9uYCBhbmQgYGlvX2ZyZWVfcmVnaW9uYC4gSSB3YW50IHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGVzdGFibGlzaCBhbmQgcmVsZWFzZSBtZW1vcnkgcmVnaW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgaW9fdXJpbmcsIGFuZCBJJiMzOTttIGtlZW4gdG8gZXhhbWluZSB0aGUgc3BlY2lmaWNzIG9mIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIG9yIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGVtcGxveWVkIGZvciBzYWZlIGFjY2Vzcy4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgY29kZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgaGFwcGVuaW5nIGF0IHRoYXQgbGV2ZWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW9fZnJlZV9yZWdpb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvaW9fdXJpbmcuYz0yMDc4PXN0YXRpYyB2b2lkIGlvX3JpbmdzX2ZyZWUoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXG5pb191cmluZy9pb191cmluZy5jLTIwNzkte1xuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMDgwOlx0aW9fZnJlZV9yZWdpb24oY3R4LVx1MDAzZXVzZXIsIFx1MDAyNmN0eC1cdTAwM2VzcV9yZWdpb24pO1xuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMDgxOlx0aW9fZnJlZV9yZWdpb24oY3R4LVx1MDAzZXVzZXIsIFx1MDAyNmN0eC1cdTAwM2VyaW5nX3JlZ2lvbik7XG5pb191cmluZy9pb191cmluZy5jLTIwODItXHRjdHgtXHUwMDNlcmluZ3MgPSBOVUxMO1xuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmM9MjE2Mz1zdGF0aWMgX19jb2xkIHZvaWQgaW9fcmluZ19jdHhfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbi0tXG5pb191cmluZy9pb191cmluZy5jLTIxNzUtXHRpb19kZXN0cm95X2J1ZmZlcnMoY3R4KTtcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjE3NjpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZjdHgtXHUwMDNlcGFyYW1fcmVnaW9uKTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE3Ny1cdG11dGV4X3VubG9jayhcdTAwMjZjdHgtXHUwMDNldXJpbmdfbG9jayk7XG4tLVxuaW9fdXJpbmcva2J1Zi5jPTQ1OD1zdGF0aWMgdm9pZCBpb19wdXRfYmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHN0cnVjdCBpb19idWZmZXJfbGlzdCAqYmwpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTQ2MC1cdGlmIChibC1cdTAwM2VmbGFncyBcdTAwMjYgSU9CTF9CVUZfUklORylcbmlvX3VyaW5nL2tidWYuYzo0NjE6XHRcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZibC1cdTAwM2VyZWdpb24pO1xuaW9fdXJpbmcva2J1Zi5jLTQ2Mi1cdGVsc2Vcbi0tXG5pb191cmluZy9rYnVmLmM9NjI5PWludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTcxMC1mYWlsOlxuaW9fdXJpbmcva2J1Zi5jOjcxMTpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZibC1cdTAwM2VyZWdpb24pO1xuaW9fdXJpbmcva2J1Zi5jLTcxMi1cdGtmcmVlKGJsKTtcbi0tXG5pb191cmluZy9tZW1tYXAuYz05Nz1lbnVtIHtcbi0tXG5pb191cmluZy9tZW1tYXAuYy0xMDUtXG5pb191cmluZy9tZW1tYXAuYzoxMDY6dm9pZCBpb19mcmVlX3JlZ2lvbihzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIsIHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcilcbmlvX3VyaW5nL21lbW1hcC5jLTEwNy17XG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9MjA3PWludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4tLVxuaW9fdXJpbmcvbWVtbWFwLmMtMjUxLW91dF9mcmVlOlxuaW9fdXJpbmcvbWVtbWFwLmM6MjUyOlx0aW9fZnJlZV9yZWdpb24oY3R4LVx1MDAzZXVzZXIsIG1yKTtcbmlvX3VyaW5nL21lbW1hcC5jLTI1My1cdHJldHVybiByZXQ7XG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9NDExPWludCBpb191cmluZ19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcbi0tXG5pb191cmluZy9tZW1tYXAuYy00MjktXHQvKlxuaW9fdXJpbmcvbWVtbWFwLmM6NDMwOlx0ICogUGluIHRoZSBwYWdlcyBzbyBpb19mcmVlX3JlZ2lvbigpJiMzOTtzIHJlbGVhc2VfcGFnZXMoKSBkb2VzIG5vdFxuaW9fdXJpbmcvbWVtbWFwLmMtNDMxLVx0ICogZHJvcCB0aGUgbGFzdCByZWZlcmVuY2Ugd2hpbGUgdGhpcyBWTUEgZXhpc3RzLiBkZWxldGVfdm1hKClcbi0tXG5pb191cmluZy9tZW1tYXAuaD0xOD1pbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xuaW9fdXJpbmcvbWVtbWFwLmgtMTktXG5pb191cmluZy9tZW1tYXAuaDoyMDp2b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKTtcbmlvX3VyaW5nL21lbW1hcC5oLTIxLWludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz00ODA9c3RhdGljIHZvaWQgaW9fcmVnaXN0ZXJfZnJlZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTQ4Mi17XG5pb191cmluZy9yZWdpc3Rlci5jOjQ4MzpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZyLVx1MDAzZXNxX3JlZ2lvbik7XG5pb191cmluZy9yZWdpc3Rlci5jOjQ4NDpcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cdTAwM2V1c2VyLCBcdTAwMjZyLVx1MDAzZXJpbmdfcmVnaW9uKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNDg1LX1cbi0tXG5pb191cmluZy9yZWdpc3Rlci5jPTcwMz1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX21lbV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICp1YXJnKVxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzM2LVx0aWYgKGNvcHlfdG9fdXNlcihyZF91cHRyLCBcdTAwMjZyZCwgc2l6ZW9mKHJkKSkpIHtcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzM3Olx0XHRpb19mcmVlX3JlZ2lvbihjdHgtXHUwMDNldXNlciwgXHUwMDI2cmVnaW9uKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzM4LVx0XHRyZXR1cm4gLUVGQVVMVDtcbi0tXG5pb191cmluZy96Y3J4LmM9NDEyPXN0YXRpYyB2b2lkIGlvX2ZyZWVfcmJ1Zl9yaW5nKHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxKVxuaW9fdXJpbmcvemNyeC5jLTQxMy17XG5pb191cmluZy96Y3J4LmM6NDE0Olx0aW9fZnJlZV9yZWdpb24oaWZxLVx1MDAzZXVzZXIsIFx1MDAyNmlmcS1cdTAwM2VycV9yZWdpb24pO1xuaW9fdXJpbmcvemNyeC5jLTQxNS1cdGlmcS1cdTAwM2VycS5yaW5nID0gSU9fVVJJTkdfUFRSX1BPSVNPTjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Njk0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGlvX21lbV9hbGxvY19jb21wb3VuZGAgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayBpbiBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYC4gVGhlIGNvcmUgcHJvYmxlbSBzZWVtcyB0byBiZSB0aGUgd2F5IHdlJiMzOTtyZSBhbGxvY2F0aW5nIHBhZ2VzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYGFsbG9jX3BhZ2VzKGdmcCwgb3JkZXIpYCBhbmQgdGhlbiBpbmNyZW1lbnRzIGBwYWdlc1tpXSA9IHBhZ2UgJiM0MzsgaWAuIFRoZSBzbmVha3kgaXNzdWUgaGVyZSBpcyBgZ2V0X29yZGVyKClgIOKAkyBpdCYjMzk7cyByb3VuZGluZyB1cCwgbWVhbmluZyB0aGUgYWxsb2NhdGlvbiBtaWdodCBiZSAqbGFyZ2VyKiB0aGFuIHdoYXQgdGhlIGV4cG9zZWQgcmVnaW9uIGFjdHVhbGx5IG5lZWRzLiBXZSYjMzk7cmUgZWZmZWN0aXZlbHkgcmVzZXJ2aW5nIG1vcmUgbWVtb3J5IHRoYW4gd2UmIzM5O3JlIHVzaW5nLCBhbmQgdGhhdCYjMzk7cyBub3QgaWRlYWwuCgpUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgY29ycmVjdGluZyB0aGlzIGJ5IHNvbWVob3cgYWNjb3VudGluZyBmb3IgdGhlc2UgJiMzNDtleHRyYSYjMzQ7IHBhZ2VzLCBwcmVzdW1hYmx5IGZyZWVpbmcgdGhlbSBjb3JyZWN0bHkgaW4gYGlvX2ZyZWVfcmVnaW9uYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZm9jdXMgc2hvdWxkIGJlOiBob3cgZG8gd2UgdHJhY2sgdGhlc2UgZXh0cmEgcGFnZXMsIGFuZCBob3cgYXJlIHdlIGVuc3VyaW5nIHRoZXkgZ2V0IHJlbGVhc2VkIHdoZW4gdGhlIHJlZ2lvbiBpcyBmcmVlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBpbnRlcmFjdCB0byBiZSBjZXJ0YWluLgoKTXkgcHJpbWFyeSBmb2N1cyB3aWxsIGJlIG9uIHRoZXNlIGZ1bmN0aW9uczogYGlvX2NyZWF0ZV9yZWdpb25gLCBgaW9fZnJlZV9yZWdpb25gLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYW5kIGBpb19hbGxvY2F0ZV9yYnVmX3JpbmdgLiBUaGUgZml4ICpzaG91bGQqIGJlIGlzb2xhdGVkIHRvIHRoZSByZWdpb24gbWFuYWdlbWVudCBmdW5jdGlvbnMsIHdoaWNoIGlzIGdvb2QuCgpJIG5lZWQgdG8gY29uZmlybSBpZiBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAgaXMgdXNlci1leHBvc2VkIGJlY2F1c2UgdGhhdCB3b3VsZCBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBmYXIgbW9yZSBhY2Nlc3NpYmxlLCBhbmQgdGh1cywgbW9yZSBkYW5nZXJvdXMuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCBpcywgdGhyb3VnaCBgaW9fdXJpbmdfcmVnaXN0ZXJgIHdpdGggdGhlIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgZmxhZy4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SU9SSU5HX1JFR0lTVEVSX01FTV9SRUdJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDktXHRcdGJyZWFrO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYzo5NTA6XHRjYXNlIElPUklOR19SRUdJU1RFUl9NRU1fUkVHSU9OOlxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NTEtXHRcdHJldCA9IC1FSU5WQUw7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDczOTUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIG5vdGVzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgSS9PIFJpbmcgUmVnaXN0cmF0aW9uKioKCkFscmlnaHQsIHNvIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgaXMgZGVmaW5pdGVseSBleHBvc2VkIOKAkyBnb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZC4gTm93LCBsZXQmIzM5O3Mgc2VlIGhvdyB0aGUgcmVnaXN0cmF0aW9uIG9mIHZhcmlvdXMgcmluZyBzdHJ1Y3R1cmVzIGlzIGhhbmRsZWQuIEkgc2VlIHRoYXQgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AgaXMgc3BlY2lmaWNhbGx5IGludm9rZWQgd2hlbiB0aGUgZmxhZyBgSU9SSU5HX1JFR0lTVEVSX1BCVUZfUklOR2AgaXMgc2V0LiBTaW1pbGFybHksIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGlzIGNvcnJlY3RseSBjYWxsZWQgd2l0aCBgSU9SSU5HX1JFR0lTVEVSX1JFU0laRV9SSU5HU2AuIFRoaXMgYWxsIGFsaWducyB3aXRoIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgcmVnaXN0ZXJpbmcgdGhvc2UgYnVmZmVyIGFuZCByZXNpemluZyByaW5nIGNvbXBvbmVudHMuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmluZyBidWZmZXJzIHRoZW1zZWx2ZXMgYXJlIGFsbG9jYXRlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpb19hbGxvY2F0ZV9yYnVmX3JpbmdgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgb3ZlcmFsbCByZWdpc3RyYXRpb24gYW5kIGFsbG9jYXRpb24gc2NoZW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgcmVnaXN0cmF0aW9uIGNhbGxzLCBzbyBJIGNhbiBlbnN1cmUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHNvbGlkIGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX2FsbG9jYXRlX3JidWZfcmluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy96Y3J4LmM9MzczPXN0YXRpYyB2b2lkIGlvX2ZpbGxfemNyeF9vZmZzZXRzKHN0cnVjdCBpb191cmluZ196Y3J4X29mZnNldHMgKm9mZnNldHMpXG4tLVxuaW9fdXJpbmcvemNyeC5jLTM3OS1cbmlvX3VyaW5nL3pjcnguYzozODA6c3RhdGljIGludCBpb19hbGxvY2F0ZV9yYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmMtMzgxLVx0XHRcdFx0IHN0cnVjdCBpb196Y3J4X2lmcSAqaWZxLFxuLS1cbmlvX3VyaW5nL3pjcnguYz04ODQ9aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTk2OS1cbmlvX3VyaW5nL3pjcnguYzo5NzA6XHRyZXQgPSBpb19hbGxvY2F0ZV9yYnVmX3JpbmcoY3R4LCBpZnEsIFx1MDAyNnJlZywgXHUwMDI2cmQsIGlkKTtcbmlvX3VyaW5nL3pjcnguYy05NzEtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTY1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSS9PIFJpbmcgWkNSWCBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIGJlaW5nIGNhbGxlZCB3aXRoIGBJT1JJTkdfUkVHSVNURVJfWkNSWGAuIFRoYXQmIzM5O3MgdGhlIGtleS4gVGhpcyBtZWFucyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCBpbXBhY3Qgb2YgdGhlc2UgY2FsbHMgd2l0aGluIHRoZSBJL08gcmluZyBmcmFtZXdvcmsuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIHByb2JhYmx5IGZvY3VzIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgLCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCwgb2YgY291cnNlLCB0aGUgdGFyZ2V0IGBpb19yZWdpc3Rlcl96Y3J4YCB0byBnZXQgYSBmdWxsIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuCgpUaGUgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBJT19VUklOR2AsIHdoaWNoIGlzIHN0YW5kYXJkLgoKQnV0IEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSB0aGF0IHRoZSBgSU9fVVJJTkdfWkNSWGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYWN0aXZlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgY2FsbC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMuLi4gWWVzLCBmb3VuZCBpdC4gR29vZC4gTm93LCBpcyBpdCB1c2VyLWNvbmZpZ3VyYWJsZT8gVGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgZGV0ZXJtaW5lIGhvdyB0aGlzIGZlYXR1cmUgaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IHRvIHByb3ZpZGUgYSBtZWFuaW5nZnVsIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB0aGlzIG1lYW5zIHRvIHRoZSB1c2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU9fVVJJTkdfWkNSWCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnLTUtXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcbmlvX3VyaW5nL0tjb25maWctNy1cdGRlZl9ib29sIHlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ1NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJT19VUklORyBDb25maWd1cmF0aW9uIEFuYWx5c2lzKioKCkFscmlnaHQsIHNvIGBkZWZfYm9vbCB5YCBmb3IgYHlgIG1lYW5zIGl0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZCAtIGlmIGBJT19VUklOR2AgaXMgdXAsIGFuZCBpdHMgcHJlcmVxdWlzaXRlIGhhcmR3YXJlIGFuZCBzZXR0aW5ncyBhcmUgbWV0LCB0aGVuIGB5YCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQuIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIHBhcnNlIHRoZXJlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZ28gbG9vayBhdCBgaW9fdXJpbmcvS2NvbmZpZ2AuIEkgbmVlZCB0byBwcmVjaXNlbHkgZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPX1VSSU5HX1pDUlhgLiBXZSBjYW4mIzM5O3QgcmVseSBvbiBhc3N1bXB0aW9ucyBpbiB0aGlzIGdhbWUuIEkgbmVlZCB0byBrbm93IHRoZSBleGFjdCBidWlsZCBjb25maWd1cmF0aW9uIGltcGFjdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgc3BlbGxzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpb191cmluZy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgaW9fdXJpbmcgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgSU9fVVJJTkdfWkNSWFxuICAgNzpcdFx0ZGVmX2Jvb2wgeVxuICAgODpcdFx0ZGVwZW5kcyBvbiBJT19VUklOR1xuICAgOTpcdFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcbiAgMTA6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAxMTpcdFx0ZGVwZW5kcyBvbiBORVRfUlhfQlVTWV9QT0xMXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIElPX1VSSU5HX0JQRlxuICAxNDpcdFx0ZGVmX2Jvb2wgeVxuICAxNTpcdFx0ZGVwZW5kcyBvbiBCUEZcbiAgMTY6XHRcdGRlcGVuZHMgb24gTkVUXG4gIDE3Olx0XG4gIDE4Olx0Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcbiAgMTk6XHRcdGRlZl9ib29sIHlcbiAgMjA6XHRcdGRlcGVuZHMgb24gSU9fVVJJTkdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkxMQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZXBlbmRlbmNpZXMgYW5kIENvbmZpZ3VyYXRpb24gZm9yIElPX1VSSU5HX1pDUlgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBJT19VUklOR19aQ1JYYCwgYW5kIGl0JiMzOTtzIHByZXR0eSBjbGVhciB0aGlzIGZlYXR1cmUgaXMgaW50ZXJ0d2luZWQgd2l0aCBzZXZlcmFsIG90aGVyczogc3BlY2lmaWNhbGx5LCBgSU9fVVJJTkdgLCBgUEFHRV9QT09MYCwgYElORVRgLCBhbmQgYE5FVF9SWF9CVVNZX1BPTExgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgd2UgbmVlZCB0byBiZSByZWFsbHkgY2F1dGlvdXMgYWJvdXQgZGVwZW5kZW5jaWVzLiBUbyBiZSBhYnNvbHV0ZWx5IHNhZmUsIHdlIGNvdWxkIGluY2x1ZGUgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYCB3aXRoaW4gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LCBidXQgaG9uZXN0bHksIGBJT19VUklOR2AgaXRzZWxmIGlzIHByb2JhYmx5IHRoZSBtb3N0IGNyaXRpY2FsIGRlcGVuZGVuY3ksIGFuZCBpcyBsaWtlbHkgdGhlIGNvcmUgZGVwZW5kZW5jeS4gSXQmIzM5O3MgdGhlIGJpZyBvbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgZG9uJiMzOTt0IHRyaXAgdXAgb24gYW55IHN1YnRsZSBkZXBlbmRlbmNpZXMuCgpSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyIGFuZCBsZXQmIzM5O3MgZ28gY2hlY2sgdGhlIG51YW5jZXMgb2YgYE5FVF9SWF9CVVNZX1BPTExgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX1JYX0JVU1lfUE9MTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcbi0tXG5uZXQvS2NvbmZpZy0zNDktXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcbm5ldC9LY29uZmlnLTM1MS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODM4MQoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBQQUdFX1BPT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTQ4Nz1jb25maWcgTkVUX0RFVkxJTktcbi0tXG5uZXQvS2NvbmZpZy00OTAtXG5uZXQvS2NvbmZpZzo0OTE6Y29uZmlnIFBBR0VfUE9PTFxubmV0L0tjb25maWctNDkyLVx0Ym9vbFxubmV0L0tjb25maWctNDkzLVxubmV0L0tjb25maWc6NDk0OmNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcbm5ldC9LY29uZmlnLTQ5NS1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDQ3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIGBORVRfUlhfQlVTWV9QT0xMYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgYm9vbGVhbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkmIzM5O3JlIGJlaW5nIHNlbGVjdGVkIGJ5IG90aGVyIGNvbmZpZ3VyYXRpb25zLCBub3QgZGlyZWN0bHkgcHJvbXB0ZWQgZm9yLiBUaGlzIG1lYW5zIHRoZWlyIHZhbHVlcyBhcmUgYmVpbmcgZGV0ZXJtaW5lZCBpbmRpcmVjdGx5LCBwcm9iYWJseSBieSBkZXBlbmRlbmNpZXMgb3Igb3RoZXIgc2V0dGluZ3MuIE15IGZvY3VzIG5vdyBpcyBvbiBmaWd1cmluZyBvdXQgKndoYXQqIGV4YWN0bHkgaXMgZHJpdmluZyB0aGUgc2VsZWN0aW9uIG9mIGBORVRfUlhfQlVTWV9QT0xMYC4gVW5kZXJzdGFuZGluZyB0aGUgdXBzdHJlYW0gZGVwZW5kZW5jaWVzIG9mIHRoZXNlIGtpbmRzIG9mIGZsYWdzIGlzIGNyaXRpY2FsIGZvciBkZWJ1Z2dpbmcgYW5kIGZvciBvcHRpbWl6aW5nIHRoZSBvdmVyYWxsIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBkaWcgaW4gYW5kIGZpZ3VyZSBvdXQgdGhlIGNoYWluIHRoYXQgbGVhZHMgdG8gdGhpcyBzZXR0aW5nIGJlaW5nIGVuYWJsZWQgb3IgZGlzYWJsZWQuIFRoaXMgd2lsbCBnaXZlIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHdpZGVyIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVUX1JYX0JVU1lfUE9MTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NjczCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgUlggQnVzeSBQb2xsaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgbmV0d29yayByZWNlaXZlIGJ1c3kgcG9sbGluZy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyBhbHdheXMgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBob3cgYE5FVF9SWF9CVVNZX1BPTExgIGlzIHVzZWQuIEluc3RlYWQgb2YgYSBnZW5lcmFsIHNlYXJjaCwgSSBuZWVkIHRvIGJlIHByZWNpc2UuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgYGdyZXBgIGluIHRoZSBgbmV0L2AgZGlyZWN0b3J5LiBUaGF0IHNlZW1zIGxpa2UgdGhlIG1vc3QgcmVsZXZhbnQgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gbG9va2luZyBmb3IgYWxsIGluc3RhbmNlcyBvZiBgTkVUX1JYX0JVU1lfUE9MTGAsIHRvIHNlZSB3aGVyZSBhbmQgaG93IGl0JiMzOTtzIGRlZmluZWQgYW5kIHV0aWxpemVkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmsgc3RhY2suIFRoaXMgc2hvdWxkIHByb3ZpZGUgaW5zaWdodHMgaW50byB0aGUgY2lyY3Vtc3RhbmNlcyB3aGVyZSBidXN5IHBvbGxpbmcgaXMgaW1wbGVtZW50ZWQsIGFuZCBpZGVhbGx5LCBzaGVkIGxpZ2h0IG9uIGFueSBzcGVjaWZpYyBkZXZpY2VzIG9yIGludGVyZmFjZXMgaXQmIzM5O3MgdGFyZ2V0aW5nLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIHF1aWNrZXIgdGhhbiBhIGJyb2FkIHNlYXJjaCwgbGVhZGluZyBtZSBzdHJhaWdodCB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGViYXNlLiBUaGVuIEkgY2FuIHN0YXJ0IHBpZWNpbmcgdG9nZXRoZXIgdGhlIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O05FVF9SWF9CVVNZX1BPTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9LY29uZmlnPTM0Mj1jb25maWcgQ0dST1VQX05FVF9DTEFTU0lEXG4tLVxubmV0L0tjb25maWctMzQ5LVxubmV0L0tjb25maWc6MzUwOmNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXG5uZXQvS2NvbmZpZy0zNTEtXHRib29sXG4tLVxubmV0L2NvcmUvZGV2LmM9Njg1MT1zdGF0aWMgdm9pZCBza2JfZGVmZXJfZnJlZV9mbHVzaCh2b2lkKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTY4NzItXG5uZXQvY29yZS9kZXYuYzo2ODczOiNpZiBkZWZpbmVkKENPTkZJR19ORVRfUlhfQlVTWV9QT0xMKVxubmV0L2NvcmUvZGV2LmMtNjg3NC1cbi0tXG5uZXQvY29yZS9kZXYuYz03MDYxPXZvaWQgbmFwaV9yZXN1bWVfaXJxcyh1bnNpZ25lZCBpbnQgbmFwaV9pZClcbi0tXG5uZXQvY29yZS9kZXYuYy03MDgxLVxubmV0L2NvcmUvZGV2LmM6NzA4MjojZW5kaWYgLyogQ09ORklHX05FVF9SWF9CVVNZX1BPTEwgKi9cbm5ldC9jb3JlL2Rldi5jLTcwODMtXG4tLVxubmV0L2NvcmUvZmlsdGVyLmM9OTg3OT1zdGF0aWMgdTMyIGJwZl9jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcbi0tXG5uZXQvY29yZS9maWx0ZXIuYy0xMDA3MS1cdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IF9fc2tfYnVmZiwgbmFwaV9pZCk6XG5uZXQvY29yZS9maWx0ZXIuYzoxMDA3MjojaWYgZGVmaW5lZChDT05GSUdfTkVUX1JYX0JVU1lfUE9MTClcbm5ldC9jb3JlL2ZpbHRlci5jLTEwMDczLVx0XHQqaW5zbiYjNDM7JiM0MzsgPSBCUEZfTERYX01FTShCUEZfVywgc2ktXHUwMDNlZHN0X3JlZywgc2ktXHUwMDNlc3JjX3JlZyxcbi0tXG5uZXQvY29yZS9za2J1ZmYuYz0xNTU2PXN0YXRpYyB2b2lkIF9fY29weV9za2JfaGVhZGVyKHN0cnVjdCBza19idWZmICpuZXcsIGNvbnN0IHN0cnVjdCBza19idWZmICpvbGQpXG4tLVxubmV0L2NvcmUvc2tidWZmLmMtMTU4OS0jZW5kaWZcbm5ldC9jb3JlL3NrYnVmZi5jOjE1OTA6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvY29yZS9za2J1ZmYuYy0xNTkxLVx0Q0hFQ0tfU0tCX0ZJRUxEKG5hcGlfaWQpO1xuLS1cbm5ldC9jb3JlL3NvY2suYz0xMTk1PWludCBza19zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvY29yZS9zb2NrLmMtMTIzMy1cdFx0cmV0dXJuIC1FTk9QUk9UT09QVDtcbm5ldC9jb3JlL3NvY2suYzoxMjM0OiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxubmV0L2NvcmUvc29jay5jLTEyMzUtXHRjYXNlIFNPX0JVU1lfUE9MTDpcbi0tXG5uZXQvY29yZS9zb2NrLmM9MTczMj1pbnQgc2tfZ2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2NvcmUvc29jay5jLTIwNjYtXG5uZXQvY29yZS9zb2NrLmM6MjA2NzojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcbm5ldC9jb3JlL3NvY2suYy0yMDY4LVx0Y2FzZSBTT19CVVNZX1BPTEw6XG4tLVxubmV0L2NvcmUvc29jay5jLTIxMDQtXG5uZXQvY29yZS9zb2NrLmM6MjEwNTojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcbm5ldC9jb3JlL3NvY2suYy0yMTA2LVx0Y2FzZSBTT19JTkNPTUlOR19OQVBJX0lEOlxuLS1cbm5ldC9jb3JlL3NvY2suYz0zNzQ0PXZvaWQgc29ja19pbml0X2RhdGFfdWlkKHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrICpzaywga3VpZF90IHVpZClcbi0tXG5uZXQvY29yZS9zb2NrLmMtMzc5My1cbm5ldC9jb3JlL3NvY2suYzozNzk0OiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxubmV0L2NvcmUvc29jay5jLTM3OTUtXHRzay1cdTAwM2Vza19uYXBpX2lkXHRcdD1cdDA7XG4tLVxubmV0L2NvcmUvc29jay5jPTQ0NjE9c3Vic3lzX2luaXRjYWxsKHByb3RvX2luaXQpO1xuLS1cbm5ldC9jb3JlL3NvY2suYy00NDY0LVxubmV0L2NvcmUvc29jay5jOjQ0NjU6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvY29yZS9zb2NrLmMtNDQ2Ni1ib29sIHNrX2J1c3lfbG9vcF9lbmQodm9pZCAqcCwgdW5zaWduZWQgbG9uZyBzdGFydF90aW1lKVxuLS1cbm5ldC9jb3JlL3NvY2suYz00NDc5PUVYUE9SVF9TWU1CT0woc2tfYnVzeV9sb29wX2VuZCk7XG5uZXQvY29yZS9zb2NrLmM6NDQ4MDojZW5kaWYgLyogQ09ORklHX05FVF9SWF9CVVNZX1BPTEwgKi9cbm5ldC9jb3JlL3NvY2suYy00NDgxLVxuLS1cbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jPTQzMD1zdGF0aWMgc3RydWN0IGN0bF90YWJsZSBuZXRfY29yZV90YWJsZVtdID0ge1xuLS1cbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTU3MS0jZW5kaWYgLyogQ09ORklHX05FVF9GTE9XX0xJTUlUICovXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYzo1NzI6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYy01NzMtXHR7XG4tLVxubmV0L3NvY2tldC5jLTExNS1cbm5ldC9zb2NrZXQuYzoxMTY6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQvc29ja2V0LmMtMTE3LXVuc2lnbmVkIGludCBzeXNjdGxfbmV0X2J1c3lfcmVhZCBfX3JlYWRfbW9zdGx5O1xuLS1cbm5ldC94ZHAveHNrLmM9MTMxNj1zdGF0aWMgYm9vbCB4c2tfbm9fd2FrZXVwKHN0cnVjdCBzb2NrICpzaylcbm5ldC94ZHAveHNrLmMtMTMxNy17XG5uZXQveGRwL3hzay5jOjEzMTg6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXG5uZXQveGRwL3hzay5jLTEzMTktXHQvKiBQcmVmZXIgYnVzeS1wb2xsaW5nLCBza2lwIHRoZSB3YWtldXAuICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMjk4CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVF9SWF9CVVNZX1BPTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcbi0tXG5uZXQvS2NvbmZpZy0zNDktXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcbm5ldC9LY29uZmlnLTM1MS1cdGJvb2xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEzOTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBgTkVUX1JYX0JVU1lfUE9MTGAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGBORVRfUlhfQlVTWV9QT0xMYCBvcHRpb24sIGFuZCBpdCYjMzk7cyBwb3BwaW5nIHVwIGFnYWluLiBJdCYjMzk7cyB0aW1lIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGhvdyB0aGlzIGlzIGJlaW5nIHNlbGVjdGVkLiBXaGF0JiMzOTtzIHRoZSBkZWNpc2lvbiB0cmVlIGhlcmU/IFdoYXQgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBpbmZsdWVuY2luZyBpdHMgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbj8gSXMgaXQgdGllZCB0byBhIHNwZWNpZmljIG5ldHdvcmsgZHJpdmVyLCBvciBhIGJyb2FkZXIgYXJjaGl0ZWN0dXJhbCBjaG9pY2U/IEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGxlYWRzIHRvIHRoaXMgc2V0dGluZyBiZWluZyBlbmFibGVkLiBUaGUgZ29hbCBpcyBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9SWF9CVVNZX1BPTEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYwMwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgYSBDdXJpb3VzIEtjb25maWcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGBORVRfUlhfQlVTWV9QT0xMYCB0aGluZy4uLiBpdCYjMzk7cyBub3QgcHJvbXB0aW5nIG1lIGZvciBpbnB1dCwgYW5kIGl0JiMzOTtzIG5vdCBiZWluZyBzZWxlY3RlZCBieSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zPyBUaGF0JiMzOTtzIHVudXN1YWwuIFVzdWFsbHksIHRoZXJlJiMzOTtzIHNvbWUgc29ydCBvZiBkZXBlbmRlbmN5IG9yIGNvbmRpdGlvbmFsIHNlbGVjdGlvbiBpbiB0aGUgS2NvbmZpZyBmaWxlcy4gVGhpcyB3YXJyYW50cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBvcHRpb24gZXhpc3RzIGFuZCBob3cgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXNlZCwgZXZlbiBpZiBpdCYjMzk7cyBpbXBsaWNpdGx5IGVuYWJsZWQgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9LY29uZmlnYCBmaWxlIGFuZCBzdGFydCBhcm91bmQgbGluZSAzNTAuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbiBpbiB0aGF0IHNlY3Rpb24uIEhvcGVmdWxseSwgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgd2lsbCBzaGVkIHNvbWUgbGlnaHQgb24gdGhpcyB1bmV4cGVjdGVkIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzQ1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzNDU6XHRcdHNlbGVjdCBTT0NLX0NHUk9VUF9EQVRBXG4gMzQ2Olx0XHRoZWxwXG4gMzQ3Olx0XHQgIENncm91cCBzdWJzeXN0ZW0gZm9yIHVzZSBhcyBnZW5lcmFsIHB1cnBvc2Ugc29ja2V0IGNsYXNzaWQgbWFya2VyIHRoYXQgaXNcbiAzNDg6XHRcdCAgYmVpbmcgdXNlZCBpbiBjbHNfY2dyb3VwIGFuZCBmb3IgbmV0ZmlsdGVyIG1hdGNoaW5nLlxuIDM0OTpcdFxuIDM1MDpcdGNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXG4gMzUxOlx0XHRib29sXG4gMzUyOlx0XHRkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXHUwMDI2XHUwMDI2ICFORVRDT05TT0xFKVxuIDM1MzpcdFxuIDM1NDpcdGNvbmZpZyBCUUxcbiAzNTU6XHRcdGJvb2xcbiAzNTY6XHRcdHByb21wdCBcJiMzNDtFbmFibGUgQnl0ZSBRdWV1ZSBMaW1pdHNcJiMzNDtcbiAzNTc6XHRcdGRlcGVuZHMgb24gU1lTRlNcbiAzNTg6XHRcdHNlbGVjdCBEUUxcbiAzNTk6XHRcdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjA2MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSYjMzk7cmUgbXkgb3duOgoKKipBbmFseXppbmcgS2VybmVsIENvbmZpZ3VyYXRpb24gRGVmYXVsdHMqKgoKUmlnaHQsIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IGEgZGVmYXVsdCBzZXR0aW5nLiBUaGUgaW5pdGlhbCB0aG91Z2h0LCBgZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUICZhbXA7JmFtcDsgIU5FVENPTlNPTEUpYCwgZGlyZWN0bHkgdHJhbnNsYXRlcyB0byAmIzM0O2l0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdC4mIzM0OyBNYWtlcyBzZW5zZSwgaXQmIzM5O3MgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNvbmRpdGlvbmFsIGxvZ2ljLiBJZiBSZWFsLVRpbWUgUHJlZW1wdGlvbiBpc24mIzM5O3QgZW5hYmxlZCwgaXQgZGVmYXVsdHMgdG8gJiMzOTt5JiMzOTssICpvciogaWYgUmVhbC1UaW1lIFByZWVtcHRpb24gKmlzKiBlbmFibGVkLCBhbmQgKk5ldGNvbnNvbGUgaXMgbm90KiwgaXQgYWxzbyBkZWZhdWx0cyB0byAmIzM5O3kmIzM5Oy4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIHRoYXQgc2NlbmFyaW8uCgpOb3csIGEgbW9yZSBjcnVjaWFsIHF1ZXN0aW9uIGFyaXNlczogV2hhdCBhYm91dCBgUEFHRV9QT09MYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byB0aGlzIGluaXRpYWwgZGVmYXVsdC4gV2hlcmUgZG9lcyBgUEFHRV9QT09MYCBmaXQgaW50byBhbGwgdGhpcz8gSXMgaXQgZGVwZW5kZW50IG9uIHRoaXMgZGVmYXVsdCwgb3IgaXMgdGhpcyB0aGUgYW50ZWNlZGVudCB0aGF0IGZlZWRzIGludG8gdGhlIGRldGVybWluYXRpb24gb2YgdGhlIGBQQUdFX1BPT0xgIG9wdGlvbj8gSSBuZWVkIHRvIGFuYWx5emUgaXRzIGludGVyZGVwZW5kZW5jaWVzLCBpdCYjMzk7cyB1c2UgY2FzZXMsIGFuZCBob3cgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24gbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBrZXJuZWwgY29uZmlndXJhdGlvbiwgZXNwZWNpYWxseSByZWdhcmRpbmcgcmVhbC10aW1lIGNvbnN0cmFpbnRzIGFuZCBuZXR3b3JrIGRlYnVnZ2luZy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBudWFuY2UgbGllcywgdW5kZXJzdGFuZGluZyBob3cgdGhlc2Ugc2VlbWluZ2x5IHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGludGVycmVsYXRlIGFuZCBpbmZsdWVuY2UgcGVyZm9ybWFuY2UgYW5kIHN5c3RlbSBzdGFiaWxpdHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0ODUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ4NTpcdFx0ICB3aXRoIHRoZSBoZWxwIG9mIEJQRiBwcm9ncmFtcy5cbiA0ODY6XHRcbiA0ODc6XHRjb25maWcgTkVUX0RFVkxJTktcbiA0ODg6XHRcdGJvb2xcbiA0ODk6XHRcdGRlZmF1bHQgblxuIDQ5MDpcdFxuIDQ5MTpcdGNvbmZpZyBQQUdFX1BPT0xcbiA0OTI6XHRcdGJvb2xcbiA0OTM6XHRcbiA0OTQ6XHRjb25maWcgUEFHRV9QT09MX1NUQVRTXG4gNDk1Olx0XHRkZWZhdWx0IG5cbiA0OTY6XHRcdGJvb2wgXCYjMzQ7UGFnZSBwb29sIHN0YXRzXCYjMzQ7XG4gNDk3Olx0XHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxuIDQ5ODpcdFx0aGVscFxuIDQ5OTpcdFx0ICBFbmFibGUgcGFnZSBwb29sIHN0YXRpc3RpY3MgdG8gdHJhY2sgcGFnZSBhbGxvY2F0aW9uIGFuZCByZWN5Y2xpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI1ODgKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFBBR0VfUE9PTCBGbGFnKioKClJpZ2h0LCBzbyBgUEFHRV9QT09MYCBpcyBlc3NlbnRpYWxseSBhIGJvb2xlYW4gZmxhZy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgaXRzIHVzYWdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG1lY2hhbmlzbXMgaW4gdGhlIHN5c3RlbSBhcmUgbWFraW5nIGRlY2lzaW9ucyBiYXNlZCBvbiB0aGlzIGZsYWcsIHdoaWNoIG1lYW5zIEkgaGF2ZSB0byBpZGVudGlmeSB0aGUgc2VsZWN0aW9uIGNyaXRlcmlhIGFuZCB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHJlc3VsdGluZyBiZWhhdmlvci4gSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nIGZvciBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBtYWNyb3MsIG9yIGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVmZXJlbmNlIGBQQUdFX1BPT0xgLiBVbmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciB3aWxsIGJlIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFBBR0VfUE9PTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTQzNT1jb25maWcgVkVUSFxuZHJpdmVycy9uZXQvS2NvbmZpZy00MzYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIGV0aGVybmV0IHBhaXIgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQzNzpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNDM4LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDctXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0ODpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTQ0PWNvbmZpZyBYRU5fTkVUREVWX0ZST05URU5EXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTU0OS1cdGRlZmF1bHQgeVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODctXHRkZXBlbmRzIG9uIFBBR0VfU0laRV9MRVNTX1RIQU5fNjRLQlxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L0tjb25maWc6NjExOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTItXHRzZWxlY3QgTkVUX1NIQVBFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnPTE4PWNvbmZpZyBORVRfQUlST0hBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjEtXHRzZWxlY3QgTkVUX0FJUk9IQV9OUFVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnPTE4PWNvbmZpZyBBTElCQUJBX0VFQVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMS1cdGRlcGVuZHMgb24gNjRCSVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTcyPWNvbmZpZyBCQ01HRU5FVFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODAtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjgxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy04Mi1cdHNlbGVjdCBCUk9BRENPTV9QSFkgaWYgQVJDSF9CQ00yODM1XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yMDc9Y29uZmlnIEJOWFRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxMy1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyMTQ6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxNS1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1OD1jb25maWcgQk5HRVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYxLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI2MjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYzLVx0c2VsZWN0IEFVWElMSUFSWV9CVVNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI2OT1jb25maWcgQkNNQVNQXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzUtXHRzZWxlY3QgTURJT19CQ01fVU5JTUFDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI3NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjc3LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvS2NvbmZpZz02PWNvbmZpZyBFTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIFBDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWctMTAtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZz0xOT1jb25maWcgVFNORVBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTIzLVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvS2NvbmZpZzoyNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWctMjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9MjM9Y29uZmlnIEZFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMxLVx0c2VsZWN0IEZJWEVEX1BIWVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6MzI6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zMy1cdGltcGx5IFBBR0VfUE9PTF9TVEFUU1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnPTE4PWNvbmZpZyBHVkVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMS1cdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWctMjMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9OTE9Y29uZmlnIEhOUzNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NC1cdHNlbGVjdCBORVRfREVWTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6OTU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZz0xNDc9Y29uZmlnIEhJQk1DR0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTMtXHRzZWxlY3QgUkVBTFRFS19QSFlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnOjE1NDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnLTE1NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc9Nj1jb25maWcgSElOSUMzXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE0LVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnOjE1Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnPTQ9Y29uZmlnIExJQkVUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O0NvbW1vbiBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpXCYjMzQ7IGlmIENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc6NjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnLTctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctNjMtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY1Olx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTAtXHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MzE9Y29uZmlnIE9DVEVPTlRYMl9QRlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzU6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM2LVx0c2VsZWN0IENSWVBUT19MSUJfQUVTIGlmIE1BQ1NFQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc9MTQ9Y29uZmlnIE5FVF9NRURJQVRFS19TT0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIwLVx0c2VsZWN0IEdFTkVSSUNfQUxMT0NBVE9SXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnOjIxOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoyMjpcdHNlbGVjdCBQQUdFX1BPT0xfU1RBVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjMtXHRzZWxlY3QgUENTX01US19MWU5YSVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZz02PWNvbmZpZyBNTFg0X0VOXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnLTktXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWc6MTA6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMTEtXHRzZWxlY3QgTUxYNF9DT1JFXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9Mjk9Y29uZmlnIE1MWDVfQ09SRV9FTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnLTMxLVx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFx1MDAyNlx1MDAyNiBFVEhFUk5FVCBcdTAwMjZcdTAwMjYgSU5FVCBcdTAwMjZcdTAwMjYgUENJIFx1MDAyNlx1MDAyNiBNTFg1X0NPUkVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc6MzM6XHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZy0zNC1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnPTMzPWNvbmZpZyBNTFhTV19QQ0lcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM1LVx0ZGVwZW5kcyBvbiBQQ0kgXHUwMDI2XHUwMDI2IEhBU19JT01FTSBcdTAwMjZcdTAwMjYgTUxYU1dfQ09SRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzozNjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seHN3L0tjb25maWctMzctXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc9MjA9Y29uZmlnIEZCTklDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI3LVx0c2VsZWN0IE5FVF9ERVZMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6Mjg6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXHRzZWxlY3QgUENTX1hQQ1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy04LVx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6OTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctMTAtXHRzZWxlY3QgVkNBUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0yOD1jb25maWcgTEFOOTY5WF9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMzAtXHRkZXBlbmRzIG9uIFNQQVJYNV9TV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy0zMi1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZz0xOD1jb25maWcgTUlDUk9TT0ZUX01BTkFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZy0yMy1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnLTI1LVx0c2VsZWN0IE5FVF9TSEFQRVJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnPTIwPWNvbmZpZyBJT05JQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWctMjUtXHRzZWxlY3QgRElNTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcGVuc2FuZG8vS2NvbmZpZy0yNy1cdHNlbGVjdCBBVVhJTElBUllfQlVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnPTExMD1jb25maWcgUlRBU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTEzLVx0c2VsZWN0IENSQzMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc9Mjk9Y29uZmlnIFJBVkJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzUtXHRzZWxlY3QgTURJT19CSVRCQU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctMzctXHRzZWxlY3QgUEhZTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWc9MjU9Y29uZmlnIFNOSV9ORVRTRUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0yOC1cdHNlbGVjdCBQSFlMSUJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMzAtXHRzZWxlY3QgTUlJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0yPWNvbmZpZyBTVE1NQUNfRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy04LVx0c2VsZWN0IFBDU19YUENTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWUxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0yOC1cdGRlcGVuZHMgb24gUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMwLVx0c2VsZWN0IEZXX0xPQURFUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NTA9Y29uZmlnIFRJX0NQU1dcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU1LVx0c2VsZWN0IE1GRF9TWVNDT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTU3LVx0c2VsZWN0IFJFR01BUFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9NjU9Y29uZmlnIFRJX0NQU1dfU1dJVENIREVWXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy02OS1cdGRlcGVuZHMgb24gVElfQ1BUUyB8fCAhVElfQ1BUU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNzEtXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMS1cdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcdHNlbGVjdCBQQUdFX1BPT0xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAzLVx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz0yMDQ9Y29uZmlnIFRJX0lDU1NHX1BSVUVUSF9TUjFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIwOC1cdHNlbGVjdCBUSV9LM19DUFBJX0RFU0NfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTIxMC1cdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0Ncbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIxLVx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZz0yPWNvbmZpZyBNVDc2X0NPUkVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZzo0Olx0c2VsZWN0IFBBR0VfUE9PTFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnLTUtXG4tLVxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxuLS1cbmtlcm5lbC9icGYvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxua2VybmVsL2JwZi9LY29uZmlnOjM2Olx0c2VsZWN0IFBBR0VfUE9PTCBpZiBORVRcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cdGRlZmF1bHQgblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjk5MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIFBBR0VfUE9PTCBhbmQgaW9fdXJpbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpZiBgTkVUYCBpcyBkZWZpbmVkLCBgQlBGX1NZU0NBTExgIGlzIGdvaW5nIHRvIGNob29zZSBgUEFHRV9QT09MYC4gVGhhdCBzdHJvbmdseSBzdWdnZXN0cyBpdCYjMzk7cyBsaWtlbHkgdG8gYmUgZW5hYmxlZC4gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSBhbmQgZW5zdXJlIGNvbnNpc3RlbmN5IGluIG91ciBjb25maWd1cmF0aW9ucywgSSYjMzk7bSBnb2luZyB0byBhZGQgYFBBR0VfUE9PTGAgZGlyZWN0bHkgdG8gYEVuYWJsZUNvbmZpZ3NgLiBUaGlzIHdpbGwgcmVtb3ZlIGFueSBhbWJpZ3VpdHkuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIGRvdWJsZS1jaGVjayB0aGUgYGlvX3VyaW5nL0tjb25maWdgIGZpbGUgYWdhaW4sIG1ha2Ugc3VyZSB0aGVyZSBhcmVuJiMzOTt0IGFueSBkZXBlbmRlbmNpZXMgb3Igc3BlY2lmaWMgc2V0dGluZ3MgSSYjMzk7dmUgbWlzc2VkLiBCZXR0ZXIgdG8gYmUgY2VydGFpbiwgZXNwZWNpYWxseSB3aGVuIGRlYWxpbmcgd2l0aCBjcml0aWNhbCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2lvX3VyaW5nL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBpb191cmluZyBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBJT19VUklOR19aQ1JYXG4gICA3Olx0XHRkZWZfYm9vbCB5XG4gICA4Olx0XHRkZXBlbmRzIG9uIElPX1VSSU5HXG4gICA5Olx0XHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxuICAxMDpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gIDExOlx0XHRkZXBlbmRzIG9uIE5FVF9SWF9CVVNZX1BPTExcbiAgMTI6XHRcbiAgMTM6XHRjb25maWcgSU9fVVJJTkdfQlBGXG4gIDE0Olx0XHRkZWZfYm9vbCB5XG4gIDE1Olx0XHRkZXBlbmRzIG9uIEJQRlxuICAxNjpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgMTc6XHRcbiAgMTg6XHRjb25maWcgSU9fVVJJTkdfQlBGX09QU1xuICAxOTpcdFx0ZGVmX2Jvb2wgeVxuICAyMDpcdFx0ZGVwZW5kcyBvbiBJT19VUklOR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ0MwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDQ2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRGVwZW5kZW5jaWVzIGFuZCBGb2N1cyBTeW1ib2xzIGZvciBJT19VUklOR19aQ1JYKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgSU9fVVJJTkdfWkNSWGAgdGhpbmcuIEZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IGNvbXBvbmVudHMgYXJlIGluIHBsYWNlLiBCYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCBpdCBsb29rcyBsaWtlIGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAgYXJlIGNydWNpYWwuICBgSU5FVGAgaXMgdXN1YWxseSBlbmFibGVkLCBidXQgaXQgd29uJiMzOTt0IGh1cnQgdG8gYmUgZXhwbGljaXQuIGBORVRfUlhfQlVTWV9QT0xMYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNvIHRoYXQmIzM5O3MgZ29vZC4gYFBBR0VfUE9PTGAgaXMgbWFuYWdlZCBieSBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIHNldCwgc28gdGhhdCYjMzk7cyBzb21ldGhpbmcgdG8ga2VlcCBpbiBtaW5kLiBMZXQmIzM5O3MgaW5jbHVkZSB0aGVzZSBpbiBgRW5hYmxlQ29uZmlnc2AuCgpOb3csIEkmIzM5O20gZm9jdXNpbmcgb24gdGhlIGNvcmUgZnVuY3Rpb25zLiBJIG5lZWQgdG8gcmV2aXNpdCBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmDigJR0aGV5IHNlZW0gdG8gYmUgdGhlIHByaW1hcnkgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZC4gQmV5b25kIHRob3NlLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYW5kIGBpb19yZWdpc3Rlcl96Y3J4YCBhcmUgbGlrZWx5IHRoZSBlbnRyeSBwb2ludHMuCgpMZXQmIzM5O3MgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGVzZSAmIzM0O3JlZ2lzdGVyJiMzNDsgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCB0aHJvdWdoIHRoZSBgSU9SSU5HX1JFR0lTVEVSXypgIG1lY2hhbmlzbS4gT2theSwgYSBxdWljayBjaGVjayBjb25maXJtczogYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gIGlzIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGlzIGBJT1JJTkdfUkVHSVNURVJfUkVTSVpFX1JJTkdTYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AgaXMgYElPUklOR19SRUdJU1RFUl9QQlVGX1JJTkdgLCBhbmQgZmluYWxseSBgaW9fcmVnaXN0ZXJfemNyeGAgaXMgYElPUklOR19SRUdJU1RFUl9aQ1JYYC4gUGVyZmVjdC4KClNvLCBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGUgZm9sbG93aW5nIHRvIG15IGBGb2N1c1N5bWJvbHNgIGxpc3Q6IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgLCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCBgaW9fcmVnaXN0ZXJfemNyeGAuCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nLCBzbyBJJiMzOTtsbCBjaGVjayBmb3IgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IG1heSBiZSBpbXBvcnRhbnQuIGBpb19tZW1fYWxsb2NfY29tcG91bmRgIGlzIHN0YXRpYywgc28gSSBjYW4gaWdub3JlIHRoYXQuIGBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXNgIGFuZCBgaW9fcmVnaW9uX3Bpbl9wYWdlc2AgYXJlIGFsc28gc3RhdGljLCBzbyB0aGV5JiMzOTtyZSBub3QgdXNlZnVsIGluIHRoaXMgY29udGV4dC4gTGV0JiMzOTtzIGJyaWVmbHkgY2hlY2sgYGlvX2FsbG9jYXRlX3NjcV91cmluZ3NgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19hbGxvY2F0ZV9zY3FfdXJpbmdzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL2lvX3VyaW5nLmM9MjcyMT1ib29sIGlvX2lzX3VyaW5nX2ZvcHMoc3RydWN0IGZpbGUgKmZpbGUpXG4tLVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzI1LVxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyNzI2OnN0YXRpYyBfX2NvbGQgaW50IGlvX2FsbG9jYXRlX3NjcV91cmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy9pb191cmluZy5jLTI3MjctXHRcdFx0XHRcdCBzdHJ1Y3QgaW9fY3R4X2NvbmZpZyAqY29uZmlnKVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmM9Mjk3Mz1zdGF0aWMgX19jb2xkIGludCBpb191cmluZ19jcmVhdGUoc3RydWN0IGlvX2N0eF9jb25maWcgKmNvbmZpZylcbi0tXG5pb191cmluZy9pb191cmluZy5jLTMwNDktXG5pb191cmluZy9pb191cmluZy5jOjMwNTA6XHRyZXQgPSBpb19hbGxvY2F0ZV9zY3FfdXJpbmdzKGN0eCwgY29uZmlnKTtcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzA1MS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NzIyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkluaXRpYWwgSW1wcmVzc2lvbnMgb2YgdGhlIGlvX3VyaW5nIENvZGViYXNlKioKCkFscmlnaHQsIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCYjMzk7cyBwcmV0dHkgY2xlYXIgd2hlcmUgdGhlIGFjdGlvbiBzdGFydHMuIGBpb19hbGxvY2F0ZV9zY3FfdXJpbmdzYCBpcyBkZWNsYXJlZCBzdGF0aWMsIHNvIGl0JiMzOTtzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBTYW1lIGRlYWwgd2l0aCBgaW9fdXJpbmdfY3JlYXRlYDsgYWxzbyBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBpb191cmluZ19zZXR1cGAuIFRoYXQgbWVhbnMgYGlvX3VyaW5nX3NldHVwYCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBzeXNjYWxsLiBUaGF0JiMzOTtzIGdvb2QsIHRoYXQgZ2l2ZXMgbWUgYSByZWFsbHkgc29saWQgZm9jdXMgc3ltYm9sIHRvIHN0YXJ0IHdpdGguIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgdGhlIHBsYWNlIHdoZXJlIGV2ZXJ5dGhpbmcgY29tZXMgdG9nZXRoZXIuIEkgY2FuIGJ1aWxkIG91dCBmcm9tIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9pb191cmluZy5jPTI5NzM9c3RhdGljIF9fY29sZCBpbnQgaW9fdXJpbmdfY3JlYXRlKHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXG4tLVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTA1LSAqL1xuaW9fdXJpbmcvaW9fdXJpbmcuYzozMTA2OnN0YXRpYyBsb25nIGlvX3VyaW5nX3NldHVwKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgaW9fdXJpbmdfcGFyYW1zIF9fdXNlciAqcGFyYW1zKVxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTA3LXtcbi0tXG5pb191cmluZy9pb191cmluZy5jPTMxMjM9c3RhdGljIGlubGluZSBpbnQgaW9fdXJpbmdfYWxsb3dlZCh2b2lkKVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzE0NC1cbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE0NTpTWVNDQUxMX0RFRklORTIoaW9fdXJpbmdfc2V0dXAsIHUzMiwgZW50cmllcyxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzE0Ni1cdFx0c3RydWN0IGlvX3VyaW5nX3BhcmFtcyBfX3VzZXIgKiwgcGFyYW1zKVxuLS1cbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzE1My1cbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE1NDpcdHJldHVybiBpb191cmluZ19zZXR1cChlbnRyaWVzLCBwYXJhbXMpO1xuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTU1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NDgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcva2J1Zi5jPTYxMT1pbnQgaW9fbWFuYWdlX2J1ZmZlcnNfbGVnYWN5KHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpXG4tLVxuaW9fdXJpbmcva2J1Zi5jLTYyOC1cbmlvX3VyaW5nL2tidWYuYzo2Mjk6aW50IGlvX3JlZ2lzdGVyX3BidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcbmlvX3VyaW5nL2tidWYuYy02MzAte1xuLS1cbmlvX3VyaW5nL2tidWYuaD04MD1pbnQgaW9fbWFuYWdlX2J1ZmZlcnNfbGVnYWN5KHN0cnVjdCBpb19raW9jYiAqcmVxLCB1bnNpZ25lZCBpbnQgaXNzdWVfZmxhZ3MpO1xuaW9fdXJpbmcva2J1Zi5oLTgxLVxuaW9fdXJpbmcva2J1Zi5oOjgyOmludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpO1xuaW9fdXJpbmcva2J1Zi5oLTgzLWludCBpb191bnJlZ2lzdGVyX3BidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZyk7XG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy04ODctXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjg4ODpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nKGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtODg5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk2MjcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGlmIHRoZXkgYXJlIG15IG93bjoKCioqUG9uZGVyaW5nIFJpbmcgQnVmZmVyIFJlZ2lzdHJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBJJiMzOTttIHRha2luZyBhIGxvb2sgYXQgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AuIEhtbSwgbm90IHN0YXRpYy4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gT2theSwgbGV0JiMzOTtzIGtlZXAgdGhhdCBpbiBtaW5kLiBOb3csIHdoYXQgYWJvdXQgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2A/IEFoLCB0aGF0IG9uZSAqaXMqIHN0YXRpYy4gUmlnaHQsIHJpZ2h0LiBHb3R0YSBxdWlja2x5IGNvbnNpZGVyIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhhdCBkaXN0aW5jdGlvbi4gTGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBpbmRlZWQgdGhlIGNhc2UuIE9rYXksIGNvbmZpcm1pbmcuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgcmF0aW9uYWxlIGJlaGluZCBtYWtpbmcgb25lIHB1YmxpYyBhbmQgdGhlIG90aGVyIHByaXZhdGUuLi4gSSBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2lvX3VyaW5nLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpb191cmluZy9yZWdpc3Rlci5jPTQ4MD1zdGF0aWMgdm9pZCBpb19yZWdpc3Rlcl9mcmVlX3JpbmdzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNDk3LVxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo0OTg6c3RhdGljIGludCBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXG5pb191cmluZy9yZWdpc3Rlci5jLTQ5OS17XG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDctXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjk0ODpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzKGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQ5LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwNDkKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHRzOgoKKipTdGF0aWMgRnVuY3Rpb24gT2JzZXJ2YXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnMsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGFuZCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCB0aGV5JiMzOTtyZSBib3RoIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGEgY291cGxlIG9mIGltcG9ydGFudCB0aGluZ3MuIFByaW1hcmlseSwgdGhlIGBzdGF0aWNgIGtleXdvcmQgbWVhbnMgdGhlc2UgZnVuY3Rpb25zIGhhdmUgKmludGVybmFsIGxpbmthZ2UqLiBUaGV5IGFyZSBub3QgZXhwb3NlZCB0byBvdGhlciB0cmFuc2xhdGlvbiB1bml0cyB3aXRoaW4gdGhlIHByb2plY3QuIEl0IHN1Z2dlc3RzIHRoZXNlIGFyZSB2ZXJ5IHNwZWNpZmljLCBpbnRlcm5hbCB1dGlsaXR5IGZ1bmN0aW9ucywgcHJvYmFibHkgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgd2l0aGluIHRoZSBtb2R1bGUgb3IgZmlsZSB0aGV5JiMzOTtyZSBkZWZpbmVkIGluLiBUaGV54oCZcmUgcGFydCBvZiBhIHByaXZhdGUgaW50ZXJmYWNlLCBsaWtlbHkgZGVzaWduZWQgZm9yIGZpbmUtZ3JhaW5lZCBjb250cm9sIG9yIHNwZWNpZmljIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzIHdpdGhpbiB3aGF0ZXZlciBzeXN0ZW0gdGhpcyBjb2RlIGlzIHBhcnQgb2YuIEkgaW1tZWRpYXRlbHkgc3RhcnQgd29uZGVyaW5nIGFib3V0IHRoZSBzY29wZSBhbmQgb3JnYW5pemF0aW9uIG9mIHRoZSBjb2RlYmFzZTsgdGhlc2Ugc3RhdGljIGRlY2xhcmF0aW9ucyBzdWdnZXN0IGEgd2VsbC1kZWZpbmVkIG1vZHVsZSBzdHJ1Y3R1cmUsIGFuZCBJJiMzOTtkIGJlIGludGVyZXN0ZWQgdG8gc2VlIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIEtub3dpbmcgdGhleSBhcmUgc3RhdGljLCBJIGFudGljaXBhdGUgdGhleSB3b3VsZCBiZSBkaXJlY3RseSBjYWxsZWQgd2l0aGluIHRoZSBzYW1lIGZpbGUsIG9yIHBlcmhhcHMgd2l0aGluIGlubGluZSBmdW5jdGlvbnMgaW4gdGhlIGZpbGUsIHdpdGggbWluaW1hbCBpbnRlcmFjdGlvbnMgd2l0aCBleHRlcm5hbCBjb21wb25lbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb19yZWdpc3Rlcl9tZW1fcmVnaW9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL3JlZ2lzdGVyLmM9NDk4PXN0YXRpYyBpbnQgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnKVxuLS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzAyLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo3MDM6c3RhdGljIGludCBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqdWFyZylcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzA0LXtcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTk1My1cdFx0XHRicmVhaztcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTU0Olx0XHRyZXQgPSBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKGN0eCwgYXJnKTtcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTU1LVx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA1NTMKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgaW9fdXJpbmcgUmVnaXN0cmF0aW9uIE1lY2hhbmlzbSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoZXNlIGBpb191cmluZ2Agb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGBfX2lvX3VyaW5nX3JlZ2lzdGVyYC4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgYWN0dWFsbHkgZG9pbmcuIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiB0aGlzIGVudHJ5IHBvaW50IHRvIGdldCBhIGdyYXNwIG9uIGhvdyByZXNvdXJjZXMgYXJlIGFjdHVhbGx5IG1hcHBlZCBhbmQgbWFuYWdlZCBmb3IgYGlvX3VyaW5nYC4gVGltZSB0byB0cmFjZSBpdHMgY2FsbCBmbG93IGFuZCB1bmRlcnN0YW5kIGl0cyBhcmd1bWVudHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faW9fdXJpbmdfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03MDM9c3RhdGljIGludCBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqdWFyZylcbi0tXG5pb191cmluZy9yZWdpc3Rlci5jLTc0OS1cbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzUwOnN0YXRpYyBpbnQgX19pb191cmluZ19yZWdpc3RlcihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgb3Bjb2RlLFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03NTEtXHRcdFx0ICAgICAgIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZ3MpXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYz0xMDE3PVNZU0NBTExfREVGSU5FNChpb191cmluZ19yZWdpc3RlciwgdW5zaWduZWQgaW50LCBmZCwgdW5zaWduZWQgaW50LCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy0xMDM5LVx0bXV0ZXhfbG9jayhcdTAwMjZjdHgtXHUwMDNldXJpbmdfbG9jayk7XG5pb191cmluZy9yZWdpc3Rlci5jOjEwNDA6XHRyZXQgPSBfX2lvX3VyaW5nX3JlZ2lzdGVyKGN0eCwgb3Bjb2RlLCBhcmcsIG5yX2FyZ3MpO1xuaW9fdXJpbmcvcmVnaXN0ZXIuYy0xMDQxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk3NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgaG93IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaXQ6CgoqKkZvY3VzaW5nIG9uIGlvX3VyaW5nX3JlZ2lzdGVyIGZvciBBbmFseXNpcyoqCgpSaWdodCwgYF9faW9fdXJpbmdfcmVnaXN0ZXJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCYjMzk7cyBvbmx5IGNhbGxlZCBpbnRlcm5hbGx5LCB3aXRoaW4gdGhlIHNhbWUgY29tcGlsYXRpb24gdW5pdCBhcyBpdCYjMzk7cyBkZWZpbmVkLiBBbmQgaXQmIzM5O3MgY2FsbGVkIGZyb20gdGhlIGBpb191cmluZ19yZWdpc3RlcmAgc3lzdGVtIGNhbGwgZW50cnkgcG9pbnQuIEdpdmVuIHRoaXMsIGBpb191cmluZ19yZWdpc3RlcmAgaXRzZWxmIGlzIGdvaW5nIHRvIGJlIHRoZSBtb3JlIHJlbGV2YW50IGZ1bmN0aW9uIHRvIGV4YW1pbmUgZmlyc3QuIEl0JiMzOTtzIHRoZSBwdWJsaWMgZmFjZSBvZiB0aGUgc3lzdGVtIGNhbGwuIEl0JiMzOTtzIGEga2V5IHN5bWJvbC4gSXQmIzM5O3Mgd2hlcmUgdGhlIGFjdGlvbiAqc3RhcnRzKiBmcm9tIHRoZSB1c2VyJiMzOTtzIHBlcnNwZWN0aXZlLCBzbyB0aGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBjb25jZW50cmF0ZSBteSBpbml0aWFsIGVmZm9ydHMuIE5vdywgbGV0JiMzOTtzIGFsc28gY2hlY2sgb3V0IGBpb19yZWdpc3Rlcl96Y3J4YCBhcyBhIHBvdGVudGlhbCBhcmVhIG9mIGludGVyZXN0IHNpbmNlIHRoaXMgaXMgcmVsYXRlZCB0byByZWdpc3RyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lvX3JlZ2lzdGVyX3pjcngmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpb191cmluZy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXG4tLVxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDEtXHRcdFx0YnJlYWs7XG5pb191cmluZy9yZWdpc3Rlci5jOjk0MjpcdFx0cmV0ID0gaW9fcmVnaXN0ZXJfemNyeChjdHgsIGFyZyk7XG5pb191cmluZy9yZWdpc3Rlci5jLTk0My1cdFx0YnJlYWs7XG4tLVxuaW9fdXJpbmcvemNyeC5jPTg1Nz1zdGF0aWMgaW50IHpjcnhfdmFsaWRhdGVfbm90aWZfc3RhdHMoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXG4tLVxuaW9fdXJpbmcvemNyeC5jLTg4My1cbmlvX3VyaW5nL3pjcnguYzo4ODQ6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmMtODg1LVx0XHQgICAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXG4tLVxuaW9fdXJpbmcvemNyeC5oPTg4PWludCBpb196Y3J4X2N0cmwoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZyk7XG5pb191cmluZy96Y3J4Lmg6ODk6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtOTAtXHRcdFx0IHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpO1xuLS1cbmlvX3VyaW5nL3pjcnguaD05Nj1zdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqaW9femNyeF9nZXRfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL3pjcnguaC05OC0jZWxzZVxuaW9fdXJpbmcvemNyeC5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXG5pb191cmluZy96Y3J4LmgtMTAwLVx0XHRcdFx0ICAgc3RydWN0IGlvX3VyaW5nX3pjcnhfaWZxX3JlZyBfX3VzZXIgKmFyZylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE3MjIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgSU8gUmVnaW9uIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBzbyBgaW9fcmVnaXN0ZXJfemNyeGAgaXNuJiMzOTt0IHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYWNjZXNzaWJsZSBleHRlcm5hbGx5LCBhbmQgdGhhdCBicm9hZGVucyBpdHMgcG90ZW50aWFsIGltcGFjdC4gTXkgYXR0ZW50aW9uIGlzIG5vdyBob25lZCBvbiBhIHNwZWNpZmljIHNldCBvZiBzeW1ib2xzIHJlbGF0ZWQgdG8gSU8gcmVnaW9uIG1hbmFnZW1lbnQgYW5kIHNwZWNpZmljYWxseSwgSU8gcmluZyBtYW5hZ2VtZW50OgoKKiAgIGBpb19jcmVhdGVfcmVnaW9uYAoqICAgYGlvX2ZyZWVfcmVnaW9uYAoqICAgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AKKiAgIGBpb19yZWdpc3Rlcl96Y3J4YAoqICAgYGlvX3VyaW5nX3NldHVwYAoqICAgYGlvX3VyaW5nX3JlZ2lzdGVyYAoKR2l2ZW4gdGhlIGNvbnRleHQsIEkgdGhpbmsgaXQmIzM5O3MgcHJ1ZGVudCB0byBleGFtaW5lIGhvdyBgaW9fdXJpbmdfbW1hcGAgd29ya3MsIGFzIGl0IHNlZW1zIGEgbGlrZWx5IHBvaW50IG9mIGludGVyc2VjdGlvbiBmb3IgdGhlc2UgZnVuY3Rpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBhdCB0aGUgbWVtb3J5IG1hcHBpbmcgbGF5ZXIgYW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3Qgd2l0aGluIGl0LiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB0ZXJtcyBvZiBtYW5hZ2luZyByZWdpb25zIGFuZCBidWZmZXJzIHdpdGhpbiB0aGUgSU8gcmluZyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpb191cmluZ19tbWFwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW9fdXJpbmcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2lvX3VyaW5nL2lvX3VyaW5nLmM9MjcwOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBpb191cmluZ19mb3BzID0ge1xuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzA5LVx0LnJlbGVhc2VcdD0gaW9fdXJpbmdfcmVsZWFzZSxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjcxMDpcdC5tbWFwXHRcdD0gaW9fdXJpbmdfbW1hcCxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjcxMS1cdC5nZXRfdW5tYXBwZWRfYXJlYSA9IGlvX3VyaW5nX2dldF91bm1hcHBlZF9hcmVhLFxuLS1cbmlvX3VyaW5nL21lbW1hcC5jPTMwNz1zdGF0aWMgaW50IGlvX3JlZ2lvbl9tbWFwKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxuLS1cbmlvX3VyaW5nL21lbW1hcC5jLTMxNy1cbmlvX3VyaW5nL21lbW1hcC5jOjMxODpfX2NvbGQgaW50IGlvX3VyaW5nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKVxuaW9fdXJpbmcvbWVtbWFwLmMtMzE5LXtcbi0tXG5pb191cmluZy9tZW1tYXAuYz0zNDQ9dW5zaWduZWQgbG9uZyBpb191cmluZ19nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgbG9uZyBhZGRyLFxuLS1cbmlvX3VyaW5nL21lbW1hcC5jLTM5My0gKiBEcm9wIHRoZSBwYWdlcyB0aGF0IHdlcmUgaW5pdGlhbGx5IHJlZmVyZW5jZWQgYW5kIGFkZGVkIGluXG5pb191cmluZy9tZW1tYXAuYzozOTQ6ICogaW9fdXJpbmdfbW1hcCgpLiBXZSBjYW5ub3QgaGF2ZSBoYWQgYSBtcmVtYXAoKSBhcyB0aGF0IGlzbiYjMzk7dCBzdXBwb3J0ZWQsXG5pb191cmluZy9tZW1tYXAuYy0zOTUtICogaGVuY2UgdGhlIHZtYSBzaG91bGQgYmUgaWRlbnRpY2FsIHRvIHRoZSBvbmUgd2UgaW5pdGlhbGx5IHJlZmVyZW5jZWQgYW5kXG4tLVxuaW9fdXJpbmcvbWVtbWFwLmM9NDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaW9fdXJpbmdfbm9tbXVfdm1fb3BzID0ge1xuLS1cbmlvX3VyaW5nL21lbW1hcC5jLTQxMC1cbmlvX3VyaW5nL21lbW1hcC5jOjQxMTppbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXG5pb191cmluZy9tZW1tYXAuYy00MTIte1xuLS1cbmlvX3VyaW5nL21lbW1hcC5oPTE1PXVuc2lnbmVkIGxvbmcgaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcbi0tXG5pb191cmluZy9tZW1tYXAuaC0xNy1cdFx0XHRcdFx0IHVuc2lnbmVkIGxvbmcgZmxhZ3MpO1xuaW9fdXJpbmcvbWVtbWFwLmg6MTg6aW50IGlvX3VyaW5nX21tYXAoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTtcbmlvX3VyaW5nL21lbW1hcC5oLTE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjYzMwoJCQkJCQkJb3V0cHV0OiAxNzcKCQkJCQkJCXRob3VnaHRzOiA4MTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVhc29uaW5nIGZvciBGdXp6aW5nIGlvX3VyaW5nIE1lbW9yeSBNYW5hZ2VtZW50KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGdvYWwgaXMgdG8gZGV0ZXJtaW5lIHRoZSBvcHRpbWFsIGZ1enppbmcgdGFyZ2V0cyBhbmQgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byB0aGlzIGBpb191cmluZ2AgcGF0Y2gsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBtZW1vcnkgbWFwcGluZy4gU2luY2UgdGhpcyBwYXRjaCBmdW5kYW1lbnRhbGx5IGFsdGVycyBtZW1vcnkgbWFwcGluZyBsb2dpYyB3aXRoaW4gYGlvX3VyaW5nYCwgdGhlIG5vbi1zdGF0aWMgYGlvX3VyaW5nX21tYXBgIGZ1bmN0aW9uLCBiZWluZyBhIHBhcnQgb2YgdGhlIGZpbGUgb3BlcmF0aW9ucywgaW1tZWRpYXRlbHkgY2F0Y2hlcyBteSBhdHRlbnRpb24gYXMgYSBjcml0aWNhbCBzeW1ib2wgdG8gYW5hbHl6ZS4KCkkmIzM5O3ZlIHRha2VuIGEgbG9vayBhdCBhIHJhbmdlIG9mIGZ1bmN0aW9ucywgd2hpY2ggSSYjMzk7dmUgZHViYmVkICYjMzQ7Rm9jdXNTeW1ib2xzLCYjMzQ7IGJleW9uZCB0aGUgbW1hcCBmdW5jdGlvbjogYGlvX2NyZWF0ZV9yZWdpb25gLCBgaW9fZnJlZV9yZWdpb25gLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3pjcnhgLCBgaW9fdXJpbmdfc2V0dXBgLCBhbmQgYGlvX3VyaW5nX3JlZ2lzdGVyYC4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhlIHNjb3BlLCB0aGVzZSBmdW5jdGlvbnMgYXJlIGxpa2VseSB0byBwcm92aWRlIHRoZSBiZXN0IGNvbnRleHQuCgpOb3csIGxldCYjMzk7cyBtb3ZlIG9uIHRvIGNvbmZpZ3VyYXRpb25zLiBUaGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIEkgbmVlZCB0byBlbnN1cmUgaXMgZW5hYmxlZCBpcyBvYnZpb3VzbHkgYElPX1VSSU5HYC4gRGlnZ2luZyBkZWVwZXIsIHRoZXJlJiMzOTtzIGBJT19VUklOR19aQ1JYYCwgYnV0IGl0JiMzOTtzIGEgYGRlZl9ib29sIHlgLCB3aGljaCBtZWFucyBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbyBJIGNoZWNrZWQgdGhvc2U6IGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIFRodXMsIEkgY2FuIHNpbXBsaWZ5IHRoZSBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBvbmx5IGBJT19VUklOR2AuIEkgZG91YmxlLWNoZWNrZWQgYFBBR0VfUE9PTGAgdG8gc2VlIGlmIGl0JiMzOTtzIHVzZXIgc2VsZWN0YWJsZS4gSXQgdHVybnMgb3V0IHRoYXQgYFBBR0VfUE9PTGAgaXMgc2VsZWN0ZWQgYnkgbWFueSBvdGhlciBjb25maWdzLCBzbyBpdCBpcyBhbG1vc3QgY2VydGFpbmx5IGVuYWJsZWQgaW4gYSByZWFzb25hYmxlIGtlcm5lbCBjb25maWcuCgpUaGVuLCB0aGVyZSBhcmUgYElPX1VSSU5HX0JQRmAgYW5kIGBJT19VUklOR19CUEZfT1BTYC4gVGhlc2UgY2FuIGFsc28gYmUgaWdub3JlZCBzaW5jZSB0aGUgZm9jdXMgaXMgb24gdGhlIG1lbW9yeSBtYXBwaW5nLgoKQWZ0ZXIgcmV2aWV3aW5nLCBJJiMzOTttIGdvaW5nIGJhY2sgdG8gYGlvX2NyZWF0ZV9yZWdpb25gIGFuZCBgaW9fZnJlZV9yZWdpb25gLCBhcyB0aGV5IGFyZSBmdW5jdGlvbmFsIGFuZCByZWFjaGFibGUuIFRoZSBwYXRjaCBpdHNlbGYgYWRkcmVzc2VzIGEgbWVtb3J5IGFjY291bnRpbmcgYnVnIGluIGhvdyBgZ2V0X29yZGVyKClgIHJvdW5kcyB1cCBhbGxvY2F0aW9uIHNpemVzLiBUaGlzIGxlYWRzIHRvIGV4dHJhIHBhZ2VzIGJlaW5nIGFsbG9jYXRlZCB0aGFuIGFyZSBpbml0aWFsbHkgZGVzY3JpYmVkIGJ5IHRoZSByZWdpb24sIHdoaWNoIGNhdXNlcyBkaXNjcmVwYW5jaWVzIGluIHBhZ2UgYWNjb3VudGluZy4gVGhlIGNoYW5nZXMgaW52b2x2ZSBtb2RpZnlpbmcgYGlvX21lbV9hbGxvY19jb21wb3VuZGAgdG8gYWNjb3VudCBmb3IgdGhlIGV4dHJhIHBhZ2VzIGNvcnJlY3RseSBhbmQgYGlvX2ZyZWVfcmVnaW9uYCB0byBhcHByb3ByaWF0ZWx5IGZyZWUgdGhlbS4KClRoaXMgbWVtb3J5IGFjY291bnRpbmcgZml4IGlzIGRlZmluaXRlbHkgYSAqZnVuY3Rpb25hbCogY2hhbmdlIGluIHRoZSBjb3JlIG9mIGBpb191cmluZ2AgbWVtb3J5IG1hbmFnZW1lbnQuIFRoZXJlZm9yZSwgaXQmIzM5O3MgYWJzb2x1dGVseSBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGZ1enppbmcgYXR0ZW50aW9uLgoKKipJbiBzdW1tYXJ5LCBteSBhbmFseXNpcyByZXZlYWxzIHRoZSBmb2xsb3dpbmc6KioKCiogICAqKkZvY3VzIFN5bWJvbHM6KiogVGhlIG1vc3QgaW1wb3J0YW50IG9uZXMgZm9yIGZ1enppbmcgYXJlIGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3VyaW5nX21tYXBgIGFuZCB0aGUgb3RoZXIgYXNzb2NpYXRlZCBvbmVzLgoqICAgKipFbmFibGUgQ29uZmlnczoqKiBgSU9fVVJJTkdgIGlzIGVzc2VudGlhbC4KCkkmIzM5O20gbm93IHJlYWR5IHRvIHByb2NlZWQgd2l0aCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZSBmdXp6ZXIgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMjE6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lPX1VSSU5HJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aW9fY3JlYXRlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19mcmVlX3JlZ2lvbiYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl9wYnVmX3JpbmcmIzM0OywKICAgICYjMzQ7aW9fcmVnaXN0ZXJfemNyeCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19zZXR1cCYjMzQ7LAogICAgJiMzNDtpb191cmluZ19yZWdpc3RlciYjMzQ7LAogICAgJiMzNDtpb191cmluZ19tbWFwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU9fVVJJTkcmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpb19jcmVhdGVfcmVnaW9uJiMzNDssCiAgICAmIzM0O2lvX2ZyZWVfcmVnaW9uJiMzNDssCiAgICAmIzM0O2lvX3JlZ2lzdGVyX3BidWZfcmluZyYjMzQ7LAogICAgJiMzNDtpb19yZWdpc3Rlcl96Y3J4JiMzNDssCiAgICAmIzM0O2lvX3VyaW5nX3NldHVwJiMzNDssCiAgICAmIzM0O2lvX3VyaW5nX3JlZ2lzdGVyJiMzNDssCiAgICAmIzM0O2lvX3VyaW5nX21tYXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtZW1vcnkgYWNjb3VudGluZyBpc3N1ZSBpbiBpb191cmluZyBtZW1vcnkgbWFwcGluZyB3aGVyZSBnZXRfb3JkZXIoKSByb3VuZHMgdXAgdGhlIGFsbG9jYXRpb24gc2l6ZSwgcmVzdWx0aW5nIGluIGV4dHJhIHBhZ2VzIGJlaW5nIGFsbG9jYXRlZCBidXQgbm90IHByb3Blcmx5IGFjY291bnRlZCBmb3IuIEl0IG1vZGlmaWVzIGlvX21lbV9hbGxvY19jb21wb3VuZCB0byBhY2NvdW50IGZvciB0aGVzZSBleHRyYSBwYWdlcyBhbmQgaW9fZnJlZV9yZWdpb24gdG8gdW5hY2NvdW50IHRoZW0uIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGlvX3VyaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTY6NTYuMDY5NjM0NDFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzMxMTcwNjkxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19jcmVhdGVfcmVnaW9uXCIsXG4gICAgXCJpb19mcmVlX3JlZ2lvblwiLFxuICAgIFwiaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nXCIsXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gICAgXCJpb191cmluZ19zZXR1cFwiLFxuICAgIFwiaW9fdXJpbmdfcmVnaXN0ZXJcIixcbiAgICBcImlvX3VyaW5nX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBhY2NvdW50aW5nIGlzc3VlIGluIGlvX3VyaW5nIG1lbW9yeSBtYXBwaW5nIHdoZXJlIGdldF9vcmRlcigpIHJvdW5kcyB1cCB0aGUgYWxsb2NhdGlvbiBzaXplLCByZXN1bHRpbmcgaW4gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgcHJvcGVybHkgYWNjb3VudGVkIGZvci4gSXQgbW9kaWZpZXMgaW9fbWVtX2FsbG9jX2NvbXBvdW5kIHRvIGFjY291bnQgZm9yIHRoZXNlIGV4dHJhIHBhZ2VzIGFuZCBpb19mcmVlX3JlZ2lvbiB0byB1bmFjY291bnQgdGhlbS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgaW9fdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjU2LjA2OTY0MDIzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgwNjMxMDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNTIzYWE3MmY4MGUzMDU2MWJhNTJmZmJmNzdmY2UwNTQ4M2E4NzMxZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEF1ZyA2IDIxOjE2OjU0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL21lbW1hcC5jIGIvaW9fdXJpbmcvbWVtbWFwLmNcXG5pbmRleCAyM2U4YTg1MTExYmNhLi40OGMwZWIwMTI0MTIzIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL21lbW1hcC5jXFxuKysrIGIvaW9fdXJpbmcvbWVtbWFwLmNcXG5AQCAtMTYsOCArMTYsMTAgQEBcXG4gI2luY2x1ZGUgXFxcInpjcnguaFxcXCJcXG4gXFxuIHN0YXRpYyBib29sIGlvX21lbV9hbGxvY19jb21wb3VuZChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgbnJfcGFnZXMsXFxuLVxcdFxcdFxcdFxcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcXG4rXFx0XFx0XFx0XFx0ICBzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwLFxcbitcXHRcXHRcXHRcXHQgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcXG4ge1xcbitcXHR1bnNpZ25lZCBsb25nIG5yX2NvbXBvdW5kLCBleHRyYTtcXG4gXFx0c3RydWN0IHBhZ2UgKnBhZ2U7XFxuIFxcdGludCBpLCBvcmRlcjtcXG4gXFxuQEAgLTI3LDkgKzI5LDIyIEBAIHN0YXRpYyBib29sIGlvX21lbV9hbGxvY19jb21wb3VuZChzdHJ1Y3QgcGFnZSAqKnBhZ2VzLCBpbnQgbnJfcGFnZXMsXFxuIFxcdGVsc2UgaWYgKG9yZGVyKVxcbiBcXHRcXHRnZnAgfD0gX19HRlBfQ09NUDtcXG4gXFxuK1xcdC8qXFxuK1xcdCAqIGdldF9vcmRlcigpIHJvdW5kcyBhIG5vbiBwb3dlciBvZiB0d28gc2l6ZSB1cCwgc28gdGhlIGFsbG9jYXRpb25cXG4rXFx0ICogY2FuIGhvbGQgbW9yZSBwYWdlcyB0aGFuIHRoZSByZWdpb24gZXhwb3Nlcy4gQWNjb3VudCB0aG9zZSB0b28sXFxuK1xcdCAqIGFuZCBsZWF2ZSB0aGUgY29tcG91bmQgYWxsb2NhdGlvbiBhbG9uZSBpZiB0aGV5IGRvIG5vdCBmaXQuXFxuK1xcdCAqL1xcbitcXHRucl9jb21wb3VuZCA9IDFVTCBcXHUwMDNjXFx1MDAzYyBvcmRlcjtcXG4rXFx0ZXh0cmEgPSBucl9jb21wb3VuZCAtIG5yX3BhZ2VzO1xcbitcXHRpZiAoZXh0cmEgXFx1MDAyNlxcdTAwMjYgdXNlciBcXHUwMDI2XFx1MDAyNiBfX2lvX2FjY291bnRfbWVtKHVzZXIsIGV4dHJhKSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4gXFx0cGFnZSA9IGFsbG9jX3BhZ2VzKGdmcCwgb3JkZXIpO1xcbi1cXHRpZiAoIXBhZ2UpXFxuK1xcdGlmICghcGFnZSkge1xcbitcXHRcXHRpZiAoZXh0cmEgXFx1MDAyNlxcdTAwMjYgdXNlcilcXG4rXFx0XFx0XFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIGV4dHJhKTtcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnJfcGFnZXM7IGkrKylcXG4gXFx0XFx0cGFnZXNbaV0gPSBwYWdlICsgaTtcXG5AQCAtMTA1LDggKzEyMCwxNSBAQCB2b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKVxcbiBcXHR9XFxuIFxcdGlmICgobXItXFx1MDAzZWZsYWdzIFxcdTAwMjYgSU9fUkVHSU9OX0ZfVk1BUCkgXFx1MDAyNlxcdTAwMjYgbXItXFx1MDAzZXB0cilcXG4gXFx0XFx0dnVubWFwKG1yLVxcdTAwM2VwdHIpO1xcbi1cXHRpZiAobXItXFx1MDAzZW5yX3BhZ2VzIFxcdTAwMjZcXHUwMDI2IHVzZXIpXFxuLVxcdFxcdF9faW9fdW5hY2NvdW50X21lbSh1c2VyLCBtci1cXHUwMDNlbnJfcGFnZXMpO1xcbitcXHRpZiAobXItXFx1MDAzZW5yX3BhZ2VzIFxcdTAwMjZcXHUwMDI2IHVzZXIpIHtcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBucl9hY2NvdW50ZWQgPSBtci1cXHUwMDNlbnJfcGFnZXM7XFxuK1xcbitcXHRcXHQvKiBhIGNvbXBvdW5kIHJlZ2lvbiB3YXMgYWNjb3VudGVkIGZvciB0aGUgd2hvbGUgYWxsb2NhdGlvbiAqL1xcbitcXHRcXHRpZiAobXItXFx1MDAzZWZsYWdzIFxcdTAwMjYgSU9fUkVHSU9OX0ZfU0lOR0xFX1JFRilcXG4rXFx0XFx0XFx0bnJfYWNjb3VudGVkID0gMVVMIFxcdTAwM2NcXHUwMDNjIGdldF9vcmRlcihpb19yZWdpb25fc2l6ZShtcikpO1xcbitcXG4rXFx0XFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG5yX2FjY291bnRlZCk7XFxuK1xcdH1cXG4gXFxuIFxcdG1lbXNldChtciwgMCwgc2l6ZW9mKCptcikpO1xcbiB9XFxuQEAgLTE1MSw3ICsxNzMsOCBAQCBzdGF0aWMgaW50IGlvX3JlZ2lvbl9waW5fcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbiBcXG4gc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IGlvX3VyaW5nX3JlZ2lvbl9kZXNjICpyZWcsXFxuLVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBsb25nIG1tYXBfb2Zmc2V0KVxcbitcXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgbG9uZyBtbWFwX29mZnNldCxcXG4rXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlcilcXG4ge1xcbiBcXHRnZnBfdCBnZnAgPSBHRlBfS0VSTkVMX0FDQ09VTlQgfCBfX0dGUF9aRVJPIHwgX19HRlBfTk9XQVJOO1xcbiBcXHRzaXplX3Qgc2l6ZSA9IGlvX3JlZ2lvbl9zaXplKG1yKTtcXG5AQCAtMTYyLDcgKzE4NSw3IEBAIHN0YXRpYyBpbnQgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzKHN0cnVjdCBpb19tYXBwZWRfcmVnaW9uICptcixcXG4gXFx0aWYgKCFwYWdlcylcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbi1cXHRpZiAoaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHBhZ2VzLCBtci1cXHUwMDNlbnJfcGFnZXMsIHNpemUsIGdmcCkpIHtcXG4rXFx0aWYgKGlvX21lbV9hbGxvY19jb21wb3VuZChwYWdlcywgbXItXFx1MDAzZW5yX3BhZ2VzLCBzaXplLCBnZnAsIHVzZXIpKSB7XFxuIFxcdFxcdG1yLVxcdTAwM2VmbGFncyB8PSBJT19SRUdJT05fRl9TSU5HTEVfUkVGO1xcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG5AQCAtMjE3LDcgKzI0MCw3IEBAIGludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuIFxcdGlmIChyZWctXFx1MDAzZWZsYWdzIFxcdTAwMjYgSU9SSU5HX01FTV9SRUdJT05fVFlQRV9VU0VSKVxcbiBcXHRcXHRyZXQgPSBpb19yZWdpb25fcGluX3BhZ2VzKG1yLCByZWcpO1xcbiBcXHRlbHNlXFxuLVxcdFxcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCk7XFxuK1xcdFxcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCwgY3R4LVxcdTAwM2V1c2VyKTtcXG4gXFx0aWYgKHJldClcXG4gXFx0XFx0Z290byBvdXRfZnJlZTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjU3LjQ1MDkyMDM2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE3MTczNTc3Mzk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJT19VUklOR1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlvX2NyZWF0ZV9yZWdpb25cIixcbiAgICBcImlvX2ZyZWVfcmVnaW9uXCIsXG4gICAgXCJpb19yZWdpc3Rlcl9wYnVmX3JpbmdcIixcbiAgICBcImlvX3JlZ2lzdGVyX3pjcnhcIixcbiAgICBcImlvX3VyaW5nX3NldHVwXCIsXG4gICAgXCJpb191cmluZ19yZWdpc3RlclwiLFxuICAgIFwiaW9fdXJpbmdfbW1hcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGFjY291bnRpbmcgaXNzdWUgaW4gaW9fdXJpbmcgbWVtb3J5IG1hcHBpbmcgd2hlcmUgZ2V0X29yZGVyKCkgcm91bmRzIHVwIHRoZSBhbGxvY2F0aW9uIHNpemUsIHJlc3VsdGluZyBpbiBleHRyYSBwYWdlcyBiZWluZyBhbGxvY2F0ZWQgYnV0IG5vdCBwcm9wZXJseSBhY2NvdW50ZWQgZm9yLiBJdCBtb2RpZmllcyBpb19tZW1fYWxsb2NfY29tcG91bmQgdG8gYWNjb3VudCBmb3IgdGhlc2UgZXh0cmEgcGFnZXMgYW5kIGlvX2ZyZWVfcmVnaW9uIHRvIHVuYWNjb3VudCB0aGVtLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBpb191cmluZyBtZW1vcnkgbWFuYWdlbWVudCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTIzYWE3MmY4MGUzMDU2MWJhNTJmZmJmNzdmY2UwNTQ4M2E4NzMxZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMjE6MTY6NTQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pb191cmluZy9tZW1tYXAuYyBiL2lvX3VyaW5nL21lbW1hcC5jXG5pbmRleCAyM2U4YTg1MTExYmNhLi40OGMwZWIwMTI0MTIzIDEwMDY0NFxuLS0tIGEvaW9fdXJpbmcvbWVtbWFwLmNcbisrKyBiL2lvX3VyaW5nL21lbW1hcC5jXG5AQCAtMTYsOCArMTYsMTAgQEBcbiAjaW5jbHVkZSBcInpjcnguaFwiXG4gXG4gc3RhdGljIGJvb2wgaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9wYWdlcyxcbi1cdFx0XHRcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcClcbitcdFx0XHRcdCAgc2l6ZV90IHNpemUsIGdmcF90IGdmcCxcbitcdFx0XHRcdCAgc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyKVxuIHtcbitcdHVuc2lnbmVkIGxvbmcgbnJfY29tcG91bmQsIGV4dHJhO1xuIFx0c3RydWN0IHBhZ2UgKnBhZ2U7XG4gXHRpbnQgaSwgb3JkZXI7XG4gXG5AQCAtMjcsOSArMjksMjIgQEAgc3RhdGljIGJvb2wgaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucl9wYWdlcyxcbiBcdGVsc2UgaWYgKG9yZGVyKVxuIFx0XHRnZnAgfD0gX19HRlBfQ09NUDtcbiBcbitcdC8qXG4rXHQgKiBnZXRfb3JkZXIoKSByb3VuZHMgYSBub24gcG93ZXIgb2YgdHdvIHNpemUgdXAsIHNvIHRoZSBhbGxvY2F0aW9uXG4rXHQgKiBjYW4gaG9sZCBtb3JlIHBhZ2VzIHRoYW4gdGhlIHJlZ2lvbiBleHBvc2VzLiBBY2NvdW50IHRob3NlIHRvbyxcbitcdCAqIGFuZCBsZWF2ZSB0aGUgY29tcG91bmQgYWxsb2NhdGlvbiBhbG9uZSBpZiB0aGV5IGRvIG5vdCBmaXQuXG4rXHQgKi9cbitcdG5yX2NvbXBvdW5kID0gMVVMIFx1MDAzY1x1MDAzYyBvcmRlcjtcbitcdGV4dHJhID0gbnJfY29tcG91bmQgLSBucl9wYWdlcztcbitcdGlmIChleHRyYSBcdTAwMjZcdTAwMjYgdXNlciBcdTAwMjZcdTAwMjYgX19pb19hY2NvdW50X21lbSh1c2VyLCBleHRyYSkpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbiBcdHBhZ2UgPSBhbGxvY19wYWdlcyhnZnAsIG9yZGVyKTtcbi1cdGlmICghcGFnZSlcbitcdGlmICghcGFnZSkge1xuK1x0XHRpZiAoZXh0cmEgXHUwMDI2XHUwMDI2IHVzZXIpXG4rXHRcdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIGV4dHJhKTtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfcGFnZXM7IGkrKylcbiBcdFx0cGFnZXNbaV0gPSBwYWdlICsgaTtcbkBAIC0xMDUsOCArMTIwLDE1IEBAIHZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpXG4gXHR9XG4gXHRpZiAoKG1yLVx1MDAzZWZsYWdzIFx1MDAyNiBJT19SRUdJT05fRl9WTUFQKSBcdTAwMjZcdTAwMjYgbXItXHUwMDNlcHRyKVxuIFx0XHR2dW5tYXAobXItXHUwMDNlcHRyKTtcbi1cdGlmIChtci1cdTAwM2Vucl9wYWdlcyBcdTAwMjZcdTAwMjYgdXNlcilcbi1cdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG1yLVx1MDAzZW5yX3BhZ2VzKTtcbitcdGlmIChtci1cdTAwM2Vucl9wYWdlcyBcdTAwMjZcdTAwMjYgdXNlcikge1xuK1x0XHR1bnNpZ25lZCBsb25nIG5yX2FjY291bnRlZCA9IG1yLVx1MDAzZW5yX3BhZ2VzO1xuK1xuK1x0XHQvKiBhIGNvbXBvdW5kIHJlZ2lvbiB3YXMgYWNjb3VudGVkIGZvciB0aGUgd2hvbGUgYWxsb2NhdGlvbiAqL1xuK1x0XHRpZiAobXItXHUwMDNlZmxhZ3MgXHUwMDI2IElPX1JFR0lPTl9GX1NJTkdMRV9SRUYpXG4rXHRcdFx0bnJfYWNjb3VudGVkID0gMVVMIFx1MDAzY1x1MDAzYyBnZXRfb3JkZXIoaW9fcmVnaW9uX3NpemUobXIpKTtcbitcbitcdFx0X19pb191bmFjY291bnRfbWVtKHVzZXIsIG5yX2FjY291bnRlZCk7XG4rXHR9XG4gXG4gXHRtZW1zZXQobXIsIDAsIHNpemVvZigqbXIpKTtcbiB9XG5AQCAtMTUxLDcgKzE3Myw4IEBAIHN0YXRpYyBpbnQgaW9fcmVnaW9uX3Bpbl9wYWdlcyhzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXG4gc3RhdGljIGludCBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXMoc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBpb191cmluZ19yZWdpb25fZGVzYyAqcmVnLFxuLVx0XHRcdFx0ICAgIHVuc2lnbmVkIGxvbmcgbW1hcF9vZmZzZXQpXG4rXHRcdFx0XHQgICAgdW5zaWduZWQgbG9uZyBtbWFwX29mZnNldCxcbitcdFx0XHRcdCAgICBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXIpXG4ge1xuIFx0Z2ZwX3QgZ2ZwID0gR0ZQX0tFUk5FTF9BQ0NPVU5UIHwgX19HRlBfWkVSTyB8IF9fR0ZQX05PV0FSTjtcbiBcdHNpemVfdCBzaXplID0gaW9fcmVnaW9uX3NpemUobXIpO1xuQEAgLTE2Miw3ICsxODUsNyBAQCBzdGF0aWMgaW50IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXHRpZiAoIXBhZ2VzKVxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbi1cdGlmIChpb19tZW1fYWxsb2NfY29tcG91bmQocGFnZXMsIG1yLVx1MDAzZW5yX3BhZ2VzLCBzaXplLCBnZnApKSB7XG4rXHRpZiAoaW9fbWVtX2FsbG9jX2NvbXBvdW5kKHBhZ2VzLCBtci1cdTAwM2Vucl9wYWdlcywgc2l6ZSwgZ2ZwLCB1c2VyKSkge1xuIFx0XHRtci1cdTAwM2VmbGFncyB8PSBJT19SRUdJT05fRl9TSU5HTEVfUkVGO1xuIFx0XHRnb3RvIGRvbmU7XG4gXHR9XG5AQCAtMjE3LDcgKzI0MCw3IEBAIGludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXG4gXHRpZiAocmVnLVx1MDAzZWZsYWdzIFx1MDAyNiBJT1JJTkdfTUVNX1JFR0lPTl9UWVBFX1VTRVIpXG4gXHRcdHJldCA9IGlvX3JlZ2lvbl9waW5fcGFnZXMobXIsIHJlZyk7XG4gXHRlbHNlXG4tXHRcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCk7XG4rXHRcdHJldCA9IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhtciwgcmVnLCBtbWFwX29mZnNldCwgY3R4LVx1MDAzZXVzZXIpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBvdXRfZnJlZTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE2OjU3LjQ1MDkyMTc0NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4ODkwMzE0MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqaW9fdXJpbmcgTWVtb3J5IEFjY291bnRpbmcgUGF0Y2ggUmV2aWV3KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaW9fdXJpbmcvbWVtbWFwLmNgIHBhdGNoLiBJdCBzZWVtcyBsaWtlIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZSwgcHJpbWFyaWx5IGNvbmNlcm5lZCB3aXRoIG1lbW9yeSBhY2NvdW50aW5nIGR1cmluZyBpb191cmluZyBtZW1vcnkgbWFwcGluZyBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0J3MgbW9kaWZ5aW5nIGBpb19tZW1fYWxsb2NfY29tcG91bmRgIHRvIGFjY2VwdCBhIGBzdHJ1Y3QgdXNlcl9zdHJ1Y3QgKnVzZXJgIGFuZCBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIHRoZSBwYWdlIG92ZXJoZWFkIGludHJvZHVjZWQgYnkgYGdldF9vcmRlcigpYCByb3VuZGluZy4gVGhlbiwgdGhlIGNvcnJlc3BvbmRpbmcgYWRqdXN0bWVudCBpcyBtYWRlIGluIGBpb19mcmVlX3JlZ2lvbmAgdG8gdW4tYWNjb3VudCB0aG9zZSBleHRyYSBwYWdlcywgZW5zdXJpbmcgcHJvcGVyIGFjY291bnRpbmcuIEZpbmFsbHksIHRoZSBwYXRjaCB1cGRhdGVzIGBpb19yZWdpb25fYWxsb2NhdGVfcGFnZXNgIHRvIHBhc3MgdGhlIHVzZXIgY29udGV4dCB0byBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYC5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjaGFuZ2UgYWZmZWN0cyBob3cgaW9fdXJpbmcgbWFuYWdlcyBhbmQgYWNjb3VudHMgZm9yIG1lbW9yeSwgd2hpY2gsIGFzIHdlIGtub3csIGNhbiBiZSBhIGZlcnRpbGUgZ3JvdW5kIGZvciBidWdzIGFuZCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMuIERlZmluaXRlbHkgd29ydGggZnV6emluZyB0byB2YWxpZGF0ZSB0aGVzZSBjaGFuZ2VzLlxuXG5UbyBnZXQgc3RhcnRlZCB3aXRoIGZ1enppbmcsIEkgbmVlZCB0byBpZGVudGlmeSB0aGUga2V5IGZ1bmN0aW9ucyB0aGlzIGNoYW5nZSB0b3VjaGVzLiBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCBpcyBzdGF0aWMsIHNvIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGZpbGUuIEJ1dCBib3RoIGBpb19jcmVhdGVfcmVnaW9uYCBhbmQgYGlvX2ZyZWVfcmVnaW9uYCBhcmUgZXhwb3J0ZWQsIHdoaWNoIGFyZSBteSBwb2ludHMgb2YgZW50cnkuIE5vdywgbGV0IG1lIHF1aWNrbHkgc2NhbiBgaW9fdXJpbmcvbWVtbWFwLmNgIGl0c2VsZiB0byBjb25maXJtIHRoZXNlIGtleSBmdW5jdGlvbnMgYW5kIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk4NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjA2LjMzOTk1NTk5OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyMTA5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fY3JlYXRlX3JlZ2lvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvaW9fdXJpbmcuYz0yNzI2PXN0YXRpYyBfX2NvbGQgaW50IGlvX2FsbG9jYXRlX3NjcV91cmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jLTI3NDQtXFx0fVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6Mjc0NTpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNmN0eC1cXHUwMDNlcmluZ19yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9DUV9SSU5HKTtcXG5pb191cmluZy9pb191cmluZy5jLTI3NDYtXFx0aWYgKHJldClcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjc1OC1cXHR9XFxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyNzU5OlxcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcXHUwMDI2Y3R4LVxcdTAwM2VzcV9yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9TUUVTKTtcXG5pb191cmluZy9pb191cmluZy5jLTI3NjAtXFx0aWYgKHJldCkge1xcbi0tXFxuaW9fdXJpbmcva2J1Zi5jPTYyOT1pbnQgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB2b2lkIF9fdXNlciAqYXJnKVxcbi0tXFxuaW9fdXJpbmcva2J1Zi5jLTY3Ny1cXHR9XFxuaW9fdXJpbmcva2J1Zi5jOjY3ODpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNmJsLVxcdTAwM2VyZWdpb24sIFxcdTAwMjZyZCwgbW1hcF9vZmZzZXQpO1xcbmlvX3VyaW5nL2tidWYuYy02NzktXFx0aWYgKHJldClcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jPTE3ND1zdGF0aWMgaW50IGlvX3JlZ2lvbl9hbGxvY2F0ZV9wYWdlcyhzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuLS1cXG5pb191cmluZy9tZW1tYXAuYy0yMDYtXFxuaW9fdXJpbmcvbWVtbWFwLmM6MjA3OmludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuaW9fdXJpbmcvbWVtbWFwLmMtMjA4LVxcdFxcdCAgICAgc3RydWN0IGlvX3VyaW5nX3JlZ2lvbl9kZXNjICpyZWcsXFxuLS1cXG5pb191cmluZy9tZW1tYXAuaD0yMD12b2lkIGlvX2ZyZWVfcmVnaW9uKHN0cnVjdCB1c2VyX3N0cnVjdCAqdXNlciwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yKTtcXG5pb191cmluZy9tZW1tYXAuaDoyMTppbnQgaW9fY3JlYXRlX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbmlvX3VyaW5nL21lbW1hcC5oLTIyLVxcdFxcdCAgICAgc3RydWN0IGlvX3VyaW5nX3JlZ2lvbl9kZXNjICpyZWcsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTQ5OD1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNTMxLVxcdH1cXG5pb191cmluZy9yZWdpc3Rlci5jOjUzMjpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNm4ucmluZ19yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9DUV9SSU5HKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTUzMy1cXHRpZiAocmV0KVxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy01NjEtXFx0fVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NTYyOlxcdHJldCA9IGlvX2NyZWF0ZV9yZWdpb24oY3R4LCBcXHUwMDI2bi5zcV9yZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX09GRl9TUUVTKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTU2My1cXHRpZiAocmV0KSB7XFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTcwMz1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX21lbV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICp1YXJnKVxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03MzItXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo3MzM6XFx0cmV0ID0gaW9fY3JlYXRlX3JlZ2lvbihjdHgsIFxcdTAwMjZyZWdpb24sIFxcdTAwMjZyZCwgSU9SSU5HX01BUF9PRkZfUEFSQU1fUkVHSU9OKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTczNC1cXHRpZiAocmV0KVxcbi0tXFxuaW9fdXJpbmcvemNyeC5jPTM4MD1zdGF0aWMgaW50IGlvX2FsbG9jYXRlX3JidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL3pjcnguYy0zOTktXFxuaW9fdXJpbmcvemNyeC5jOjQwMDpcXHRyZXQgPSBpb19jcmVhdGVfcmVnaW9uKGN0eCwgXFx1MDAyNmlmcS1cXHUwMDNlcnFfcmVnaW9uLCByZCwgbW1hcF9vZmZzZXQpO1xcbmlvX3VyaW5nL3pjcnguYy00MDEtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjA2LjQ1NzE3MDgzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMzAzNzYzNzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGlvX3VyaW5nIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmAsIGFuZCBpdCdzIHByZXR0eSBjbGVhciB0aGV5J3JlIGludGVncmFsIHRvIHRoZSBtZW1vcnkgbWFwcGluZyB3aXRoaW4gaW9fdXJpbmcuIFRoaXMgbWFrZXMgcGVyZmVjdCBzZW5zZTsgdGhleSBhcmUgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gSSdtIHNlZWluZyBhIGJ1bmNoIG9mIG90aGVyIGtleSBmdW5jdGlvbnMg4oCTIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCwgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBgaW9fYWxsb2NhdGVfcmJ1Zl9yaW5nYCwgYW5kIGV2ZW4gYGlvX2FsbG9jYXRlX3NjcV91cmluZ3NgIOKAkyBhbGwgcmVseSBvbiBgaW9fY3JlYXRlX3JlZ2lvbmAuIFRoYXTigJlzIGEgc3Ryb25nIGluZGljYXRvciBvZiBpdHMgY2VudHJhbCByb2xlIGluIHJlc291cmNlIGFsbG9jYXRpb24uXG5cbkdpdmVuIHRoZSBpbXBvcnRhbmNlIG9mIHRoZXNlIG1lbW9yeSByZWdpb24gZnVuY3Rpb25zIGluIGlvX3VyaW5nLCBJIHRoaW5rIGl0J3MgYSBnb29kIGlkZWEgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIEtjb25maWcgc2V0dGluZ3MgdG8gbWFrZSBzdXJlIGlvX3VyaW5nIGlzIGFjdHVhbGx5IGVuYWJsZWQuIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgdG8gZW5zdXJlIHRoZSBmZWF0dXJlIGlzIGV2ZW4gcHJlc2VudCBpbiB0aGlzIGJ1aWxkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTA4LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjEwLjQ4NzU1MDg0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDQ4NjI0MTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJT19VUklOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5pdC9LY29uZmlnPTE5MTA9Y29uZmlnIEFJT1xcbi0tXFxuaW5pdC9LY29uZmlnLTE5MTctXFxuaW5pdC9LY29uZmlnOjE5MTg6Y29uZmlnIElPX1VSSU5HXFxuaW5pdC9LY29uZmlnLTE5MTktXFx0Ym9vbCBcXFwiRW5hYmxlIElPIHVyaW5nIHN1cHBvcnRcXFwiIGlmIEVYUEVSVFxcbi0tXFxuaW5pdC9LY29uZmlnPTE5Mjc9Y29uZmlnIEdDT1ZfUFJPRklMRV9VUklOR1xcbi0tXFxuaW5pdC9LY29uZmlnLTE5MzktXFxuaW5pdC9LY29uZmlnOjE5NDA6Y29uZmlnIElPX1VSSU5HX01PQ0tfRklMRVxcbmluaXQvS2NvbmZpZy0xOTQxLVxcdHRyaXN0YXRlIFxcXCJFbmFibGUgaW9fdXJpbmcgbW9jayBmaWxlcyAoRXhwZXJpbWVudGFsKVxcXCIgaWYgRVhQRVJUXFxuLS1cXG5pb191cmluZy9LY29uZmlnLTUtXFxuaW9fdXJpbmcvS2NvbmZpZzo2OmNvbmZpZyBJT19VUklOR19aQ1JYXFxuaW9fdXJpbmcvS2NvbmZpZy03LVxcdGRlZl9ib29sIHlcXG4tLVxcbmlvX3VyaW5nL0tjb25maWctMTItXFxuaW9fdXJpbmcvS2NvbmZpZzoxMzpjb25maWcgSU9fVVJJTkdfQlBGXFxuaW9fdXJpbmcvS2NvbmZpZy0xNC1cXHRkZWZfYm9vbCB5XFxuLS1cXG5pb191cmluZy9LY29uZmlnLTE3LVxcbmlvX3VyaW5nL0tjb25maWc6MTg6Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcXG5pb191cmluZy9LY29uZmlnLTE5LVxcdGRlZl9ib29sIHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MTIuOTM2MTgyMjAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ4OTg1NjQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSU9fVVJJTkcgTWVtb3J5IFJlZ2lvbiBNYW5hZ2VtZW50IERlZXAgRGl2ZSoqXG5cblJpZ2h0LCB0aGUgY29uZmlndXJhdGlvbiBpcyBkZWZpbml0ZWx5IHNldCB0byBgSU9fVVJJTkdgLCB0aGF0J3Mgb3VyIHN0YXJ0aW5nIHBvaW50LiBNeSBpbW1lZGlhdGUgZm9jdXMgdGhlbiBnb2VzIHRvIG1lbW9yeSByZWdpb24gbWFuYWdlbWVudCwgc3BlY2lmaWNhbGx5IGhvdyBpb191cmluZyBpbnRlcmFjdHMgd2l0aCBpdC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgaXQncyBoYW5kbGVkIGluIGBpb191cmluZy9tZW1tYXAuY2AuIExldCdzIGRlbHZlIGludG8gdGhlIGNydWNpYWwgZnVuY3Rpb25zOiBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmAuIEkgd2FudCB0byBzZWUgaG93IHRoZXNlIGZ1bmN0aW9ucyBlc3RhYmxpc2ggYW5kIHJlbGVhc2UgbWVtb3J5IHJlZ2lvbnMgd2l0aGluIHRoZSBjb250ZXh0IG9mIGlvX3VyaW5nLCBhbmQgSSdtIGtlZW4gdG8gZXhhbWluZSB0aGUgc3BlY2lmaWNzIG9mIGFueSBhc3NvY2lhdGVkIG1ldGFkYXRhIG9yIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGVtcGxveWVkIGZvciBzYWZlIGFjY2Vzcy4gVGltZSB0byBjcmFjayBvcGVuIHRoYXQgY29kZSBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBoYXBwZW5pbmcgYXQgdGhhdCBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE0MCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjE2LjQyNjA0MTI3WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMTMxOTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX2ZyZWVfcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9pb191cmluZy5jPTIwNzg9c3RhdGljIHZvaWQgaW9fcmluZ3NfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG5pb191cmluZy9pb191cmluZy5jLTIwNzkte1xcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjA4MDpcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIFxcdTAwMjZjdHgtXFx1MDAzZXNxX3JlZ2lvbik7XFxuaW9fdXJpbmcvaW9fdXJpbmcuYzoyMDgxOlxcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cXHUwMDNldXNlciwgXFx1MDAyNmN0eC1cXHUwMDNlcmluZ19yZWdpb24pO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjA4Mi1cXHRjdHgtXFx1MDAzZXJpbmdzID0gTlVMTDtcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM9MjE2Mz1zdGF0aWMgX19jb2xkIHZvaWQgaW9fcmluZ19jdHhfZnJlZShzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE3NS1cXHRpb19kZXN0cm95X2J1ZmZlcnMoY3R4KTtcXG5pb191cmluZy9pb191cmluZy5jOjIxNzY6XFx0aW9fZnJlZV9yZWdpb24oY3R4LVxcdTAwM2V1c2VyLCBcXHUwMDI2Y3R4LVxcdTAwM2VwYXJhbV9yZWdpb24pO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjE3Ny1cXHRtdXRleF91bmxvY2soXFx1MDAyNmN0eC1cXHUwMDNldXJpbmdfbG9jayk7XFxuLS1cXG5pb191cmluZy9rYnVmLmM9NDU4PXN0YXRpYyB2b2lkIGlvX3B1dF9ibChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgc3RydWN0IGlvX2J1ZmZlcl9saXN0ICpibClcXG4tLVxcbmlvX3VyaW5nL2tidWYuYy00NjAtXFx0aWYgKGJsLVxcdTAwM2VmbGFncyBcXHUwMDI2IElPQkxfQlVGX1JJTkcpXFxuaW9fdXJpbmcva2J1Zi5jOjQ2MTpcXHRcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIFxcdTAwMjZibC1cXHUwMDNlcmVnaW9uKTtcXG5pb191cmluZy9rYnVmLmMtNDYyLVxcdGVsc2VcXG4tLVxcbmlvX3VyaW5nL2tidWYuYz02Mjk9aW50IGlvX3JlZ2lzdGVyX3BidWZfcmluZyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL2tidWYuYy03MTAtZmFpbDpcXG5pb191cmluZy9rYnVmLmM6NzExOlxcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cXHUwMDNldXNlciwgXFx1MDAyNmJsLVxcdTAwM2VyZWdpb24pO1xcbmlvX3VyaW5nL2tidWYuYy03MTItXFx0a2ZyZWUoYmwpO1xcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmM9OTc9ZW51bSB7XFxuLS1cXG5pb191cmluZy9tZW1tYXAuYy0xMDUtXFxuaW9fdXJpbmcvbWVtbWFwLmM6MTA2OnZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpXFxuaW9fdXJpbmcvbWVtbWFwLmMtMTA3LXtcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jPTIwNz1pbnQgaW9fY3JlYXRlX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgc3RydWN0IGlvX21hcHBlZF9yZWdpb24gKm1yLFxcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmMtMjUxLW91dF9mcmVlOlxcbmlvX3VyaW5nL21lbW1hcC5jOjI1MjpcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIG1yKTtcXG5pb191cmluZy9tZW1tYXAuYy0yNTMtXFx0cmV0dXJuIHJldDtcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jPTQxMT1pbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuLS1cXG5pb191cmluZy9tZW1tYXAuYy00MjktXFx0LypcXG5pb191cmluZy9tZW1tYXAuYzo0MzA6XFx0ICogUGluIHRoZSBwYWdlcyBzbyBpb19mcmVlX3JlZ2lvbigpJ3MgcmVsZWFzZV9wYWdlcygpIGRvZXMgbm90XFxuaW9fdXJpbmcvbWVtbWFwLmMtNDMxLVxcdCAqIGRyb3AgdGhlIGxhc3QgcmVmZXJlbmNlIHdoaWxlIHRoaXMgVk1BIGV4aXN0cy4gZGVsZXRlX3ZtYSgpXFxuLS1cXG5pb191cmluZy9tZW1tYXAuaD0xOD1pbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmlvX3VyaW5nL21lbW1hcC5oLTE5LVxcbmlvX3VyaW5nL21lbW1hcC5oOjIwOnZvaWQgaW9fZnJlZV9yZWdpb24oc3RydWN0IHVzZXJfc3RydWN0ICp1c2VyLCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIpO1xcbmlvX3VyaW5nL21lbW1hcC5oLTIxLWludCBpb19jcmVhdGVfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCBzdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqbXIsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTQ4MD1zdGF0aWMgdm9pZCBpb19yZWdpc3Rlcl9mcmVlX3JpbmdzKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy00ODIte1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NDgzOlxcdGlvX2ZyZWVfcmVnaW9uKGN0eC1cXHUwMDNldXNlciwgXFx1MDAyNnItXFx1MDAzZXNxX3JlZ2lvbik7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo0ODQ6XFx0aW9fZnJlZV9yZWdpb24oY3R4LVxcdTAwM2V1c2VyLCBcXHUwMDI2ci1cXHUwMDNlcmluZ19yZWdpb24pO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNDg1LX1cXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmM9NzAzPXN0YXRpYyBpbnQgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKnVhcmcpXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTczNi1cXHRpZiAoY29weV90b191c2VyKHJkX3VwdHIsIFxcdTAwMjZyZCwgc2l6ZW9mKHJkKSkpIHtcXG5pb191cmluZy9yZWdpc3Rlci5jOjczNzpcXHRcXHRpb19mcmVlX3JlZ2lvbihjdHgtXFx1MDAzZXVzZXIsIFxcdTAwMjZyZWdpb24pO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzM4LVxcdFxcdHJldHVybiAtRUZBVUxUO1xcbi0tXFxuaW9fdXJpbmcvemNyeC5jPTQxMj1zdGF0aWMgdm9pZCBpb19mcmVlX3JidWZfcmluZyhzdHJ1Y3QgaW9femNyeF9pZnEgKmlmcSlcXG5pb191cmluZy96Y3J4LmMtNDEzLXtcXG5pb191cmluZy96Y3J4LmM6NDE0OlxcdGlvX2ZyZWVfcmVnaW9uKGlmcS1cXHUwMDNldXNlciwgXFx1MDAyNmlmcS1cXHUwMDNlcnFfcmVnaW9uKTtcXG5pb191cmluZy96Y3J4LmMtNDE1LVxcdGlmcS1cXHUwMDNlcnEucmluZyA9IElPX1VSSU5HX1BUUl9QT0lTT047XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjE2LjQ4ODE3ODU0NVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NzQ4ODI4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgbWVtb3J5IGxlYWsgaW4gYGlvX21lbV9hbGxvY19jb21wb3VuZGAuIFRoZSBjb3JlIHByb2JsZW0gc2VlbXMgdG8gYmUgdGhlIHdheSB3ZSdyZSBhbGxvY2F0aW5nIHBhZ2VzLiBTcGVjaWZpY2FsbHksIGl0IHVzZXMgYGFsbG9jX3BhZ2VzKGdmcCwgb3JkZXIpYCBhbmQgdGhlbiBpbmNyZW1lbnRzIGBwYWdlc1tpXSA9IHBhZ2UgKyBpYC4gVGhlIHNuZWFreSBpc3N1ZSBoZXJlIGlzIGBnZXRfb3JkZXIoKWAg4oCTIGl0J3Mgcm91bmRpbmcgdXAsIG1lYW5pbmcgdGhlIGFsbG9jYXRpb24gbWlnaHQgYmUgKmxhcmdlciogdGhhbiB3aGF0IHRoZSBleHBvc2VkIHJlZ2lvbiBhY3R1YWxseSBuZWVkcy4gV2UncmUgZWZmZWN0aXZlbHkgcmVzZXJ2aW5nIG1vcmUgbWVtb3J5IHRoYW4gd2UncmUgdXNpbmcsIGFuZCB0aGF0J3Mgbm90IGlkZWFsLlxuXG5UaGUgcGF0Y2ggc2VlbXMgdG8gYmUgY29ycmVjdGluZyB0aGlzIGJ5IHNvbWVob3cgYWNjb3VudGluZyBmb3IgdGhlc2UgXCJleHRyYVwiIHBhZ2VzLCBwcmVzdW1hYmx5IGZyZWVpbmcgdGhlbSBjb3JyZWN0bHkgaW4gYGlvX2ZyZWVfcmVnaW9uYC4gVGhhdCdzIHdoZXJlIHRoZSBmb2N1cyBzaG91bGQgYmU6IGhvdyBkbyB3ZSB0cmFjayB0aGVzZSBleHRyYSBwYWdlcywgYW5kIGhvdyBhcmUgd2UgZW5zdXJpbmcgdGhleSBnZXQgcmVsZWFzZWQgd2hlbiB0aGUgcmVnaW9uIGlzIGZyZWVkPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBjb2RlIGludGVyYWN0IHRvIGJlIGNlcnRhaW4uXG5cbk15IHByaW1hcnkgZm9jdXMgd2lsbCBiZSBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgLCBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAsIGFuZCBgaW9fYWxsb2NhdGVfcmJ1Zl9yaW5nYC4gVGhlIGZpeCAqc2hvdWxkKiBiZSBpc29sYXRlZCB0byB0aGUgcmVnaW9uIG1hbmFnZW1lbnQgZnVuY3Rpb25zLCB3aGljaCBpcyBnb29kLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiBgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbmAgaXMgdXNlci1leHBvc2VkIGJlY2F1c2UgdGhhdCB3b3VsZCBtYWtlIHRoaXMgdnVsbmVyYWJpbGl0eSBmYXIgbW9yZSBhY2Nlc3NpYmxlLCBhbmQgdGh1cywgbW9yZSBkYW5nZXJvdXMuIEEgcXVpY2sgY2hlY2sgcmV2ZWFscyBpdCBpcywgdGhyb3VnaCBgaW9fdXJpbmdfcmVnaXN0ZXJgIHdpdGggdGhlIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgZmxhZy4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2Njk0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE3OjIyLjQ2MzA2MzQyMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODEwMjk3NjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU9SSU5HX1JFR0lTVEVSX01FTV9SRUdJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL3JlZ2lzdGVyLmM9NzUwPXN0YXRpYyBpbnQgX19pb191cmluZ19yZWdpc3RlcihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdW5zaWduZWQgb3Bjb2RlLFxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDktXFx0XFx0YnJlYWs7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo5NTA6XFx0Y2FzZSBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTjpcXG5pb191cmluZy9yZWdpc3Rlci5jLTk1MS1cXHRcXHRyZXQgPSAtRUlOVkFMO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyMi41NDQxMDQ0NjZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MzIwNDc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2Ugbm90ZXMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRXhhbWluaW5nIEkvTyBSaW5nIFJlZ2lzdHJhdGlvbioqXG5cbkFscmlnaHQsIHNvIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAgaXMgZGVmaW5pdGVseSBleHBvc2VkIOKAkyBnb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBOb3csIGxldCdzIHNlZSBob3cgdGhlIHJlZ2lzdHJhdGlvbiBvZiB2YXJpb3VzIHJpbmcgc3RydWN0dXJlcyBpcyBoYW5kbGVkLiBJIHNlZSB0aGF0IGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgIGlzIHNwZWNpZmljYWxseSBpbnZva2VkIHdoZW4gdGhlIGZsYWcgYElPUklOR19SRUdJU1RFUl9QQlVGX1JJTkdgIGlzIHNldC4gU2ltaWxhcmx5LCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCBpcyBjb3JyZWN0bHkgY2FsbGVkIHdpdGggYElPUklOR19SRUdJU1RFUl9SRVNJWkVfUklOR1NgLiBUaGlzIGFsbCBhbGlnbnMgd2l0aCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IgZm9yIHJlZ2lzdGVyaW5nIHRob3NlIGJ1ZmZlciBhbmQgcmVzaXppbmcgcmluZyBjb21wb25lbnRzLlxuXG5Ob3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmluZyBidWZmZXJzIHRoZW1zZWx2ZXMgYXJlIGFsbG9jYXRlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBpb19hbGxvY2F0ZV9yYnVmX3JpbmdgIGZ1bmN0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIGZpdHMgaW50byB0aGUgb3ZlcmFsbCByZWdpc3RyYXRpb24gYW5kIGFsbG9jYXRpb24gc2NoZW1lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlc2UgcmVnaXN0cmF0aW9uIGNhbGxzLCBzbyBJIGNhbiBlbnN1cmUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGlzIHNvbGlkIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczOTUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyNi45MTczMTIwNTNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMzk3MjgyOTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fYWxsb2NhdGVfcmJ1Zl9yaW5nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy96Y3J4LmM9MzczPXN0YXRpYyB2b2lkIGlvX2ZpbGxfemNyeF9vZmZzZXRzKHN0cnVjdCBpb191cmluZ196Y3J4X29mZnNldHMgKm9mZnNldHMpXFxuLS1cXG5pb191cmluZy96Y3J4LmMtMzc5LVxcbmlvX3VyaW5nL3pjcnguYzozODA6c3RhdGljIGludCBpb19hbGxvY2F0ZV9yYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5jLTM4MS1cXHRcXHRcXHRcXHQgc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuLS1cXG5pb191cmluZy96Y3J4LmM9ODg0PWludCBpb19yZWdpc3Rlcl96Y3J4KHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5jLTk2OS1cXG5pb191cmluZy96Y3J4LmM6OTcwOlxcdHJldCA9IGlvX2FsbG9jYXRlX3JidWZfcmluZyhjdHgsIGlmcSwgXFx1MDAyNnJlZywgXFx1MDAyNnJkLCBpZCk7XFxuaW9fdXJpbmcvemNyeC5jLTk3MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzoyOC4xNTcwNTc5MjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc3MzUzOTk0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkvTyBSaW5nIFpDUlggUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gYGlvX3JlZ2lzdGVyX3pjcnhgIGlzIGJlaW5nIGNhbGxlZCB3aXRoIGBJT1JJTkdfUkVHSVNURVJfWkNSWGAuIFRoYXQncyB0aGUga2V5LiBUaGlzIG1lYW5zIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYW5kIGltcGFjdCBvZiB0aGVzZSBjYWxscyB3aXRoaW4gdGhlIEkvTyByaW5nIGZyYW1ld29yay4gR2l2ZW4gdGhpcywgSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGlvX2NyZWF0ZV9yZWdpb25gLCBgaW9fZnJlZV9yZWdpb25gLCBgaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nYCwgYGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5nc2AsIGBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uYCwgYW5kLCBvZiBjb3Vyc2UsIHRoZSB0YXJnZXQgYGlvX3JlZ2lzdGVyX3pjcnhgIHRvIGdldCBhIGZ1bGwgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nLlxuXG5UaGUgY29uZmlndXJhdGlvbiBoZXJlIGlzIGBJT19VUklOR2AsIHdoaWNoIGlzIHN0YW5kYXJkLlxuXG5CdXQgSSByZWFsbHkgbmVlZCB0byBjb25maXJtIHRoYXQgdGhlIGBJT19VUklOR19aQ1JYYCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBhY3RpdmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY3VycmVudCBjYWxsLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcy4uLiBZZXMsIGZvdW5kIGl0LiBHb29kLiBOb3csIGlzIGl0IHVzZXItY29uZmlndXJhYmxlPyBUaGUgYW5zd2VyIHRvIHRoYXQgcXVlc3Rpb24gd2lsbCBkZXRlcm1pbmUgaG93IHRoaXMgZmVhdHVyZSBpcyBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoYXQgdG8gcHJvdmlkZSBhIG1lYW5pbmdmdWwgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoaXMgbWVhbnMgdG8gdGhlIHVzZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NjUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MzIuOTMwNjAwNjk3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU5Mzc4MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElPX1VSSU5HX1pDUlhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL0tjb25maWctNS1cXG5pb191cmluZy9LY29uZmlnOjY6Y29uZmlnIElPX1VSSU5HX1pDUlhcXG5pb191cmluZy9LY29uZmlnLTctXFx0ZGVmX2Jvb2wgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzozMy4wNTY1NDI5NThaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NzI2NjUzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKklPX1VSSU5HIENvbmZpZ3VyYXRpb24gQW5hbHlzaXMqKlxuXG5BbHJpZ2h0LCBzbyBgZGVmX2Jvb2wgeWAgZm9yIGB5YCBtZWFucyBpdCdzIHN0cmFpZ2h0Zm9yd2FyZCAtIGlmIGBJT19VUklOR2AgaXMgdXAsIGFuZCBpdHMgcHJlcmVxdWlzaXRlIGhhcmR3YXJlIGFuZCBzZXR0aW5ncyBhcmUgbWV0LCB0aGVuIGB5YCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQuIE5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRvIHBhcnNlIHRoZXJlLiBNeSBuZXh0IHN0ZXAsIG5hdHVyYWxseSwgaXMgdG8gZ28gbG9vayBhdCBgaW9fdXJpbmcvS2NvbmZpZ2AuIEkgbmVlZCB0byBwcmVjaXNlbHkgZGV0ZXJtaW5lIHRoZSBkZXBlbmRlbmNpZXMgb2YgYElPX1VSSU5HX1pDUlhgLiBXZSBjYW4ndCByZWx5IG9uIGFzc3VtcHRpb25zIGluIHRoaXMgZ2FtZS4gSSBuZWVkIHRvIGtub3cgdGhlIGV4YWN0IGJ1aWxkIGNvbmZpZ3VyYXRpb24gaW1wYWN0LiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlIHNwZWxscyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NTcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzozNi41MDM4MTI1MDlaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk0MjU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpb191cmluZy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIGlvX3VyaW5nIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0Y29uZmlnIElPX1VSSU5HX1pDUlhcXG4gICA3OlxcdFxcdGRlZl9ib29sIHlcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU9fVVJJTkdcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gUEFHRV9QT09MXFxuICAxMDpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gIDExOlxcdFxcdGRlcGVuZHMgb24gTkVUX1JYX0JVU1lfUE9MTFxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgSU9fVVJJTkdfQlBGXFxuICAxNDpcXHRcXHRkZWZfYm9vbCB5XFxuICAxNTpcXHRcXHRkZXBlbmRzIG9uIEJQRlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gIDE3OlxcdFxcbiAgMTg6XFx0Y29uZmlnIElPX1VSSU5HX0JQRl9PUFNcXG4gIDE5OlxcdFxcdGRlZl9ib29sIHlcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gSU9fVVJJTkdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6MzYuNTA2NzU4ODk5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzAxMDI5NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVwZW5kZW5jaWVzIGFuZCBDb25maWd1cmF0aW9uIGZvciBJT19VUklOR19aQ1JYKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYElPX1VSSU5HX1pDUlhgLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBmZWF0dXJlIGlzIGludGVydHdpbmVkIHdpdGggc2V2ZXJhbCBvdGhlcnM6IHNwZWNpZmljYWxseSwgYElPX1VSSU5HYCwgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHdlIG5lZWQgdG8gYmUgcmVhbGx5IGNhdXRpb3VzIGFib3V0IGRlcGVuZGVuY2llcy4gVG8gYmUgYWJzb2x1dGVseSBzYWZlLCB3ZSBjb3VsZCBpbmNsdWRlIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAgd2l0aGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCwgYnV0IGhvbmVzdGx5LCBgSU9fVVJJTkdgIGl0c2VsZiBpcyBwcm9iYWJseSB0aGUgbW9zdCBjcml0aWNhbCBkZXBlbmRlbmN5LCBhbmQgaXMgbGlrZWx5IHRoZSBjb3JlIGRlcGVuZGVuY3kuIEl0J3MgdGhlIGJpZyBvbmUuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgdHJpcCB1cCBvbiBhbnkgc3VidGxlIGRlcGVuZGVuY2llcy5cblxuUmlnaHQsIHRpbWUgdG8gZGlnIGRlZXBlciBhbmQgbGV0J3MgZ28gY2hlY2sgdGhlIG51YW5jZXMgb2YgYE5FVF9SWF9CVVNZX1BPTExgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTExLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NDAuMzc2ODY2NjhaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDUzMDQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUX1JYX0JVU1lfUE9MTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTM0Mj1jb25maWcgQ0dST1VQX05FVF9DTEFTU0lEXFxuLS1cXG5uZXQvS2NvbmZpZy0zNDktXFxubmV0L0tjb25maWc6MzUwOmNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXFxubmV0L0tjb25maWctMzUxLVxcdGJvb2xcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NDAuNDkxNDA1NjkyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0MjA1MDI0MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6ODM4MSwiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NTQuNjk2NDMyOTU3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjU1MjUyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFBBR0VfUE9PTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9LY29uZmlnPTQ4Nz1jb25maWcgTkVUX0RFVkxJTktcXG4tLVxcbm5ldC9LY29uZmlnLTQ5MC1cXG5uZXQvS2NvbmZpZzo0OTE6Y29uZmlnIFBBR0VfUE9PTFxcbm5ldC9LY29uZmlnLTQ5Mi1cXHRib29sXFxubmV0L0tjb25maWctNDkzLVxcbm5ldC9LY29uZmlnOjQ5NDpjb25maWcgUEFHRV9QT09MX1NUQVRTXFxubmV0L0tjb25maWctNDk1LVxcdGRlZmF1bHQgblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzo1NC45MjE5NjMzNjFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3OTA4MzU0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgYE5FVF9SWF9CVVNZX1BPTExgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgYm9vbGVhbnMsIGFuZCBpdCBzZWVtcyBsaWtlIHRoZXkncmUgYmVpbmcgc2VsZWN0ZWQgYnkgb3RoZXIgY29uZmlndXJhdGlvbnMsIG5vdCBkaXJlY3RseSBwcm9tcHRlZCBmb3IuIFRoaXMgbWVhbnMgdGhlaXIgdmFsdWVzIGFyZSBiZWluZyBkZXRlcm1pbmVkIGluZGlyZWN0bHksIHByb2JhYmx5IGJ5IGRlcGVuZGVuY2llcyBvciBvdGhlciBzZXR0aW5ncy4gTXkgZm9jdXMgbm93IGlzIG9uIGZpZ3VyaW5nIG91dCAqd2hhdCogZXhhY3RseSBpcyBkcml2aW5nIHRoZSBzZWxlY3Rpb24gb2YgYE5FVF9SWF9CVVNZX1BPTExgLiBVbmRlcnN0YW5kaW5nIHRoZSB1cHN0cmVhbSBkZXBlbmRlbmNpZXMgb2YgdGhlc2Uga2luZHMgb2YgZmxhZ3MgaXMgY3JpdGljYWwgZm9yIGRlYnVnZ2luZyBhbmQgZm9yIG9wdGltaXppbmcgdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbi4gTGV0J3MgZGlnIGluIGFuZCBmaWd1cmUgb3V0IHRoZSBjaGFpbiB0aGF0IGxlYWRzIHRvIHRoaXMgc2V0dGluZyBiZWluZyBlbmFibGVkIG9yIGRpc2FibGVkLiBUaGlzIHdpbGwgZ2l2ZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSB3aWRlciBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NDcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxNzo1OC44MDEwNDk3OTJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDYxMTU5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9SWF9CVVNZX1BPTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTc6NTguOTUxNjY3NTEyWiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDgyMDc3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIFJYIEJ1c3kgUG9sbGluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBuZXR3b3JrIHJlY2VpdmUgYnVzeSBwb2xsaW5nLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIGFsd2F5cyB0byBkaXZlIGludG8gdGhlIGNvZGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgTkVUX1JYX0JVU1lfUE9MTGAgaXMgdXNlZC4gSW5zdGVhZCBvZiBhIGdlbmVyYWwgc2VhcmNoLCBJIG5lZWQgdG8gYmUgcHJlY2lzZS4gTGV0J3Mgc3RhcnQgd2l0aCBhIGBncmVwYCBpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeS4gVGhhdCBzZWVtcyBsaWtlIHRoZSBtb3N0IHJlbGV2YW50IHBsYWNlIHRvIHN0YXJ0LiBJJ20gbG9va2luZyBmb3IgYWxsIGluc3RhbmNlcyBvZiBgTkVUX1JYX0JVU1lfUE9MTGAsIHRvIHNlZSB3aGVyZSBhbmQgaG93IGl0J3MgZGVmaW5lZCBhbmQgdXRpbGl6ZWQgd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JrIHN0YWNrLiBUaGlzIHNob3VsZCBwcm92aWRlIGluc2lnaHRzIGludG8gdGhlIGNpcmN1bXN0YW5jZXMgd2hlcmUgYnVzeSBwb2xsaW5nIGlzIGltcGxlbWVudGVkLCBhbmQgaWRlYWxseSwgc2hlZCBsaWdodCBvbiBhbnkgc3BlY2lmaWMgZGV2aWNlcyBvciBpbnRlcmZhY2VzIGl0J3MgdGFyZ2V0aW5nLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIHF1aWNrZXIgdGhhbiBhIGJyb2FkIHNlYXJjaCwgbGVhZGluZyBtZSBzdHJhaWdodCB0byB0aGUgcmVsZXZhbnQgc2VjdGlvbnMgb2YgdGhlIGNvZGViYXNlLiBUaGVuIEkgY2FuIHN0YXJ0IHBpZWNpbmcgdG9nZXRoZXIgdGhlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2NzMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODowMi42NTk4Nzc3ODVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNzUwODAxMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRfUlhfQlVTWV9QT0xMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L0tjb25maWc9MzQyPWNvbmZpZyBDR1JPVVBfTkVUX0NMQVNTSURcXG4tLVxcbm5ldC9LY29uZmlnLTM0OS1cXG5uZXQvS2NvbmZpZzozNTA6Y29uZmlnIE5FVF9SWF9CVVNZX1BPTExcXG5uZXQvS2NvbmZpZy0zNTEtXFx0Ym9vbFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9Njg1MT1zdGF0aWMgdm9pZCBza2JfZGVmZXJfZnJlZV9mbHVzaCh2b2lkKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNjg3Mi1cXG5uZXQvY29yZS9kZXYuYzo2ODczOiNpZiBkZWZpbmVkKENPTkZJR19ORVRfUlhfQlVTWV9QT0xMKVxcbm5ldC9jb3JlL2Rldi5jLTY4NzQtXFxuLS1cXG5uZXQvY29yZS9kZXYuYz03MDYxPXZvaWQgbmFwaV9yZXN1bWVfaXJxcyh1bnNpZ25lZCBpbnQgbmFwaV9pZClcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTcwODEtXFxubmV0L2NvcmUvZGV2LmM6NzA4MjojZW5kaWYgLyogQ09ORklHX05FVF9SWF9CVVNZX1BPTEwgKi9cXG5uZXQvY29yZS9kZXYuYy03MDgzLVxcbi0tXFxubmV0L2NvcmUvZmlsdGVyLmM9OTg3OT1zdGF0aWMgdTMyIGJwZl9jb252ZXJ0X2N0eF9hY2Nlc3MoZW51bSBicGZfYWNjZXNzX3R5cGUgdHlwZSxcXG4tLVxcbm5ldC9jb3JlL2ZpbHRlci5jLTEwMDcxLVxcdGNhc2Ugb2Zmc2V0b2Yoc3RydWN0IF9fc2tfYnVmZiwgbmFwaV9pZCk6XFxubmV0L2NvcmUvZmlsdGVyLmM6MTAwNzI6I2lmIGRlZmluZWQoQ09ORklHX05FVF9SWF9CVVNZX1BPTEwpXFxubmV0L2NvcmUvZmlsdGVyLmMtMTAwNzMtXFx0XFx0Kmluc24rKyA9IEJQRl9MRFhfTUVNKEJQRl9XLCBzaS1cXHUwMDNlZHN0X3JlZywgc2ktXFx1MDAzZXNyY19yZWcsXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYz0xNTU2PXN0YXRpYyB2b2lkIF9fY29weV9za2JfaGVhZGVyKHN0cnVjdCBza19idWZmICpuZXcsIGNvbnN0IHN0cnVjdCBza19idWZmICpvbGQpXFxuLS1cXG5uZXQvY29yZS9za2J1ZmYuYy0xNTg5LSNlbmRpZlxcbm5ldC9jb3JlL3NrYnVmZi5jOjE1OTA6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L2NvcmUvc2tidWZmLmMtMTU5MS1cXHRDSEVDS19TS0JfRklFTEQobmFwaV9pZCk7XFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9MTE5NT1pbnQgc2tfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXFxuLS1cXG5uZXQvY29yZS9zb2NrLmMtMTIzMy1cXHRcXHRyZXR1cm4gLUVOT1BST1RPT1BUO1xcbm5ldC9jb3JlL3NvY2suYzoxMjM0OiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxcbm5ldC9jb3JlL3NvY2suYy0xMjM1LVxcdGNhc2UgU09fQlVTWV9QT0xMOlxcbi0tXFxubmV0L2NvcmUvc29jay5jPTE3MzI9aW50IHNrX2dldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2NvcmUvc29jay5jLTIwNjYtXFxubmV0L2NvcmUvc29jay5jOjIwNjc6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L2NvcmUvc29jay5jLTIwNjgtXFx0Y2FzZSBTT19CVVNZX1BPTEw6XFxuLS1cXG5uZXQvY29yZS9zb2NrLmMtMjEwNC1cXG5uZXQvY29yZS9zb2NrLmM6MjEwNTojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcXG5uZXQvY29yZS9zb2NrLmMtMjEwNi1cXHRjYXNlIFNPX0lOQ09NSU5HX05BUElfSUQ6XFxuLS1cXG5uZXQvY29yZS9zb2NrLmM9Mzc0ND12b2lkIHNvY2tfaW5pdF9kYXRhX3VpZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29jayAqc2ssIGt1aWRfdCB1aWQpXFxuLS1cXG5uZXQvY29yZS9zb2NrLmMtMzc5My1cXG5uZXQvY29yZS9zb2NrLmM6Mzc5NDojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcXG5uZXQvY29yZS9zb2NrLmMtMzc5NS1cXHRzay1cXHUwMDNlc2tfbmFwaV9pZFxcdFxcdD1cXHQwO1xcbi0tXFxubmV0L2NvcmUvc29jay5jPTQ0NjE9c3Vic3lzX2luaXRjYWxsKHByb3RvX2luaXQpO1xcbi0tXFxubmV0L2NvcmUvc29jay5jLTQ0NjQtXFxubmV0L2NvcmUvc29jay5jOjQ0NjU6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L2NvcmUvc29jay5jLTQ0NjYtYm9vbCBza19idXN5X2xvb3BfZW5kKHZvaWQgKnAsIHVuc2lnbmVkIGxvbmcgc3RhcnRfdGltZSlcXG4tLVxcbm5ldC9jb3JlL3NvY2suYz00NDc5PUVYUE9SVF9TWU1CT0woc2tfYnVzeV9sb29wX2VuZCk7XFxubmV0L2NvcmUvc29jay5jOjQ0ODA6I2VuZGlmIC8qIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMICovXFxubmV0L2NvcmUvc29jay5jLTQ0ODEtXFxuLS1cXG5uZXQvY29yZS9zeXNjdGxfbmV0X2NvcmUuYz00MzA9c3RhdGljIHN0cnVjdCBjdGxfdGFibGUgbmV0X2NvcmVfdGFibGVbXSA9IHtcXG4tLVxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTU3MS0jZW5kaWYgLyogQ09ORklHX05FVF9GTE9XX0xJTUlUICovXFxubmV0L2NvcmUvc3lzY3RsX25ldF9jb3JlLmM6NTcyOiNpZmRlZiBDT05GSUdfTkVUX1JYX0JVU1lfUE9MTFxcbm5ldC9jb3JlL3N5c2N0bF9uZXRfY29yZS5jLTU3My1cXHR7XFxuLS1cXG5uZXQvc29ja2V0LmMtMTE1LVxcbm5ldC9zb2NrZXQuYzoxMTY6I2lmZGVmIENPTkZJR19ORVRfUlhfQlVTWV9QT0xMXFxubmV0L3NvY2tldC5jLTExNy11bnNpZ25lZCBpbnQgc3lzY3RsX25ldF9idXN5X3JlYWQgX19yZWFkX21vc3RseTtcXG4tLVxcbm5ldC94ZHAveHNrLmM9MTMxNj1zdGF0aWMgYm9vbCB4c2tfbm9fd2FrZXVwKHN0cnVjdCBzb2NrICpzaylcXG5uZXQveGRwL3hzay5jLTEzMTcte1xcbm5ldC94ZHAveHNrLmM6MTMxODojaWZkZWYgQ09ORklHX05FVF9SWF9CVVNZX1BPTExcXG5uZXQveGRwL3hzay5jLTEzMTktXFx0LyogUHJlZmVyIGJ1c3ktcG9sbGluZywgc2tpcCB0aGUgd2FrZXVwLiAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODowMi43NjczODk5ODdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ4ODU5OTczNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxMDI5OCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6MTcuNjUzMzkwMjQ1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDEyNjE2MTcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfUlhfQlVTWV9QT0xMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvS2NvbmZpZz0zNDI9Y29uZmlnIENHUk9VUF9ORVRfQ0xBU1NJRFxcbi0tXFxubmV0L0tjb25maWctMzQ5LVxcbm5ldC9LY29uZmlnOjM1MDpjb25maWcgTkVUX1JYX0JVU1lfUE9MTFxcbm5ldC9LY29uZmlnLTM1MS1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjIwLjA2NjAxMzk0OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTE1NjI2MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBgTkVUX1JYX0JVU1lfUE9MTGAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhpcyBgTkVUX1JYX0JVU1lfUE9MTGAgb3B0aW9uLCBhbmQgaXQncyBwb3BwaW5nIHVwIGFnYWluLiBJdCdzIHRpbWUgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBuZWVkIHRvIHRyYWNlIGJhY2sgaG93IHRoaXMgaXMgYmVpbmcgc2VsZWN0ZWQuIFdoYXQncyB0aGUgZGVjaXNpb24gdHJlZSBoZXJlPyBXaGF0IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgaW5mbHVlbmNpbmcgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24/IElzIGl0IHRpZWQgdG8gYSBzcGVjaWZpYyBuZXR3b3JrIGRyaXZlciwgb3IgYSBicm9hZGVyIGFyY2hpdGVjdHVyYWwgY2hvaWNlPyBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB0aGUgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBsZWFkcyB0byB0aGlzIHNldHRpbmcgYmVpbmcgZW5hYmxlZC4gVGhlIGdvYWwgaXMgYSBob2xpc3RpYyB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM5NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjI0LjU4MTY0MzEwNloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MjYwMTUxMCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVF9SWF9CVVNZX1BPTExcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODoyNi43NDQyNTAwNTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDUyNTIwMTQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ3VyaW91cyBLY29uZmlnIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBUaGlzIGBORVRfUlhfQlVTWV9QT0xMYCB0aGluZy4uLiBpdCdzIG5vdCBwcm9tcHRpbmcgbWUgZm9yIGlucHV0LCBhbmQgaXQncyBub3QgYmVpbmcgc2VsZWN0ZWQgYnkgYW55IG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucz8gVGhhdCdzIHVudXN1YWwuIFVzdWFsbHksIHRoZXJlJ3Mgc29tZSBzb3J0IG9mIGRlcGVuZGVuY3kgb3IgY29uZGl0aW9uYWwgc2VsZWN0aW9uIGluIHRoZSBLY29uZmlnIGZpbGVzLiBUaGlzIHdhcnJhbnRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIG9wdGlvbiBleGlzdHMgYW5kIGhvdyBpdCdzIGludGVuZGVkIHRvIGJlIHVzZWQsIGV2ZW4gaWYgaXQncyBpbXBsaWNpdGx5IGVuYWJsZWQgdW5kZXIgc29tZSBjaXJjdW1zdGFuY2VzLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYG5ldC9LY29uZmlnYCBmaWxlIGFuZCBzdGFydCBhcm91bmQgbGluZSAzNTAuIExldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaW4gdGhhdCBzZWN0aW9uLiBIb3BlZnVsbHksIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IHdpbGwgc2hlZCBzb21lIGxpZ2h0IG9uIHRoaXMgdW5leHBlY3RlZCBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE2MDMsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODozMS4yNjk0NTM1NzNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzgzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzQ1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzQ1OlxcdFxcdHNlbGVjdCBTT0NLX0NHUk9VUF9EQVRBXFxuIDM0NjpcXHRcXHRoZWxwXFxuIDM0NzpcXHRcXHQgIENncm91cCBzdWJzeXN0ZW0gZm9yIHVzZSBhcyBnZW5lcmFsIHB1cnBvc2Ugc29ja2V0IGNsYXNzaWQgbWFya2VyIHRoYXQgaXNcXG4gMzQ4OlxcdFxcdCAgYmVpbmcgdXNlZCBpbiBjbHNfY2dyb3VwIGFuZCBmb3IgbmV0ZmlsdGVyIG1hdGNoaW5nLlxcbiAzNDk6XFx0XFxuIDM1MDpcXHRjb25maWcgTkVUX1JYX0JVU1lfUE9MTFxcbiAzNTE6XFx0XFx0Ym9vbFxcbiAzNTI6XFx0XFx0ZGVmYXVsdCB5IGlmICFQUkVFTVBUX1JUIHx8IChQUkVFTVBUX1JUIFxcdTAwMjZcXHUwMDI2ICFORVRDT05TT0xFKVxcbiAzNTM6XFx0XFxuIDM1NDpcXHRjb25maWcgQlFMXFxuIDM1NTpcXHRcXHRib29sXFxuIDM1NjpcXHRcXHRwcm9tcHQgXFxcIkVuYWJsZSBCeXRlIFF1ZXVlIExpbWl0c1xcXCJcXG4gMzU3OlxcdFxcdGRlcGVuZHMgb24gU1lTRlNcXG4gMzU4OlxcdFxcdHNlbGVjdCBEUUxcXG4gMzU5OlxcdFxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODozMS4yNjk1MzMyMTNaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYwNDIxNjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSdyZSBteSBvd246XG5cbioqQW5hbHl6aW5nIEtlcm5lbCBDb25maWd1cmF0aW9uIERlZmF1bHRzKipcblxuUmlnaHQsIHNvIHdlJ3JlIGxvb2tpbmcgYXQgYSBkZWZhdWx0IHNldHRpbmcuIFRoZSBpbml0aWFsIHRob3VnaHQsIGBkZWZhdWx0IHkgaWYgIVBSRUVNUFRfUlQgfHwgKFBSRUVNUFRfUlQgXHUwMDI2XHUwMDI2ICFORVRDT05TT0xFKWAsIGRpcmVjdGx5IHRyYW5zbGF0ZXMgdG8gXCJpdCdzIGVuYWJsZWQgYnkgZGVmYXVsdC5cIiBNYWtlcyBzZW5zZSwgaXQncyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY29uZGl0aW9uYWwgbG9naWMuIElmIFJlYWwtVGltZSBQcmVlbXB0aW9uIGlzbid0IGVuYWJsZWQsIGl0IGRlZmF1bHRzIHRvICd5JywgKm9yKiBpZiBSZWFsLVRpbWUgUHJlZW1wdGlvbiAqaXMqIGVuYWJsZWQsIGFuZCAqTmV0Y29uc29sZSBpcyBub3QqLCBpdCBhbHNvIGRlZmF1bHRzIHRvICd5Jy4gVGhhdCdzIHRoZSBleHBlY3RlZCBiZWhhdmlvciBmb3IgdGhhdCBzY2VuYXJpby5cblxuTm93LCBhIG1vcmUgY3J1Y2lhbCBxdWVzdGlvbiBhcmlzZXM6IFdoYXQgYWJvdXQgYFBBR0VfUE9PTGA/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhpcyBpbml0aWFsIGRlZmF1bHQuIFdoZXJlIGRvZXMgYFBBR0VfUE9PTGAgZml0IGludG8gYWxsIHRoaXM/IElzIGl0IGRlcGVuZGVudCBvbiB0aGlzIGRlZmF1bHQsIG9yIGlzIHRoaXMgdGhlIGFudGVjZWRlbnQgdGhhdCBmZWVkcyBpbnRvIHRoZSBkZXRlcm1pbmF0aW9uIG9mIHRoZSBgUEFHRV9QT09MYCBvcHRpb24/IEkgbmVlZCB0byBhbmFseXplIGl0cyBpbnRlcmRlcGVuZGVuY2llcywgaXQncyB1c2UgY2FzZXMsIGFuZCBob3cgaXRzIGluY2x1c2lvbiBvciBleGNsdXNpb24gbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGUgb3ZlcmFsbCBrZXJuZWwgY29uZmlndXJhdGlvbiwgZXNwZWNpYWxseSByZWdhcmRpbmcgcmVhbC10aW1lIGNvbnN0cmFpbnRzIGFuZCBuZXR3b3JrIGRlYnVnZ2luZy4gVGhpcyBpcyB3aGVyZSB0aGUgcmVhbCBudWFuY2UgbGllcywgdW5kZXJzdGFuZGluZyBob3cgdGhlc2Ugc2VlbWluZ2x5IHNlcGFyYXRlIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGludGVycmVsYXRlIGFuZCBpbmZsdWVuY2UgcGVyZm9ybWFuY2UgYW5kIHN5c3RlbSBzdGFiaWxpdHkuIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDYzLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODozNS44NzM3NTIyMDRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ4NSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQ4NTpcXHRcXHQgIHdpdGggdGhlIGhlbHAgb2YgQlBGIHByb2dyYW1zLlxcbiA0ODY6XFx0XFxuIDQ4NzpcXHRjb25maWcgTkVUX0RFVkxJTktcXG4gNDg4OlxcdFxcdGJvb2xcXG4gNDg5OlxcdFxcdGRlZmF1bHQgblxcbiA0OTA6XFx0XFxuIDQ5MTpcXHRjb25maWcgUEFHRV9QT09MXFxuIDQ5MjpcXHRcXHRib29sXFxuIDQ5MzpcXHRcXG4gNDk0OlxcdGNvbmZpZyBQQUdFX1BPT0xfU1RBVFNcXG4gNDk1OlxcdFxcdGRlZmF1bHQgblxcbiA0OTY6XFx0XFx0Ym9vbCBcXFwiUGFnZSBwb29sIHN0YXRzXFxcIlxcbiA0OTc6XFx0XFx0ZGVwZW5kcyBvbiBQQUdFX1BPT0xcXG4gNDk4OlxcdFxcdGhlbHBcXG4gNDk5OlxcdFxcdCAgRW5hYmxlIHBhZ2UgcG9vbCBzdGF0aXN0aWNzIHRvIHRyYWNrIHBhZ2UgYWxsb2NhdGlvbiBhbmQgcmVjeWNsaW5nXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjM1Ljg3Mzg1NTIxNFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODQxMTA4MDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFBBR0VfUE9PTCBGbGFnKipcblxuUmlnaHQsIHNvIGBQQUdFX1BPT0xgIGlzIGVzc2VudGlhbGx5IGEgYm9vbGVhbiBmbGFnLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB0cmFjZSBpdHMgdXNhZ2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgbWVjaGFuaXNtcyBpbiB0aGUgc3lzdGVtIGFyZSBtYWtpbmcgZGVjaXNpb25zIGJhc2VkIG9uIHRoaXMgZmxhZywgd2hpY2ggbWVhbnMgSSBoYXZlIHRvIGlkZW50aWZ5IHRoZSBzZWxlY3Rpb24gY3JpdGVyaWEgYW5kIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmVzdWx0aW5nIGJlaGF2aW9yLiBJJ20gdGhpbmtpbmcgSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBjb2RlIGFuZCBzdGFydCBsb29raW5nIGZvciBjb25kaXRpb25hbCBzdGF0ZW1lbnRzLCBtYWNyb3MsIG9yIGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVmZXJlbmNlIGBQQUdFX1BPT0xgLiBVbmRlcnN0YW5kaW5nIGl0cyBiZWhhdmlvciB3aWxsIGJlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI1ODgsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjM5LjcxNDk2NjMyOFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2NTI2MDQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgUEFHRV9QT09MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTQzNT1jb25maWcgVkVUSFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDM2LVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIGV0aGVybmV0IHBhaXIgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM3OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQzOC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDctXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ4OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU0ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDktXFx0ZGVmYXVsdCB5XFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU4ND1jb25maWcgVk1YTkVUM1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODctXFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4ODpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MTE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L0tjb25maWctNjEyLVxcdHNlbGVjdCBORVRfU0hBUEVSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvS2NvbmZpZz0xOD1jb25maWcgTkVUX0FJUk9IQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWctMjEtXFx0c2VsZWN0IE5FVF9BSVJPSEFfTlBVXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZz0xOD1jb25maWcgQUxJQkFCQV9FRUFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsaWJhYmEvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIDY0QklUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWxpYmFiYS9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbGliYWJhL0tjb25maWctMjMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz03Mj1jb25maWcgQkNNR0VORVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODAtXFx0c2VsZWN0IERJTUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6ODE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctODItXFx0c2VsZWN0IEJST0FEQ09NX1BIWSBpZiBBUkNIX0JDTTI4MzVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjA3PWNvbmZpZyBCTlhUXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTIxMy1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjIxNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yMTUtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTg9Y29uZmlnIEJOR0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjYxLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjYyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI2My1cXHRzZWxlY3QgQVVYSUxJQVJZX0JVU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNjk9Y29uZmlnIEJDTUFTUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNzUtXFx0c2VsZWN0IE1ESU9fQkNNX1VOSU1BQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6Mjc2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI3Ny1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc9Nj1jb25maWcgRU5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9LY29uZmlnLTEwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL0tjb25maWc9MTk9Y29uZmlnIFRTTkVQXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTIzLVxcdHNlbGVjdCBQSFlMSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnOjI0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTIzPWNvbmZpZyBGRUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTMxLVxcdHNlbGVjdCBGSVhFRF9QSFlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzozMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzMtXFx0aW1wbHkgUEFHRV9QT09MX1NUQVRTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZz0xOD1jb25maWcgR1ZFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9LY29uZmlnLTIzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9LY29uZmlnPTkxPWNvbmZpZyBITlMzXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy05NC1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZzo5NTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc9MTQ3PWNvbmZpZyBISUJNQ0dFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTMtXFx0c2VsZWN0IFJFQUxURUtfUEhZXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL0tjb25maWc6MTU0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnPTY9Y29uZmlnIEhJTklDM1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9LY29uZmlnLTE0LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL0tjb25maWc6MTU6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvS2NvbmZpZy0xNi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZz00PWNvbmZpZyBMSUJFVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJDb21tb24gRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKVxcXCIgaWYgQ09NUElMRV9URVNUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWc6NjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliZXRoL0tjb25maWctNy1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9NTk9Y29uZmlnIE1WTkVUQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTYzLVxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjY0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6NjU6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWctOTAtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc6OTE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTMxPWNvbmZpZyBPQ1RFT05UWDJfUEZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozNTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zNi1cXHRzZWxlY3QgQ1JZUFRPX0xJQl9BRVMgaWYgTUFDU0VDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTIwLVxcdHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjE6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWc6MjI6XFx0c2VsZWN0IFBBR0VfUE9PTF9TVEFUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMjMtXFx0c2VsZWN0IFBDU19NVEtfTFlOWElcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvS2NvbmZpZz02PWNvbmZpZyBNTFg0X0VOXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctOS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9LY29uZmlnOjEwOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L0tjb25maWctMTEtXFx0c2VsZWN0IE1MWDRfQ09SRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWc9Mjk9Y29uZmlnIE1MWDVfQ09SRV9FTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzEtXFx0ZGVwZW5kcyBvbiBORVRERVZJQ0VTIFxcdTAwMjZcXHUwMDI2IEVUSEVSTkVUIFxcdTAwMjZcXHUwMDI2IElORVQgXFx1MDAyNlxcdTAwMjYgUENJIFxcdTAwMjZcXHUwMDI2IE1MWDVfQ09SRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9LY29uZmlnOjMyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvS2NvbmZpZzozMzpcXHRzZWxlY3QgUEFHRV9QT09MX1NUQVRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL0tjb25maWctMzQtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZz0zMz1jb25maWcgTUxYU1dfUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy9LY29uZmlnLTM1LVxcdGRlcGVuZHMgb24gUENJIFxcdTAwMjZcXHUwMDI2IEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBNTFhTV19DT1JFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4c3cvS2NvbmZpZy0zNy1cXHRkZWZhdWx0IG1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yNy1cXHRzZWxlY3QgTkVUX0RFVkxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWc6Mjg6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0yOS1cXHRzZWxlY3QgUENTX1hQQ1NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc9MT1jb25maWcgTEFOOTY2WF9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctOC1cXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWc6OTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy0xMC1cXHRzZWxlY3QgVkNBUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTI4PWNvbmZpZyBMQU45NjlYX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMwLVxcdGRlcGVuZHMgb24gU1BBUlg1X1NXSVRDSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZzozMTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTMyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jvc29mdC9LY29uZmlnPTE4PWNvbmZpZyBNSUNST1NPRlRfTUFOQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjMtXFx0c2VsZWN0IEFVWElMSUFSWV9CVVNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb3NvZnQvS2NvbmZpZzoyNDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9zb2Z0L0tjb25maWctMjUtXFx0c2VsZWN0IE5FVF9TSEFQRVJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3BlbnNhbmRvL0tjb25maWc9MjA9Y29uZmlnIElPTklDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI1LVxcdHNlbGVjdCBESU1MSUJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnOjI2OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9wZW5zYW5kby9LY29uZmlnLTI3LVxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc9MTEwPWNvbmZpZyBSVEFTRVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9LY29uZmlnLTExMy1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWc6MTE0OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz0yOT1jb25maWcgUkFWQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTM1LVxcdHNlbGVjdCBNRElPX0JJVEJBTkdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6MzY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZy0zNy1cXHRzZWxlY3QgUEhZTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZz0yNT1jb25maWcgU05JX05FVFNFQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L0tjb25maWctMjgtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmlnOjI5OlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvS2NvbmZpZy0zMC1cXHRzZWxlY3QgTUlJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOC1cXHRzZWxlY3QgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTAtXFx0c2VsZWN0IFBIWUxJTktcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMjgtXFx0ZGVwZW5kcyBvbiBQQ0lcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZzoyOTpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz01MD1jb25maWcgVElfQ1BTV1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy01NS1cXHRzZWxlY3QgTUZEX1NZU0NPTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc6NTY6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNTctXFx0c2VsZWN0IFJFR01BUFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz02NT1jb25maWcgVElfQ1BTV19TV0lUQ0hERVZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctNjktXFx0ZGVwZW5kcyBvbiBUSV9DUFRTIHx8ICFUSV9DUFRTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzo3MDpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy03MS1cXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTk2PWNvbmZpZyBUSV9LM19BTTY1X0NQU1dfTlVTU1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDEtXFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMjpcXHRzZWxlY3QgUEFHRV9QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDMtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnPTIwND1jb25maWcgVElfSUNTU0dfUFJVRVRIX1NSMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0yMDgtXFx0c2VsZWN0IFRJX0szX0NQUElfREVTQ19QT09MXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZzoyMDk6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMjEwLVxcdGRlcGVuZHMgb24gUFJVX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjIyOlxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWctMjMtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnPTI9Y29uZmlnIE1UNzZfQ09SRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy0zLVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9LY29uZmlnOjQ6XFx0c2VsZWN0IFBBR0VfUE9PTFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvS2NvbmZpZy01LVxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnPTI3PWNvbmZpZyBCUEZfU1lTQ0FMTFxcbi0tXFxua2VybmVsL2JwZi9LY29uZmlnLTM1LVxcdHNlbGVjdCBORVRfWEdSRVNTIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZzozNjpcXHRzZWxlY3QgUEFHRV9QT09MIGlmIE5FVFxcbmtlcm5lbC9icGYvS2NvbmZpZy0zNy1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6NDEuODgwMjM1OTU4WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDI5NDc3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgUEFHRV9QT09MIGFuZCBpb191cmluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gaWYgYE5FVGAgaXMgZGVmaW5lZCwgYEJQRl9TWVNDQUxMYCBpcyBnb2luZyB0byBjaG9vc2UgYFBBR0VfUE9PTGAuIFRoYXQgc3Ryb25nbHkgc3VnZ2VzdHMgaXQncyBsaWtlbHkgdG8gYmUgZW5hYmxlZC4gVG8gYmUgb24gdGhlIHNhZmUgc2lkZSBhbmQgZW5zdXJlIGNvbnNpc3RlbmN5IGluIG91ciBjb25maWd1cmF0aW9ucywgSSdtIGdvaW5nIHRvIGFkZCBgUEFHRV9QT09MYCBkaXJlY3RseSB0byBgRW5hYmxlQ29uZmlnc2AuIFRoaXMgd2lsbCByZW1vdmUgYW55IGFtYmlndWl0eS5cblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBkb3VibGUtY2hlY2sgdGhlIGBpb191cmluZy9LY29uZmlnYCBmaWxlIGFnYWluLCBtYWtlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBkZXBlbmRlbmNpZXMgb3Igc3BlY2lmaWMgc2V0dGluZ3MgSSd2ZSBtaXNzZWQuIEJldHRlciB0byBiZSBjZXJ0YWluLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGNyaXRpY2FsIGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2OTkyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6NDYuMzIzMTg2MzlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW9fdXJpbmcvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBpb191cmluZyBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBJT19VUklOR19aQ1JYXFxuICAgNzpcXHRcXHRkZWZfYm9vbCB5XFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIElPX1VSSU5HXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uIFBBR0VfUE9PTFxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAxMTpcXHRcXHRkZXBlbmRzIG9uIE5FVF9SWF9CVVNZX1BPTExcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIElPX1VSSU5HX0JQRlxcbiAgMTQ6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBCUEZcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gTkVUXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBJT19VUklOR19CUEZfT1BTXFxuICAxOTpcXHRcXHRkZWZfYm9vbCB5XFxuICAyMDpcXHRcXHRkZXBlbmRzIG9uIElPX1VSSU5HXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE4OjQ2LjMyMzI0MDU1WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwNDA3OTU2ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIERlcGVuZGVuY2llcyBhbmQgRm9jdXMgU3ltYm9scyBmb3IgSU9fVVJJTkdfWkNSWCoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBJT19VUklOR19aQ1JYYCB0aGluZy4gRmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgYWxsIHRoZSBuZWNlc3NhcnkgY29tcG9uZW50cyBhcmUgaW4gcGxhY2UuIEJhc2VkIG9uIHRoZSBkZXBlbmRlbmNpZXMsIGl0IGxvb2tzIGxpa2UgYElPX1VSSU5HYCwgYFBBR0VfUE9PTGAsIGBJTkVUYCwgYW5kIGBORVRfUlhfQlVTWV9QT0xMYCBhcmUgY3J1Y2lhbC4gIGBJTkVUYCBpcyB1c3VhbGx5IGVuYWJsZWQsIGJ1dCBpdCB3b24ndCBodXJ0IHRvIGJlIGV4cGxpY2l0LiBgTkVUX1JYX0JVU1lfUE9MTGAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBzbyB0aGF0J3MgZ29vZC4gYFBBR0VfUE9PTGAgaXMgbWFuYWdlZCBieSBgQlBGX1NZU0NBTExgIGlmIGBORVRgIGlzIHNldCwgc28gdGhhdCdzIHNvbWV0aGluZyB0byBrZWVwIGluIG1pbmQuIExldCdzIGluY2x1ZGUgdGhlc2UgaW4gYEVuYWJsZUNvbmZpZ3NgLlxuXG5Ob3csIEknbSBmb2N1c2luZyBvbiB0aGUgY29yZSBmdW5jdGlvbnMuIEkgbmVlZCB0byByZXZpc2l0IGBpb19jcmVhdGVfcmVnaW9uYCBhbmQgYGlvX2ZyZWVfcmVnaW9uYOKAlHRoZXkgc2VlbSB0byBiZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgdGhhdCB3ZXJlIG1vZGlmaWVkLiBCZXlvbmQgdGhvc2UsIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCwgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBhbmQgYGlvX3JlZ2lzdGVyX3pjcnhgIGFyZSBsaWtlbHkgdGhlIGVudHJ5IHBvaW50cy5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGVzZSBcInJlZ2lzdGVyXCIgZnVuY3Rpb25zIGFyZSBpbmRlZWQgZXhwb3NlZCB0aHJvdWdoIHRoZSBgSU9SSU5HX1JFR0lTVEVSXypgIG1lY2hhbmlzbS4gT2theSwgYSBxdWljayBjaGVjayBjb25maXJtczogYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gIGlzIGBJT1JJTkdfUkVHSVNURVJfTUVNX1JFR0lPTmAsIGBpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NgIGlzIGBJT1JJTkdfUkVHSVNURVJfUkVTSVpFX1JJTkdTYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AgaXMgYElPUklOR19SRUdJU1RFUl9QQlVGX1JJTkdgLCBhbmQgZmluYWxseSBgaW9fcmVnaXN0ZXJfemNyeGAgaXMgYElPUklOR19SRUdJU1RFUl9aQ1JYYC4gUGVyZmVjdC5cblxuU28sIEknbSBnb2luZyB0byBhZGQgdGhlIGZvbGxvd2luZyB0byBteSBgRm9jdXNTeW1ib2xzYCBsaXN0OiBgaW9fY3JlYXRlX3JlZ2lvbmAsIGBpb19mcmVlX3JlZ2lvbmAsIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCwgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBhbmQgYGlvX3JlZ2lzdGVyX3pjcnhgLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcsIHNvIEknbGwgY2hlY2sgZm9yIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBtYXkgYmUgaW1wb3J0YW50LiBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCBpcyBzdGF0aWMsIHNvIEkgY2FuIGlnbm9yZSB0aGF0LiBgaW9fcmVnaW9uX2FsbG9jYXRlX3BhZ2VzYCBhbmQgYGlvX3JlZ2lvbl9waW5fcGFnZXNgIGFyZSBhbHNvIHN0YXRpYywgc28gdGhleSdyZSBub3QgdXNlZnVsIGluIHRoaXMgY29udGV4dC4gTGV0J3MgYnJpZWZseSBjaGVjayBgaW9fYWxsb2NhdGVfc2NxX3VyaW5nc2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3NDQzLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTg6NTUuMzY0MDM5MDY0WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTk3NzExOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fYWxsb2NhdGVfc2NxX3VyaW5nc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvaW9fdXJpbmcuYz0yNzIxPWJvb2wgaW9faXNfdXJpbmdfZm9wcyhzdHJ1Y3QgZmlsZSAqZmlsZSlcXG4tLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMjcyNS1cXG5pb191cmluZy9pb191cmluZy5jOjI3MjY6c3RhdGljIF9fY29sZCBpbnQgaW9fYWxsb2NhdGVfc2NxX3VyaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG5pb191cmluZy9pb191cmluZy5jLTI3MjctXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jPTI5NzM9c3RhdGljIF9fY29sZCBpbnQgaW9fdXJpbmdfY3JlYXRlKHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jLTMwNDktXFxuaW9fdXJpbmcvaW9fdXJpbmcuYzozMDUwOlxcdHJldCA9IGlvX2FsbG9jYXRlX3NjcV91cmluZ3MoY3R4LCBjb25maWcpO1xcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzA1MS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODo1NS40ODM4MTQ0ODVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI3MjMyNTIzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkluaXRpYWwgSW1wcmVzc2lvbnMgb2YgdGhlIGlvX3VyaW5nIENvZGViYXNlKipcblxuQWxyaWdodCwgbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0J3MgcHJldHR5IGNsZWFyIHdoZXJlIHRoZSBhY3Rpb24gc3RhcnRzLiBgaW9fYWxsb2NhdGVfc2NxX3VyaW5nc2AgaXMgZGVjbGFyZWQgc3RhdGljLCBzbyBpdCdzIGludGVybmFsIHRvIGl0cyBjb21waWxhdGlvbiB1bml0LiBTYW1lIGRlYWwgd2l0aCBgaW9fdXJpbmdfY3JlYXRlYDsgYWxzbyBzdGF0aWMgYW5kIGNhbGxlZCBmcm9tIGBpb191cmluZ19zZXR1cGAuIFRoYXQgbWVhbnMgYGlvX3VyaW5nX3NldHVwYCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBzeXNjYWxsLiBUaGF0J3MgZ29vZCwgdGhhdCBnaXZlcyBtZSBhIHJlYWxseSBzb2xpZCBmb2N1cyBzeW1ib2wgdG8gc3RhcnQgd2l0aC4gSXQncyB0aGUgbHluY2hwaW4sIHRoZSBwbGFjZSB3aGVyZSBldmVyeXRoaW5nIGNvbWVzIHRvZ2V0aGVyLiBJIGNhbiBidWlsZCBvdXQgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg3MjIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODo1OS43NTYxNDI4NVoiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIwMjkxMTYxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlvX3VyaW5nX3NldHVwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9pb191cmluZy5jPTI5NzM9c3RhdGljIF9fY29sZCBpbnQgaW9fdXJpbmdfY3JlYXRlKHN0cnVjdCBpb19jdHhfY29uZmlnICpjb25maWcpXFxuLS1cXG5pb191cmluZy9pb191cmluZy5jLTMxMDUtICovXFxuaW9fdXJpbmcvaW9fdXJpbmcuYzozMTA2OnN0YXRpYyBsb25nIGlvX3VyaW5nX3NldHVwKHUzMiBlbnRyaWVzLCBzdHJ1Y3QgaW9fdXJpbmdfcGFyYW1zIF9fdXNlciAqcGFyYW1zKVxcbmlvX3VyaW5nL2lvX3VyaW5nLmMtMzEwNy17XFxuLS1cXG5pb191cmluZy9pb191cmluZy5jPTMxMjM9c3RhdGljIGlubGluZSBpbnQgaW9fdXJpbmdfYWxsb3dlZCh2b2lkKVxcbi0tXFxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTQ0LVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE0NTpTWVNDQUxMX0RFRklORTIoaW9fdXJpbmdfc2V0dXAsIHUzMiwgZW50cmllcyxcXG5pb191cmluZy9pb191cmluZy5jLTMxNDYtXFx0XFx0c3RydWN0IGlvX3VyaW5nX3BhcmFtcyBfX3VzZXIgKiwgcGFyYW1zKVxcbi0tXFxuaW9fdXJpbmcvaW9fdXJpbmcuYy0zMTUzLVxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MzE1NDpcXHRyZXR1cm4gaW9fdXJpbmdfc2V0dXAoZW50cmllcywgcGFyYW1zKTtcXG5pb191cmluZy9pb191cmluZy5jLTMxNTUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxODo1OS44NzY0Mzg3MTJaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM1MjUwMzM2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxNzU0OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MTMuNDAxNDc2Nzc1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTQzOTU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl9wYnVmX3JpbmdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL2tidWYuYz02MTE9aW50IGlvX21hbmFnZV9idWZmZXJzX2xlZ2FjeShzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKVxcbi0tXFxuaW9fdXJpbmcva2J1Zi5jLTYyOC1cXG5pb191cmluZy9rYnVmLmM6NjI5OmludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpXFxuaW9fdXJpbmcva2J1Zi5jLTYzMC17XFxuLS1cXG5pb191cmluZy9rYnVmLmg9ODA9aW50IGlvX21hbmFnZV9idWZmZXJzX2xlZ2FjeShzdHJ1Y3QgaW9fa2lvY2IgKnJlcSwgdW5zaWduZWQgaW50IGlzc3VlX2ZsYWdzKTtcXG5pb191cmluZy9rYnVmLmgtODEtXFxuaW9fdXJpbmcva2J1Zi5oOjgyOmludCBpb19yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpO1xcbmlvX3VyaW5nL2tidWYuaC04My1pbnQgaW9fdW5yZWdpc3Rlcl9wYnVmX3Jpbmcoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICphcmcpO1xcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTg4Ny1cXHRcXHRcXHRicmVhaztcXG5pb191cmluZy9yZWdpc3Rlci5jOjg4ODpcXHRcXHRyZXQgPSBpb19yZWdpc3Rlcl9wYnVmX3JpbmcoY3R4LCBhcmcpO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtODg5LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOToxMy40ODY5MjEzOTlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxMTgyMTIyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgaWYgdGhleSBhcmUgbXkgb3duOlxuXG4qKlBvbmRlcmluZyBSaW5nIEJ1ZmZlciBSZWdpc3RyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEknbSB0YWtpbmcgYSBsb29rIGF0IGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgLiBIbW0sIG5vdCBzdGF0aWMuIFRoYXQncyBpbnRlcmVzdGluZy4gT2theSwgbGV0J3Mga2VlcCB0aGF0IGluIG1pbmQuIE5vdywgd2hhdCBhYm91dCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYD8gQWgsIHRoYXQgb25lICppcyogc3RhdGljLiBSaWdodCwgcmlnaHQuIEdvdHRhIHF1aWNrbHkgY29uc2lkZXIgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IGRpc3RpbmN0aW9uLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgY2FzZS4gT2theSwgY29uZmlybWluZy4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSByYXRpb25hbGUgYmVoaW5kIG1ha2luZyBvbmUgcHVibGljIGFuZCB0aGUgb3RoZXIgcHJpdmF0ZS4uLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2MjcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOToxNy4xOTg3NDU1NDFaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTA2MTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl9yZXNpemVfcmluZ3NcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW9fdXJpbmcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImlvX3VyaW5nL3JlZ2lzdGVyLmM9NDgwPXN0YXRpYyB2b2lkIGlvX3JlZ2lzdGVyX2ZyZWVfcmluZ3Moc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTQ5Ny1cXG5pb191cmluZy9yZWdpc3Rlci5jOjQ5ODpzdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG5pb191cmluZy9yZWdpc3Rlci5jLTQ5OS17XFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQ3LVxcdFxcdFxcdGJyZWFrO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTQ4OlxcdFxcdHJldCA9IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhjdHgsIGFyZyk7XFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy05NDktXFx0XFx0YnJlYWs7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE5OjE3Ljc3OTgxMDc1MVoiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTg4NDQ2NzgyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IGltbWVkaWF0ZSB0aG91Z2h0czpcblxuKipTdGF0aWMgRnVuY3Rpb24gT2JzZXJ2YXRpb25zKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgZnVuY3Rpb25zLCBgaW9fcmVnaXN0ZXJfcmVzaXplX3JpbmdzYCBhbmQgYGlvX3JlZ2lzdGVyX21lbV9yZWdpb25gLCBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgdGhleSdyZSBib3RoIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCBhd2F5LCB0aGF0IHRlbGxzIG1lIGEgY291cGxlIG9mIGltcG9ydGFudCB0aGluZ3MuIFByaW1hcmlseSwgdGhlIGBzdGF0aWNgIGtleXdvcmQgbWVhbnMgdGhlc2UgZnVuY3Rpb25zIGhhdmUgKmludGVybmFsIGxpbmthZ2UqLiBUaGV5IGFyZSBub3QgZXhwb3NlZCB0byBvdGhlciB0cmFuc2xhdGlvbiB1bml0cyB3aXRoaW4gdGhlIHByb2plY3QuIEl0IHN1Z2dlc3RzIHRoZXNlIGFyZSB2ZXJ5IHNwZWNpZmljLCBpbnRlcm5hbCB1dGlsaXR5IGZ1bmN0aW9ucywgcHJvYmFibHkgbWVhbnQgdG8gYmUgY2FsbGVkIG9ubHkgd2l0aGluIHRoZSBtb2R1bGUgb3IgZmlsZSB0aGV5J3JlIGRlZmluZWQgaW4uIFRoZXnigJlyZSBwYXJ0IG9mIGEgcHJpdmF0ZSBpbnRlcmZhY2UsIGxpa2VseSBkZXNpZ25lZCBmb3IgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3Igc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgd2l0aGluIHdoYXRldmVyIHN5c3RlbSB0aGlzIGNvZGUgaXMgcGFydCBvZi4gSSBpbW1lZGlhdGVseSBzdGFydCB3b25kZXJpbmcgYWJvdXQgdGhlIHNjb3BlIGFuZCBvcmdhbml6YXRpb24gb2YgdGhlIGNvZGViYXNlOyB0aGVzZSBzdGF0aWMgZGVjbGFyYXRpb25zIHN1Z2dlc3QgYSB3ZWxsLWRlZmluZWQgbW9kdWxlIHN0cnVjdHVyZSwgYW5kIEknZCBiZSBpbnRlcmVzdGVkIHRvIHNlZSBob3cgdGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkLiBLbm93aW5nIHRoZXkgYXJlIHN0YXRpYywgSSBhbnRpY2lwYXRlIHRoZXkgd291bGQgYmUgZGlyZWN0bHkgY2FsbGVkIHdpdGhpbiB0aGUgc2FtZSBmaWxlLCBvciBwZXJoYXBzIHdpdGhpbiBpbmxpbmUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLCB3aXRoIG1pbmltYWwgaW50ZXJhY3Rpb25zIHdpdGggZXh0ZXJuYWwgY29tcG9uZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNDksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOToyMi4zNjgyNTkzNTNaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjk3NTM0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl9tZW1fcmVnaW9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9yZWdpc3Rlci5jPTQ5OD1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX3Jlc2l6ZV9yaW5ncyhzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZylcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtNzAyLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6NzAzOnN0YXRpYyBpbnQgaW9fcmVnaXN0ZXJfbWVtX3JlZ2lvbihzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKnVhcmcpXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03MDQte1xcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYz03NTA9c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jLTk1My1cXHRcXHRcXHRicmVhaztcXG5pb191cmluZy9yZWdpc3Rlci5jOjk1NDpcXHRcXHRyZXQgPSBpb19yZWdpc3Rlcl9tZW1fcmVnaW9uKGN0eCwgYXJnKTtcXG5pb191cmluZy9yZWdpc3Rlci5jLTk1NS1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MjIuNDgxMjM4OTA2WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDk1MTYxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBpb191cmluZyBSZWdpc3RyYXRpb24gTWVjaGFuaXNtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZXNlIGBpb191cmluZ2Agb3BlcmF0aW9ucyBhcmUgaW5pdGlhdGVkLiBUaGUgb2J2aW91cyBzdGFydGluZyBwb2ludCBmb3IgYW55IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGlzIGBfX2lvX3VyaW5nX3JlZ2lzdGVyYC4gTGV0J3MgZGlnIGludG8gdGhhdCBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIGFjdHVhbGx5IGRvaW5nLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV0YWlscyBvZiB0aGlzIGVudHJ5IHBvaW50IHRvIGdldCBhIGdyYXNwIG9uIGhvdyByZXNvdXJjZXMgYXJlIGFjdHVhbGx5IG1hcHBlZCBhbmQgbWFuYWdlZCBmb3IgYGlvX3VyaW5nYC4gVGltZSB0byB0cmFjZSBpdHMgY2FsbCBmbG93IGFuZCB1bmRlcnN0YW5kIGl0cyBhcmd1bWVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNTUzLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MjcuMTMwNzU5MTY0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzE5MDE0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2lvX3VyaW5nX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9yZWdpc3Rlci5jPTcwMz1zdGF0aWMgaW50IGlvX3JlZ2lzdGVyX21lbV9yZWdpb24oc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHZvaWQgX191c2VyICp1YXJnKVxcbi0tXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03NDktXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYzo3NTA6c3RhdGljIGludCBfX2lvX3VyaW5nX3JlZ2lzdGVyKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LCB1bnNpZ25lZCBvcGNvZGUsXFxuaW9fdXJpbmcvcmVnaXN0ZXIuYy03NTEtXFx0XFx0XFx0ICAgICAgIHZvaWQgX191c2VyICphcmcsIHVuc2lnbmVkIG5yX2FyZ3MpXFxuLS1cXG5pb191cmluZy9yZWdpc3Rlci5jPTEwMTc9U1lTQ0FMTF9ERUZJTkU0KGlvX3VyaW5nX3JlZ2lzdGVyLCB1bnNpZ25lZCBpbnQsIGZkLCB1bnNpZ25lZCBpbnQsIG9wY29kZSxcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtMTAzOS1cXHRtdXRleF9sb2NrKFxcdTAwMjZjdHgtXFx1MDAzZXVyaW5nX2xvY2spO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6MTA0MDpcXHRyZXQgPSBfX2lvX3VyaW5nX3JlZ2lzdGVyKGN0eCwgb3Bjb2RlLCBhcmcsIG5yX2FyZ3MpO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtMTA0MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MjcuMTk3OTU0MzY5WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzODg0MTk2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknbSB0aGlua2luZyBhYm91dCBpdDpcblxuKipGb2N1c2luZyBvbiBpb191cmluZ19yZWdpc3RlciBmb3IgQW5hbHlzaXMqKlxuXG5SaWdodCwgYF9faW9fdXJpbmdfcmVnaXN0ZXJgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLCB3aGljaCBtZWFucyBpdCdzIG9ubHkgY2FsbGVkIGludGVybmFsbHksIHdpdGhpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0IGFzIGl0J3MgZGVmaW5lZC4gQW5kIGl0J3MgY2FsbGVkIGZyb20gdGhlIGBpb191cmluZ19yZWdpc3RlcmAgc3lzdGVtIGNhbGwgZW50cnkgcG9pbnQuIEdpdmVuIHRoaXMsIGBpb191cmluZ19yZWdpc3RlcmAgaXRzZWxmIGlzIGdvaW5nIHRvIGJlIHRoZSBtb3JlIHJlbGV2YW50IGZ1bmN0aW9uIHRvIGV4YW1pbmUgZmlyc3QuIEl0J3MgdGhlIHB1YmxpYyBmYWNlIG9mIHRoZSBzeXN0ZW0gY2FsbC4gSXQncyBhIGtleSBzeW1ib2wuIEl0J3Mgd2hlcmUgdGhlIGFjdGlvbiAqc3RhcnRzKiBmcm9tIHRoZSB1c2VyJ3MgcGVyc3BlY3RpdmUsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gY29uY2VudHJhdGUgbXkgaW5pdGlhbCBlZmZvcnRzLiBOb3csIGxldCdzIGFsc28gY2hlY2sgb3V0IGBpb19yZWdpc3Rlcl96Y3J4YCBhcyBhIHBvdGVudGlhbCBhcmVhIG9mIGludGVyZXN0IHNpbmNlIHRoaXMgaXMgcmVsYXRlZCB0byByZWdpc3RyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTc3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMjE6MTk6MzEuNTg2Mzc3MDM1WiIsIlNlcSI6NTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NTAxMDM3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImlvX3VyaW5nL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpb191cmluZy9yZWdpc3Rlci5jPTc1MD1zdGF0aWMgaW50IF9faW9fdXJpbmdfcmVnaXN0ZXIoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsIHVuc2lnbmVkIG9wY29kZSxcXG4tLVxcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQxLVxcdFxcdFxcdGJyZWFrO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmM6OTQyOlxcdFxcdHJldCA9IGlvX3JlZ2lzdGVyX3pjcngoY3R4LCBhcmcpO1xcbmlvX3VyaW5nL3JlZ2lzdGVyLmMtOTQzLVxcdFxcdGJyZWFrO1xcbi0tXFxuaW9fdXJpbmcvemNyeC5jPTg1Nz1zdGF0aWMgaW50IHpjcnhfdmFsaWRhdGVfbm90aWZfc3RhdHMoc3RydWN0IGlvX3pjcnhfaWZxICppZnEsXFxuLS1cXG5pb191cmluZy96Y3J4LmMtODgzLVxcbmlvX3VyaW5nL3pjcnguYzo4ODQ6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5jLTg4NS1cXHRcXHQgICAgIHN0cnVjdCBpb191cmluZ196Y3J4X2lmcV9yZWcgX191c2VyICphcmcpXFxuLS1cXG5pb191cmluZy96Y3J4Lmg9ODg9aW50IGlvX3pjcnhfY3RybChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCwgdm9pZCBfX3VzZXIgKmFyZywgdW5zaWduZWQgbnJfYXJnKTtcXG5pb191cmluZy96Y3J4Lmg6ODk6aW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5oLTkwLVxcdFxcdFxcdCBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKTtcXG4tLVxcbmlvX3VyaW5nL3pjcnguaD05Nj1zdHJ1Y3QgaW9fbWFwcGVkX3JlZ2lvbiAqaW9femNyeF9nZXRfcmVnaW9uKHN0cnVjdCBpb19yaW5nX2N0eCAqY3R4LFxcbi0tXFxuaW9fdXJpbmcvemNyeC5oLTk4LSNlbHNlXFxuaW9fdXJpbmcvemNyeC5oOjk5OnN0YXRpYyBpbmxpbmUgaW50IGlvX3JlZ2lzdGVyX3pjcngoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgsXFxuaW9fdXJpbmcvemNyeC5oLTEwMC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaW9fdXJpbmdfemNyeF9pZnFfcmVnIF9fdXNlciAqYXJnKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOTozMS42ODEzOTE3NzhaIiwiU2VxIjo1MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg2ODYwODY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSU8gUmVnaW9uIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIHNvIGBpb19yZWdpc3Rlcl96Y3J4YCBpc24ndCBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBUaGF0IG1lYW5zIGl0J3MgYWNjZXNzaWJsZSBleHRlcm5hbGx5LCBhbmQgdGhhdCBicm9hZGVucyBpdHMgcG90ZW50aWFsIGltcGFjdC4gTXkgYXR0ZW50aW9uIGlzIG5vdyBob25lZCBvbiBhIHNwZWNpZmljIHNldCBvZiBzeW1ib2xzIHJlbGF0ZWQgdG8gSU8gcmVnaW9uIG1hbmFnZW1lbnQgYW5kIHNwZWNpZmljYWxseSwgSU8gcmluZyBtYW5hZ2VtZW50OlxuXG4qICAgYGlvX2NyZWF0ZV9yZWdpb25gXG4qICAgYGlvX2ZyZWVfcmVnaW9uYFxuKiAgIGBpb19yZWdpc3Rlcl9wYnVmX3JpbmdgXG4qICAgYGlvX3JlZ2lzdGVyX3pjcnhgXG4qICAgYGlvX3VyaW5nX3NldHVwYFxuKiAgIGBpb191cmluZ19yZWdpc3RlcmBcblxuR2l2ZW4gdGhlIGNvbnRleHQsIEkgdGhpbmsgaXQncyBwcnVkZW50IHRvIGV4YW1pbmUgaG93IGBpb191cmluZ19tbWFwYCB3b3JrcywgYXMgaXQgc2VlbXMgYSBsaWtlbHkgcG9pbnQgb2YgaW50ZXJzZWN0aW9uIGZvciB0aGVzZSBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgYXQgdGhlIG1lbW9yeSBtYXBwaW5nIGxheWVyIGFuZCBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGhpbiBpdC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gdGVybXMgb2YgbWFuYWdpbmcgcmVnaW9ucyBhbmQgYnVmZmVycyB3aXRoaW4gdGhlIElPIHJpbmcgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE3MjIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOTozNS41NTAwMDQyMloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzA4OTIwNTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW9fdXJpbmdfbW1hcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpb191cmluZy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW9fdXJpbmcvaW9fdXJpbmcuYz0yNzA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGlvX3VyaW5nX2ZvcHMgPSB7XFxuaW9fdXJpbmcvaW9fdXJpbmcuYy0yNzA5LVxcdC5yZWxlYXNlXFx0PSBpb191cmluZ19yZWxlYXNlLFxcbmlvX3VyaW5nL2lvX3VyaW5nLmM6MjcxMDpcXHQubW1hcFxcdFxcdD0gaW9fdXJpbmdfbW1hcCxcXG5pb191cmluZy9pb191cmluZy5jLTI3MTEtXFx0LmdldF91bm1hcHBlZF9hcmVhID0gaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEsXFxuLS1cXG5pb191cmluZy9tZW1tYXAuYz0zMDc9c3RhdGljIGludCBpb19yZWdpb25fbW1hcChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eCxcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jLTMxNy1cXG5pb191cmluZy9tZW1tYXAuYzozMTg6X19jb2xkIGludCBpb191cmluZ19tbWFwKHN0cnVjdCBmaWxlICpmaWxlLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSlcXG5pb191cmluZy9tZW1tYXAuYy0zMTkte1xcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmM9MzQ0PXVuc2lnbmVkIGxvbmcgaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5jLTM5My0gKiBEcm9wIHRoZSBwYWdlcyB0aGF0IHdlcmUgaW5pdGlhbGx5IHJlZmVyZW5jZWQgYW5kIGFkZGVkIGluXFxuaW9fdXJpbmcvbWVtbWFwLmM6Mzk0OiAqIGlvX3VyaW5nX21tYXAoKS4gV2UgY2Fubm90IGhhdmUgaGFkIGEgbXJlbWFwKCkgYXMgdGhhdCBpc24ndCBzdXBwb3J0ZWQsXFxuaW9fdXJpbmcvbWVtbWFwLmMtMzk1LSAqIGhlbmNlIHRoZSB2bWEgc2hvdWxkIGJlIGlkZW50aWNhbCB0byB0aGUgb25lIHdlIGluaXRpYWxseSByZWZlcmVuY2VkIGFuZFxcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmM9NDA3PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgdm1fb3BlcmF0aW9uc19zdHJ1Y3QgaW9fdXJpbmdfbm9tbXVfdm1fb3BzID0ge1xcbi0tXFxuaW9fdXJpbmcvbWVtbWFwLmMtNDEwLVxcbmlvX3VyaW5nL21lbW1hcC5jOjQxMTppbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpXFxuaW9fdXJpbmcvbWVtbWFwLmMtNDEyLXtcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5oPTE1PXVuc2lnbmVkIGxvbmcgaW9fdXJpbmdfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGxvbmcgYWRkcixcXG4tLVxcbmlvX3VyaW5nL21lbW1hcC5oLTE3LVxcdFxcdFxcdFxcdFxcdCB1bnNpZ25lZCBsb25nIGZsYWdzKTtcXG5pb191cmluZy9tZW1tYXAuaDoxODppbnQgaW9fdXJpbmdfbW1hcChzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpO1xcbmlvX3VyaW5nL21lbW1hcC5oLTE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQyMToxOTozNS42MjA5MDIwOTZaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTM0NDU0Nzk5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVhc29uaW5nIGZvciBGdXp6aW5nIGlvX3VyaW5nIE1lbW9yeSBNYW5hZ2VtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBmdXp6aW5nIHRhcmdldHMgYW5kIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gdGhpcyBgaW9fdXJpbmdgIHBhdGNoLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gbWVtb3J5IG1hcHBpbmcuIFNpbmNlIHRoaXMgcGF0Y2ggZnVuZGFtZW50YWxseSBhbHRlcnMgbWVtb3J5IG1hcHBpbmcgbG9naWMgd2l0aGluIGBpb191cmluZ2AsIHRoZSBub24tc3RhdGljIGBpb191cmluZ19tbWFwYCBmdW5jdGlvbiwgYmVpbmcgYSBwYXJ0IG9mIHRoZSBmaWxlIG9wZXJhdGlvbnMsIGltbWVkaWF0ZWx5IGNhdGNoZXMgbXkgYXR0ZW50aW9uIGFzIGEgY3JpdGljYWwgc3ltYm9sIHRvIGFuYWx5emUuXG5cbkkndmUgdGFrZW4gYSBsb29rIGF0IGEgcmFuZ2Ugb2YgZnVuY3Rpb25zLCB3aGljaCBJJ3ZlIGR1YmJlZCBcIkZvY3VzU3ltYm9scyxcIiBiZXlvbmQgdGhlIG1tYXAgZnVuY3Rpb246IGBpb19jcmVhdGVfcmVnaW9uYCwgYGlvX2ZyZWVfcmVnaW9uYCwgYGlvX3JlZ2lzdGVyX3BidWZfcmluZ2AsIGBpb19yZWdpc3Rlcl96Y3J4YCwgYGlvX3VyaW5nX3NldHVwYCwgYW5kIGBpb191cmluZ19yZWdpc3RlcmAuIEhvd2V2ZXIsIGNvbnNpZGVyaW5nIHRoZSBzY29wZSwgdGhlc2UgZnVuY3Rpb25zIGFyZSBsaWtlbHkgdG8gcHJvdmlkZSB0aGUgYmVzdCBjb250ZXh0LlxuXG5Ob3csIGxldCdzIG1vdmUgb24gdG8gY29uZmlndXJhdGlvbnMuIFRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gSSBuZWVkIHRvIGVuc3VyZSBpcyBlbmFibGVkIGlzIG9idmlvdXNseSBgSU9fVVJJTkdgLiBEaWdnaW5nIGRlZXBlciwgdGhlcmUncyBgSU9fVVJJTkdfWkNSWGAsIGJ1dCBpdCdzIGEgYGRlZl9ib29sIHlgLCB3aGljaCBtZWFucyBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaWYgaXRzIGRlcGVuZGVuY2llcyBhcmUgbWV0LiBTbyBJIGNoZWNrZWQgdGhvc2U6IGBJT19VUklOR2AsIGBQQUdFX1BPT0xgLCBgSU5FVGAsIGFuZCBgTkVUX1JYX0JVU1lfUE9MTGAuIFRodXMsIEkgY2FuIHNpbXBsaWZ5IHRoZSBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBvbmx5IGBJT19VUklOR2AuIEkgZG91YmxlLWNoZWNrZWQgYFBBR0VfUE9PTGAgdG8gc2VlIGlmIGl0J3MgdXNlciBzZWxlY3RhYmxlLiBJdCB0dXJucyBvdXQgdGhhdCBgUEFHRV9QT09MYCBpcyBzZWxlY3RlZCBieSBtYW55IG90aGVyIGNvbmZpZ3MsIHNvIGl0IGlzIGFsbW9zdCBjZXJ0YWlubHkgZW5hYmxlZCBpbiBhIHJlYXNvbmFibGUga2VybmVsIGNvbmZpZy5cblxuVGhlbiwgdGhlcmUgYXJlIGBJT19VUklOR19CUEZgIGFuZCBgSU9fVVJJTkdfQlBGX09QU2AuIFRoZXNlIGNhbiBhbHNvIGJlIGlnbm9yZWQgc2luY2UgdGhlIGZvY3VzIGlzIG9uIHRoZSBtZW1vcnkgbWFwcGluZy5cblxuQWZ0ZXIgcmV2aWV3aW5nLCBJJ20gZ29pbmcgYmFjayB0byBgaW9fY3JlYXRlX3JlZ2lvbmAgYW5kIGBpb19mcmVlX3JlZ2lvbmAsIGFzIHRoZXkgYXJlIGZ1bmN0aW9uYWwgYW5kIHJlYWNoYWJsZS4gVGhlIHBhdGNoIGl0c2VsZiBhZGRyZXNzZXMgYSBtZW1vcnkgYWNjb3VudGluZyBidWcgaW4gaG93IGBnZXRfb3JkZXIoKWAgcm91bmRzIHVwIGFsbG9jYXRpb24gc2l6ZXMuIFRoaXMgbGVhZHMgdG8gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIHRoYW4gYXJlIGluaXRpYWxseSBkZXNjcmliZWQgYnkgdGhlIHJlZ2lvbiwgd2hpY2ggY2F1c2VzIGRpc2NyZXBhbmNpZXMgaW4gcGFnZSBhY2NvdW50aW5nLiBUaGUgY2hhbmdlcyBpbnZvbHZlIG1vZGlmeWluZyBgaW9fbWVtX2FsbG9jX2NvbXBvdW5kYCB0byBhY2NvdW50IGZvciB0aGUgZXh0cmEgcGFnZXMgY29ycmVjdGx5IGFuZCBgaW9fZnJlZV9yZWdpb25gIHRvIGFwcHJvcHJpYXRlbHkgZnJlZSB0aGVtLlxuXG5UaGlzIG1lbW9yeSBhY2NvdW50aW5nIGZpeCBpcyBkZWZpbml0ZWx5IGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBpbiB0aGUgY29yZSBvZiBgaW9fdXJpbmdgIG1lbW9yeSBtYW5hZ2VtZW50LiBUaGVyZWZvcmUsIGl0J3MgYWJzb2x1dGVseSBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGZ1enppbmcgYXR0ZW50aW9uLlxuXG4qKkluIHN1bW1hcnksIG15IGFuYWx5c2lzIHJldmVhbHMgdGhlIGZvbGxvd2luZzoqKlxuXG4qICAgKipGb2N1cyBTeW1ib2xzOioqIFRoZSBtb3N0IGltcG9ydGFudCBvbmVzIGZvciBmdXp6aW5nIGFyZSBgaW9fY3JlYXRlX3JlZ2lvbmAsIGBpb19mcmVlX3JlZ2lvbmAsIGBpb191cmluZ19tbWFwYCBhbmQgdGhlIG90aGVyIGFzc29jaWF0ZWQgb25lcy5cbiogICAqKkVuYWJsZSBDb25maWdzOioqIGBJT19VUklOR2AgaXMgZXNzZW50aWFsLlxuXG5JJ20gbm93IHJlYWR5IHRvIHByb2NlZWQgd2l0aCBnZW5lcmF0aW5nIHRoZSBhcHByb3ByaWF0ZSBmdXp6ZXIgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2MzMsIk91dHB1dFRva2VucyI6MTc3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDIxOjE5OjQ5LjA2NjM4MzgyNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDMwNzQyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19jcmVhdGVfcmVnaW9uXCIsXG4gICAgXCJpb19mcmVlX3JlZ2lvblwiLFxuICAgIFwiaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nXCIsXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gICAgXCJpb191cmluZ19zZXR1cFwiLFxuICAgIFwiaW9fdXJpbmdfcmVnaXN0ZXJcIixcbiAgICBcImlvX3VyaW5nX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBhY2NvdW50aW5nIGlzc3VlIGluIGlvX3VyaW5nIG1lbW9yeSBtYXBwaW5nIHdoZXJlIGdldF9vcmRlcigpIHJvdW5kcyB1cCB0aGUgYWxsb2NhdGlvbiBzaXplLCByZXN1bHRpbmcgaW4gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgcHJvcGVybHkgYWNjb3VudGVkIGZvci4gSXQgbW9kaWZpZXMgaW9fbWVtX2FsbG9jX2NvbXBvdW5kIHRvIGFjY291bnQgZm9yIHRoZXNlIGV4dHJhIHBhZ2VzIGFuZCBpb19mcmVlX3JlZ2lvbiB0byB1bmFjY291bnQgdGhlbS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgaW9fdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU9fVVJJTkdcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpb19jcmVhdGVfcmVnaW9uXCIsXG4gICAgXCJpb19mcmVlX3JlZ2lvblwiLFxuICAgIFwiaW9fcmVnaXN0ZXJfcGJ1Zl9yaW5nXCIsXG4gICAgXCJpb19yZWdpc3Rlcl96Y3J4XCIsXG4gICAgXCJpb191cmluZ19zZXR1cFwiLFxuICAgIFwiaW9fdXJpbmdfcmVnaXN0ZXJcIixcbiAgICBcImlvX3VyaW5nX21tYXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBhY2NvdW50aW5nIGlzc3VlIGluIGlvX3VyaW5nIG1lbW9yeSBtYXBwaW5nIHdoZXJlIGdldF9vcmRlcigpIHJvdW5kcyB1cCB0aGUgYWxsb2NhdGlvbiBzaXplLCByZXN1bHRpbmcgaW4gZXh0cmEgcGFnZXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgcHJvcGVybHkgYWNjb3VudGVkIGZvci4gSXQgbW9kaWZpZXMgaW9fbWVtX2FsbG9jX2NvbXBvdW5kIHRvIGFjY291bnQgZm9yIHRoZXNlIGV4dHJhIHBhZ2VzIGFuZCBpb19mcmVlX3JlZ2lvbiB0byB1bmFjY291bnQgdGhlbS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgaW9fdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[1] Phase: Succeeded StartedAt: 2026-08-06 21:20:12 +0000 UTC FinishedAt: 2026-08-06 21:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 21:20:12 +0000 UTC FinishedAt: 2026-08-06 21:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2] Phase: Succeeded StartedAt: 2026-08-06 21:20:12 +0000 UTC FinishedAt: 2026-08-07 01:01:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 21:20:12 +0000 UTC FinishedAt: 2026-08-07 01:01:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 21:20:12 +0000 UTC FinishedAt: 2026-08-06 21:20:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 21:20:12 +0000 UTC FinishedAt: 2026-08-06 21:20:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-3540766710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 21:20:32 +0000 UTC FinishedAt: 2026-08-06 21:37:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 21:20:32 +0000 UTC FinishedAt: 2026-08-06 21:37:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*265aaa97-03e7-4298-b24b-a2a90378d58d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-3540766710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7483d54a-d02c-4c39-9d6f-af0d379830b3", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-108129036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 21:20:32 +0000 UTC FinishedAt: 2026-08-06 21:37:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*265aaa97-03e7-4298-b24b-a2a90378d58d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-3540766710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "7483d54a-d02c-4c39-9d6f-af0d379830b3", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-108129036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 21:37:32 +0000 UTC FinishedAt: 2026-08-06 21:37:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 21:37:32 +0000 UTC FinishedAt: 2026-08-06 21:37:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 21:37:32 +0000 UTC FinishedAt: 2026-08-06 21:37:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 21:37:32 +0000 UTC FinishedAt: 2026-08-06 21:37:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-1294341513/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 21:37:43 +0000 UTC FinishedAt: 2026-08-06 21:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 21:37:43 +0000 UTC FinishedAt: 2026-08-06 21:39:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7483d54a-d02c-4c39-9d6f-af0d379830b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-108129036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 21:39:36 +0000 UTC FinishedAt: 2026-08-06 21:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 21:39:36 +0000 UTC FinishedAt: 2026-08-06 21:39:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 21:39:36 +0000 UTC FinishedAt: 2026-08-06 21:57:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 21:39:36 +0000 UTC FinishedAt: 2026-08-06 21:57:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*265aaa97-03e7-4298-b24b-a2a90378d58d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-1294341513/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "8b792489-0d89-4555-91c3-ac8d56d22a06", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-2733840229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 21:39:36 +0000 UTC FinishedAt: 2026-08-06 21:57:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*265aaa97-03e7-4298-b24b-a2a90378d58d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-1294341513/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "8b792489-0d89-4555-91c3-ac8d56d22a06", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-2733840229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 21:57:35 +0000 UTC FinishedAt: 2026-08-06 21:57:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 21:57:35 +0000 UTC FinishedAt: 2026-08-06 21:57:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 21:57:35 +0000 UTC FinishedAt: 2026-08-06 21:59:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 21:57:35 +0000 UTC FinishedAt: 2026-08-06 21:59:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8b792489-0d89-4555-91c3-ac8d56d22a06,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-2733840229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 21:59:47 +0000 UTC FinishedAt: 2026-08-07 01:01:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 21:59:47 +0000 UTC FinishedAt: 2026-08-07 01:01:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*7483d54a-d02c-4c39-9d6f-af0d379830b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8b792489-0d89-4555-91c3-ac8d56d22a06,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-108129036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-2733840229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 21:59:47 +0000 UTC FinishedAt: 2026-08-06 21:59:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 21:59:47 +0000 UTC FinishedAt: 2026-08-06 21:59:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-1655720926/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 21:59:47 +0000 UTC FinishedAt: 2026-08-06 21:59:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 21:59:47 +0000 UTC FinishedAt: 2026-08-06 21:59:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 21:59:48 +0000 UTC FinishedAt: 2026-08-06 21:59:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 21:59:58 +0000 UTC FinishedAt: 2026-08-07 01:01:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmvqj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["io_uring"],"focus_symbols":["io_create_region","io_free_region","io_register_pbuf_ring","io_register_zcrx","io_uring_setup","io_uring_register","io_uring_mmap"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"0d839570765118029aa8bf4a95444c6a11aacf85","config_name":"upstream-apparmor-kasan.config","enable_configs":["IO_URING"],"series_id":"2f2f2f9a-e9d5-436e-998e-d7f64ff3b09e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 21:59:58 +0000 UTC FinishedAt: 2026-08-07 01:01:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7483d54a-d02c-4c39-9d6f-af0d379830b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8b792489-0d89-4555-91c3-ac8d56d22a06,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-108129036/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-build-action-2733840229/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmvqj2/series-workflowmvqj2-convert-artifact-1655720926/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}