Name: series-workflowb4bgp Phase: Succeeded StartedAt: 2026-07-20 03:08:14 +0000 UTC FinishedAt: 2026-07-20 07:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[0] Phase: Succeeded StartedAt: 2026-07-20 03:08:14 +0000 UTC FinishedAt: 2026-07-20 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[0].run-triage Phase: Succeeded StartedAt: 2026-07-20 03:08:14 +0000 UTC FinishedAt: 2026-07-20 03:39:34 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "96b0655ca9aabdd99e7c8cdedfb315c6b5c91180", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "96b0655ca9aabdd99e7c8cdedfb315c6b5c91180", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "b4eaa51a-d262-4f96-b606-22c96707c768" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damos_va_split", "target_order_store", "target_order_show" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zaG93JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgREFNT04gYWN0aW9uIGBEQU1PU19TUExJVGAgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIuIEl0IGFkZHMgc3lzZnMgaW50ZXJmYWNlcyB0byBjb25maWd1cmUgdGhlIHRhcmdldCBvcmRlciBhbmQgaW1wbGVtZW50cyB0aGUgc3BsaXR0aW5nIGxvZ2ljIGluIGBkYW1vc192YV9zcGxpdGAgdXNpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZSBoYW5kbGUgZWRnZSBjYXNlcyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3YWRmODg0NDExNDkyZTJkNzAyMDBhMWQ0YTViMmFlNTcxYTU0ZGI4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMDM6Mzg6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuaW5kZXggOTA3YTUwNGZiNjRjNTQuLmVlOGUyNjBhNjMxY2YyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG5AQCAtMjY1LDYgJiM0MzsyNjUsMTMgQEAgQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuIERlc2NyaXB0aW9uOlx0QWN0aW9uJiMzOTtzIHRhcmdldCBOVU1BIG5vZGUgaWQuICBTdXBwb3J0ZWQgYnkgb25seSByZWxldmFudFxuIFx0XHRhY3Rpb25zLlxuIFxuJiM0MztXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2Uvc2NoZW1lcy9cdTAwM2NTXHUwMDNlL3RhcmdldF9vcmRlclxuJiM0MztEYXRlOlx0XHRKdWwgMjAyNlxuJiM0MztDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0VGFyZ2V0IGZvbGlvIG9yZGVyIGZvciB0aGUgYGBzcGxpdGBgIGFjdGlvbi4gIExhcmdlIGZvbGlvcyBpblxuJiM0MztcdFx0dGhlIHRhcmdldCByZWdpb24gYXJlIHNwbGl0IGRvd24gdG8gdGhpcyBvcmRlci4gIFZhbGlkIHZhbHVlc1xuJiM0MztcdFx0YXJlIDAgKG9yZGVyLTAgYmFzZSBwYWdlcykgYW5kIDIuLkhQQUdFX1BNRF9PUkRFUi0xLlxuJiM0MztcbiBXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2Uvc2NoZW1lcy9cdTAwM2NTXHUwMDNlL2FwcGx5X2ludGVydmFsX3VzXG4gRGF0ZTpcdFx0U2VwIDIwMjNcbiBDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG5pbmRleCBhZWQ2Y2IxY2Y0ODMxMC4uODdhODAxOTU0YjFiMzAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuQEAgLTU0OSw2ICYjNDM7NTQ5LDExIEBAIHRoYXQgc3VwcG9ydHMgZWFjaCBhY3Rpb24gYXJlIGFzIGJlbG93LlxuICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW5cbiAgICBUUkFOU1BBUkVOVF9IVUdFUEFHRSBpcyBkaXNhYmxlZCwgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBhY3Rpb24gd2lsbCBqdXN0XG4gICAgZmFpbC5cbiYjNDM7IC0gYGBzcGxpdGBgOiBTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gZG93biB0byB0aGUgb3JkZXIgc3BlY2lmaWVkXG4mIzQzOyAgIGJ5IHRoZSBzY2hlbWUmIzM5O3MgYGB0YXJnZXRfb3JkZXJgYCAoYGAwYGAgZm9yIG9yZGVyLTAgYmFzZSBwYWdlcywgb3JcbiYjNDM7ICAgYGAyLi5IUEFHRV9QTURfT1JERVItMWBgKS4gIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9uc1xuJiM0MzsgICBzZXQuIFdoZW4gVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgYWN0aW9uXG4mIzQzOyAgIHdpbGwganVzdCBmYWlsLlxuICAtIGBgbHJ1X3ByaW9gYDogUHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC5cbiAgLSBgYGxydV9kZXByaW9gYDogRGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTEwLDYgJiM0MzsxMTAsNyBAQCBzdHJ1Y3QgZGFtb25fdGFyZ2V0IHtcbiAgKiBAREFNT1NfSFVHRVBBR0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0hVR0VQQUdFLlxuICAqIEBEQU1PU19OT0hVR0VQQUdFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLlxuICAqIEBEQU1PU19DT0xMQVBTRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfQ09MTEFQU0UuXG4mIzQzOyAqIEBEQU1PU19TUExJVDpcdFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiB0byBhIHNtYWxsZXIgb3JkZXIuXG4gICogQERBTU9TX0xSVV9QUklPOlx0UHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICogQERBTU9TX0xSVV9ERVBSSU86XHREZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19NSUdSQVRFX0hPVDogIE1pZ3JhdGUgdGhlIHJlZ2lvbnMgcHJpb3JpdGl6aW5nIHdhcm1lciByZWdpb25zLlxuQEAgLTEzMCw2ICYjNDM7MTMxLDcgQEAgZW51bSBkYW1vc19hY3Rpb24ge1xuIFx0REFNT1NfSFVHRVBBR0UsXG4gXHREQU1PU19OT0hVR0VQQUdFLFxuIFx0REFNT1NfQ09MTEFQU0UsXG4mIzQzO1x0REFNT1NfU1BMSVQsXG4gXHREQU1PU19MUlVfUFJJTyxcbiBcdERBTU9TX0xSVV9ERVBSSU8sXG4gXHREQU1PU19NSUdSQVRFX0hPVCxcbkBAIC01ODIsMTAgJiM0Mzs1ODQsMTUgQEAgc3RydWN0IGRhbW9zIHtcbiBcdHN0cnVjdCBkYW1vc19xdW90YSBxdW90YTtcbiBcdHN0cnVjdCBkYW1vc193YXRlcm1hcmtzIHdtYXJrcztcbiBcdHVuaW9uIHtcbi1cdFx0c3RydWN0IHtcbi1cdFx0XHRpbnQgdGFyZ2V0X25pZDtcbi1cdFx0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyBtaWdyYXRlX2Rlc3RzO1xuLVx0XHR9O1xuJiM0MztcdFx0aW50IHRhcmdldF9uaWQ7XG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyBtaWdyYXRlX2Rlc3RzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEBvcmRlcjogdGFyZ2V0IGZvbGlvIG9yZGVyIGZvciBEQU1PU19TUExJVC5cbiYjNDM7XHRcdCAqIFNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIHRoaXMgb3JkZXIuICAwIGZvclxuJiM0MztcdFx0ICogb3JkZXItMCBiYXNlIHBhZ2VzLCAyLi5IUEFHRV9QTURfT1JERVItMSBmb3JcbiYjNDM7XHRcdCAqIHNtYWxsZXIgbVRIUC4gIE9yZGVyLTEgaXMgcmVqZWN0ZWQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHVuc2lnbmVkIGludCBvcmRlcjtcbiBcdH07XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGNvcmVfZmlsdGVycztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgb3BzX2ZpbHRlcnM7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA4MDZhNjdkMDJhNmU5MC4uMzk0YzYyNDU1YWQ1NmIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTY5Myw2ICYjNDM7NjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHRzY2hlbWUtXHUwMDNlcGF0dGVybiA9ICpwYXR0ZXJuO1xuIFx0c2NoZW1lLVx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcbiYjNDM7XHRzY2hlbWUtXHUwMDNlb3JkZXIgPSAwO1xuIFx0c2NoZW1lLVx1MDAzZWFwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7XG4gXHQvKlxuIFx0ICogbmV4dF9hcHBseV9zaXMgd2lsbCBiZSBzZXQgd2hlbiBrZGFtb25kIHN0YXJ0cy4gIFdoaWxlIGtkYW1vbmQgaXNcbkBAIC0xNDQ2LDYgJiM0MzsxNDQ3LDcgQEAgc3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxuIFxuIFx0ZHN0LVx1MDAzZXBhdHRlcm4gPSBzcmMtXHUwMDNlcGF0dGVybjtcbiBcdGRzdC1cdTAwM2VhY3Rpb24gPSBzcmMtXHUwMDNlYWN0aW9uO1xuJiM0MztcdGRzdC1cdTAwM2VvcmRlciA9IHNyYy1cdTAwM2VvcmRlcjtcbiBcdGRzdC1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IHNyYy1cdTAwM2VhcHBseV9pbnRlcnZhbF91cztcbiBcbiBcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YShcdTAwMjZkc3QtXHUwMDNlcXVvdGEsIFx1MDAyNnNyYy1cdTAwM2VxdW90YSk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG5pbmRleCAzMmY0OTVhOTZiMTdhOC4uNzI1ZWQ4MWNjZjZjYWMgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuQEAgLTQsNyAmIzQzOzQsOSBAQFxuICAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N5c2ZzLWNvbW1vbi5oXCYjMzQ7XG4gXG5AQCAtMjI2MCw2ICYjNDM7MjI2Miw3IEBAIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xuIFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcbiBcdGludCB0YXJnZXRfbmlkO1xuJiM0MztcdHVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7XG4gXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfZGVzdHMgKmRlc3RzO1xuIH07XG4gXG5AQCAtMjI5Myw2ICYjNDM7MjI5NiwxMCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lIGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc1tdID0ge1xuIFx0XHQuYWN0aW9uID0gREFNT1NfQ09MTEFQU0UsXG4gXHRcdC5uYW1lID0gXCYjMzQ7Y29sbGFwc2VcJiMzNDssXG4gXHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5hY3Rpb24gPSBEQU1PU19TUExJVCxcbiYjNDM7XHRcdC5uYW1lID0gXCYjMzQ7c3BsaXRcJiMzNDssXG4mIzQzO1x0fSxcbiBcdHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0xSVV9QUklPLFxuIFx0XHQubmFtZSA9IFwmIzM0O2xydV9wcmlvXCYjMzQ7LFxuQEAgLTIzMjYsNiAmIzQzOzIzMzMsNyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqZGFtb25fc3lzZnNfc2NoZW1lX2FsbG9jKFxuIFx0c2NoZW1lLVx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcbiBcdHNjaGVtZS1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IGFwcGx5X2ludGVydmFsX3VzO1xuIFx0c2NoZW1lLVx1MDAzZXRhcmdldF9uaWQgPSBOVU1BX05PX05PREU7XG4mIzQzO1x0c2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9IDA7XG4gXHRyZXR1cm4gc2NoZW1lO1xuIH1cbiBcbkBAIC0yNjQ1LDYgJiM0MzsyNjUzLDQwIEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXHRyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbiYjNDM7XHRcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXG4mIzQzO1x0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuJiM0MztcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxuJiM0MztcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdmFsO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcdTAwMjZ2YWwpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuJiM0MztcdC8qIFZhbGlkIHNwbGl0IHRhcmdldHM6IDAgKG9yZGVyLTAgYmFzZSBwYWdlcykgb3IgMi4uSFBBR0VfUE1EX09SREVSLTEuICovXG4mIzQzO1x0aWYgKHZhbCAhPSAwIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAzYyAyIHx8IHZhbCBcdTAwM2U9IEhQQUdFX1BNRF9PUkRFUikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7I2Vsc2VcbiYjNDM7XHRpZiAodmFsICE9IDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSB2YWw7XG4mIzQzO1x0cmV0dXJuIGNvdW50O1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuIHtcbiBcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7XG5AQCAtMjY1OSwxMCAmIzQzOzI3MDEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9XG4gc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyID1cbiBcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X25pZCwgMDYwMCk7XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cbiYjNDM7XHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcbiYjNDM7XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIuYXR0cixcbiBcdE5VTEwsXG4gfTtcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XG5AQCAtMzAxMSw2ICYjNDM7MzA1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcbiBcdGlmICghc2NoZW1lKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiYjNDM7XHRzY2hlbWUtXHUwMDNlb3JkZXIgPSBzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyO1xuJiM0MztcbiBcdGVyciA9IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShzeXNmc19xdW90YXMtXHUwMDNlZ29hbHMsIFx1MDAyNnNjaGVtZS1cdTAwM2VxdW90YSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRhbW9uX2Rlc3Ryb3lfc2NoZW1lKHNjaGVtZSk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcbmluZGV4IGQxMGI4MDQyYWRiNWJhLi5hODYwNzQ0ODU4NGQ1NSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02LDYgJiM0Mzs2LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIFwmIzM0O2RhbW9uLXZhOiBcJiMzNDsgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaGlnaG1lbS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2V0bGIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tdV9ub3RpZmllci5oXHUwMDNlXG5AQCAtODk2LDYgJiM0Mzs4OTcsMTExIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxuJiM0MzsgKiB1c2luZyB0aGUgZXhpc3Rpbmcgc3BsaXRfZm9saW9fdG9fb3JkZXIoKS5cbiYjNDM7ICpcbiYjNDM7ICogTG9ja2luZzogZm9saW9fd2Fsa19zdGFydCgpIHJldHVybnMgdGhlIGZvbGlvIHdpdGggdGhlIHBhZ2UgdGFibGUgbG9ja1xuJiM0MzsgKiBoZWxkLiAgc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBtdXN0IG5vdCBydW4gdW5kZXIgdGhlIHBhZ2UgdGFibGUgbG9jayxcbiYjNDM7ICogc28gd2UgcGluIHRoZSBmb2xpbyAocmVmZXJlbmNlICYjNDM7IGxvY2spLCBlbmQgdGhlIHdhbGsgdG8gZHJvcCB0aGUgcGFnZVxuJiM0MzsgKiB0YWJsZSBsb2NrLCBhbmQgc3BsaXQgd2hpbGUgaG9sZGluZyBvbmx5IG1tYXBfcmVhZF9sb2NrLlxuJiM0MzsgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHJldHVybnMgLUVCVVNZIGZvciBhIHJhY2VkIG9yIHBpbm5lZCBmb2xpbztcbiYjNDM7ICogd2Ugc2tpcCBzdWNoIGZvbGlvcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy1cdTAwM2VvcmRlcjtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFkZHIgPSBBTElHTl9ET1dOKHItXHUwMDNlYXIuc3RhcnQsIFBBR0VfU0laRSk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlbmQgPSByLVx1MDAzZWFyLmVuZDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwO1xuJiM0MztcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuJiM0MztcbiYjNDM7XHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuJiM0MztcdGlmICghbW0pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGFkZHIgXHUwMDNjIGVuZCkge1xuJiM0MztcdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4mIzQzO1x0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuJiM0MztcdFx0c3RydWN0IGZvbGlvX3dhbGsgZnc7XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIGZvbGlvX3N6ID0gMDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobW1hcF9yZWFkX2xvY2tfa2lsbGFibGUobW0pKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHR2bWEgPSB2bWFfbG9va3VwKG1tLCBhZGRyKTtcbiYjNDM7XHRcdGlmICghdm1hKSB7XG4mIzQzO1x0XHRcdC8qIFNraXAgdGhlIGdhcCB0byB0aGUgbmV4dCBWTUEsIGlmIGFueS4gKi9cbiYjNDM7XHRcdFx0dm1hID0gZmluZF92bWEobW0sIGFkZHIpO1xuJiM0MztcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdFx0aWYgKCF2bWEgfHwgdm1hLVx1MDAzZXZtX3N0YXJ0IFx1MDAzZT0gZW5kKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRhZGRyID0gdm1hLVx1MDAzZXZtX3N0YXJ0O1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQvKiBGb2xpb3MgaW4gdGhlc2UgVk1BcyBhcmUgbm90IG91ciBidXNpbmVzcy4gKi9cbiYjNDM7XHRcdGlmICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9IVUdFVExCIHwgVk1fTUlYRURNQVApKSB7XG4mIzQzO1x0XHRcdGFkZHIgPSB2bWEtXHUwMDNldm1fZW5kO1xuJiM0MztcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0Zm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KFx1MDAyNmZ3LCB2bWEsIGFkZHIsIDApO1xuJiM0MztcdFx0aWYgKCFmb2xpbykge1xuJiM0MztcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdFx0YWRkciAmIzQzOz0gUEFHRV9TSVpFO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRmb2xpb19zeiA9IGZvbGlvX3NpemUoZm9saW8pO1xuJiM0MztcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBGb3IgZmlsZS1iYWNrZWQgZm9saW9zLCBAdGFyZ2V0X29yZGVyIG1heSBiZSBiZWxvdyB0aGVcbiYjNDM7XHRcdCAqIGZpbGVzeXN0ZW0mIzM5O3MgbWluaW11bSBmb2xpbyBvcmRlciAobWFwcGluZ19taW5fZm9saW9fb3JkZXIoKSkuXG4mIzQzO1x0XHQgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHdpbGwgc2ltcGx5IGZhaWwgaW4gdGhhdCBjYXNlIGFuZFxuJiM0MztcdFx0ICogd2Ugc2tpcCB0aGUgZm9saW8uICBUaGlzIGlzIGEgc2FmZSBuby1vcDsgZnV0dXJlIHdvcmsgY2FuXG4mIzQzO1x0XHQgKiBhZGp1c3QgdGFyZ2V0X29yZGVyIHVwd2FyZCBsaWtlIHNwbGl0X2h1Z2VfcGFnZXNfaW5fcGlkKClcbiYjNDM7XHRcdCAqIGRvZXMgd2hlbiBhIHNwZWNpZmljIGZpbGVzeXN0ZW0gbmVlZHMgaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XG4mIzQzO1x0XHQvKiBIb25vdXIgdGhlIHNjaGVtZSYjMzk7cyBvcGVyYXRpb25zLWxheWVyIGZpbHRlcnMuICovXG4mIzQzO1x0XHRpZiAoZGFtb3Nfb3BzX2hhc19maWx0ZXIocykpIHtcbiYjNDM7XHRcdFx0aWYgKGRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkcixcbiYjNDM7XHRcdFx0XHRcdGZ3LmxldmVsID09IEZXX0xFVkVMX1BURSA/IGZ3LnB0ZXAgOiBOVUxMLFxuJiM0MztcdFx0XHRcdFx0ZncubGV2ZWwgPT0gRldfTEVWRUxfUE1EID8gZncucG1kcCA6IE5VTEwpKSB7XG4mIzQzO1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1x0XHRcdFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XG4mIzQzO1x0XHRcdFx0Z290byBuZXh0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zejtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoZm9saW9fb3JkZXIoZm9saW8pIFx1MDAzZSB0YXJnZXRfb3JkZXIgXHUwMDI2XHUwMDI2IGZvbGlvX3RyeWxvY2soZm9saW8pKSB7XG4mIzQzO1x0XHRcdGZvbGlvX2dldChmb2xpbyk7XG4mIzQzO1x0XHRcdC8qIERyb3AgdGhlIHBhZ2UgdGFibGUgbG9jayBiZWZvcmUgc3BsaXR0aW5nLiAqL1xuJiM0MztcdFx0XHRmb2xpb193YWxrX2VuZChcdTAwMjZmdywgdm1hKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIHRhcmdldF9vcmRlcikpXG4mIzQzO1x0XHRcdFx0YXBwbGllZCAmIzQzOz0gZm9saW9fc3o7XG4mIzQzO1xuJiM0MztcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuJiM0MztcdFx0XHRmb2xpb19wdXQoZm9saW8pO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7bmV4dDpcbiYjNDM7XHRcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIGZvbGlvX3N6KSAmIzQzOyBmb2xpb19zejtcbiYjNDM7XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bW1wdXQobW0pO1xuJiM0MztcdHJldHVybiBhcHBsaWVkO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuQEAgLTkyNiw2ICYjNDM7MTAzMiw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gXHRjYXNlIERBTU9TX1NUQVQ6XG4gXHRcdHJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4mIzQzO1x0Y2FzZSBEQU1PU19TUExJVDpcbiYjNDM7XHRcdHJldHVybiBkYW1vc192YV9zcGxpdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0ZGVmYXVsdDpcbiBcdFx0LypcbiBcdFx0ICogREFNT1MgYWN0aW9ucyB0aGF0IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBieSAmIzM5O3ZhZGRyJiMzOTsuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZVxuaW5kZXggZWNlMjQ0ZTVjNWI5NWMuLmE2MjNjMjcxMzU1ZmZlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXG5AQCAtMTIsNiAmIzQzOzEyLDcgQEAgVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnMuc2hcbiBURVNUX1BST0dTICYjNDM7PSBzeXNmcy5weVxuIFRFU1RfUFJPR1MgJiM0Mzs9IHN5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnNfd3NzX2VzdGltYXRpb24ucHlcbiBURVNUX1BST0dTICYjNDM7PSBkYW1vc19xdW90YS5weSBkYW1vc19xdW90YV9nb2FsLnB5IGRhbW9zX2FwcGx5X2ludGVydmFsLnB5XG4mIzQzO1RFU1RfUFJPR1MgJiM0Mzs9IGRhbW9zX3NwbGl0LnB5XG4gVEVTVF9QUk9HUyAmIzQzOz0gZGFtb3NfdHJpZWRfcmVnaW9ucy5weSBkYW1vbl9ucl9yZWdpb25zLnB5XG4gVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnNfcmVmcmVzaC5weVxuIFRFU1RfUFJPR1MgJiM0Mzs9IHJlY2xhaW0uc2ggbHJ1X3NvcnQuc2hcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9fZGFtb25fc3lzZnMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9fZGFtb25fc3lzZnMucHlcbmluZGV4IGU2YTIyNjVkNzIxZThiLi41YTAxZjMxYWQ5ZjI2ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5XG5AQCAtNDE5LDYgJiM0Mzs0MTksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgZmlsdGVycyA9IE5vbmVcbiAgICAgYXBwbHlfaW50ZXJ2YWxfdXMgPSBOb25lXG4gICAgIHRhcmdldF9uaWQgPSBOb25lXG4mIzQzOyAgICB0YXJnZXRfb3JkZXIgPSBOb25lXG4gICAgIGRlc3RzID0gTm9uZVxuICAgICBpZHggPSBOb25lXG4gICAgIGNvbnRleHQgPSBOb25lXG5AQCAtNDI5LDcgJiM0Mzs0MzAsNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjdGlvbj0mIzM5O3N0YXQmIzM5OywgYWNjZXNzX3BhdHRlcm49RGFtb3NBY2Nlc3NQYXR0ZXJuKCksXG4gICAgICAgICAgICAgICAgICBxdW90YT1EYW1vc1F1b3RhKCksIHdhdGVybWFya3M9RGFtb3NXYXRlcm1hcmtzKCksXG4gICAgICAgICAgICAgICAgICBjb3JlX2ZpbHRlcnM9W10sIG9wc19maWx0ZXJzPVtdLCBmaWx0ZXJzPVtdLCB0YXJnZXRfbmlkPTAsXG4tICAgICAgICAgICAgICAgICBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxuJiM0MzsgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLCBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxuICAgICAgICAgc2VsZi5hY3Rpb24gPSBhY3Rpb25cbiAgICAgICAgIHNlbGYuYWNjZXNzX3BhdHRlcm4gPSBhY2Nlc3NfcGF0dGVyblxuICAgICAgICAgc2VsZi5hY2Nlc3NfcGF0dGVybi5zY2hlbWUgPSBzZWxmXG5AQCAtNDQ4LDYgJiM0Mzs0NDksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgICAgIHNlbGYuZmlsdGVycy5zY2hlbWUgPSBzZWxmXG4gXG4gICAgICAgICBzZWxmLnRhcmdldF9uaWQgPSB0YXJnZXRfbmlkXG4mIzQzOyAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIgPSB0YXJnZXRfb3JkZXJcbiAgICAgICAgIHNlbGYuZGVzdHMgPSBkZXN0c1xuICAgICAgICAgc2VsZi5kZXN0cy5zY2hlbWUgPSBzZWxmXG4gXG5AQCAtNDkyLDYgJiM0Mzs0OTQsMTEgQEAgY2xhc3MgRGFtb3M6XG4gICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XG4gICAgICAgICAgICAgcmV0dXJuIGVyclxuIFxuJiM0MzsgICAgICAgIGVyciA9IHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3lzZnNfZGlyKCksICYjMzk7dGFyZ2V0X29yZGVyJiMzOTspLCAmIzM5OyVkJiMzOTsgJVxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIpXG4mIzQzOyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuJiM0MzsgICAgICAgICAgICByZXR1cm4gZXJyXG4mIzQzO1xuICAgICAgICAgZXJyID0gc2VsZi5kZXN0cy5zdGFnZSgpXG4gICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XG4gICAgICAgICAgICAgcmV0dXJuIGVyclxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vZGFtb3Nfc3BsaXQucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMDg5ZmJlMGYwZDRkM2Jcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5XG5AQCAtMCwwICYjNDM7MSwxMjUgQEBcbiYjNDM7IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBGdW5jdGlvbmFsIHRlc3QgZm9yIHRoZSBEQU1PU19TUExJVCBhY3Rpb24uXG4mIzQzOyNcbiYjNDM7IyBBIGNoaWxkIHByb2Nlc3MgYWxsb2NhdGVzIGEgTUFEVl9IVUdFUEFHRS1iYWNrZWQgYW5vbnltb3VzIHJlZ2lvbiBhbmRcbiYjNDM7IyBmYXVsdHMgaXQgaW4gc28gdGhhdCBpdCBpcyBiYWNrZWQgYnkgKG0pVEhQcy4gIFRoZSBwYXJlbnQgdGhlbiBydW5zIGFcbiYjNDM7IyBEQU1PTi9EQU1PUyBzY2hlbWUgd2l0aCBhY3Rpb24gJiMzOTtzcGxpdCYjMzk7IGFuZCB0YXJnZXRfb3JkZXIgMCBhZ2FpbnN0IHRoZVxuJiM0MzsjIGNoaWxkIGFuZCBjaGVja3MgdGhhdCB0aGUgaHVnZSBwYWdlcyBhcmUgc3BsaXQgaW50byBiYXNlIHBhZ2VzLCBpLmUuIHRoZVxuJiM0MzsjIGNoaWxkJiMzOTtzIEFub25IdWdlUGFnZXMgKGFzIHJlcG9ydGVkIGJ5IC9wcm9jL1x1MDAzY3BpZFx1MDAzZS9zbWFwcykgZHJvcHMuXG4mIzQzO1xuJiM0MztpbXBvcnQgY3R5cGVzXG4mIzQzO2ltcG9ydCBvc1xuJiM0MztpbXBvcnQgc2lnbmFsXG4mIzQzO2ltcG9ydCBzeXNcbiYjNDM7aW1wb3J0IHRpbWVcbiYjNDM7XG4mIzQzO2ltcG9ydCBfZGFtb25fc3lzZnNcbiYjNDM7XG4mIzQzO1BNRF9TSVpFID0gMiAqIDEwMjQgKiAxMDI0XG4mIzQzO01BRFZfSFVHRVBBR0UgPSAxNFxuJiM0MztQUk9UX1JFQURfV1JJVEUgPSAweDEgfCAweDJcbiYjNDM7TUFQX1BSSVZBVEVfQU5PTiA9IDB4MiB8IDB4MjBcbiYjNDM7UkVHSU9OX1NJWkUgPSAzMiAqIFBNRF9TSVpFXG4mIzQzO1xuJiM0MztkZWYgY2hpbGRfd29ya2xvYWQoKTpcbiYjNDM7ICAgICYjMzk7JiMzOTsmIzM5O0FsbG9jYXRlIGEgUE1ELWFsaWduZWQsIFRIUC1iYWNrZWQgcmVnaW9uLCBmYXVsdCBpdCBpbiwgdGhlbiBpZGxlLiYjMzk7JiMzOTsmIzM5O1xuJiM0MzsgICAgbGliYyA9IGN0eXBlcy5DRExMKCYjMzk7bGliYy5zby42JiMzOTssIHVzZV9lcnJubz1UcnVlKVxuJiM0MzsgICAgbGliYy5tbWFwLnJlc3R5cGUgPSBjdHlwZXMuY192b2lkX3BcbiYjNDM7ICAgIGxpYmMubW1hcC5hcmd0eXBlcyA9IFtjdHlwZXMuY192b2lkX3AsIGN0eXBlcy5jX3NpemVfdCwgY3R5cGVzLmNfaW50LFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50LCBjdHlwZXMuY19sb25nXVxuJiM0MzsgICAgbGliYy5tYWR2aXNlLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3ZvaWRfcCwgY3R5cGVzLmNfc2l6ZV90LCBjdHlwZXMuY19pbnRdXG4mIzQzO1xuJiM0MzsgICAgIyBPdmVyLWFsbG9jYXRlIHNvIHRoYXQgYSBQTUQtYWxpZ25lZCB3aW5kb3cgaXMgYXZhaWxhYmxlLlxuJiM0MzsgICAgcmF3ID0gbGliYy5tbWFwKE5vbmUsIFJFR0lPTl9TSVpFICYjNDM7IFBNRF9TSVpFLCBQUk9UX1JFQURfV1JJVEUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEVfQU5PTiwgLTEsIDApXG4mIzQzOyAgICBpZiByYXcgaXMgTm9uZSBvciByYXcgPT0gY3R5cGVzLmNfdm9pZF9wKC0xKS52YWx1ZTpcbiYjNDM7ICAgICAgICBvcy5fZXhpdCgyKVxuJiM0MzsgICAgYmFzZSA9IChyYXcgJiM0MzsgUE1EX1NJWkUgLSAxKSBcdTAwMjYgfihQTURfU0laRSAtIDEpXG4mIzQzOyAgICBsaWJjLm1hZHZpc2UoY3R5cGVzLmNfdm9pZF9wKGJhc2UpLCBSRUdJT05fU0laRSwgTUFEVl9IVUdFUEFHRSlcbiYjNDM7XG4mIzQzOyAgICBidWYgPSAoY3R5cGVzLmNfY2hhciAqIFJFR0lPTl9TSVpFKS5mcm9tX2FkZHJlc3MoYmFzZSlcbiYjNDM7ICAgIGZvciBvZmYgaW4gcmFuZ2UoMCwgUkVHSU9OX1NJWkUsIDQwOTYpOlxuJiM0MzsgICAgICAgIGJ1ZltvZmZdID0gMVxuJiM0MztcbiYjNDM7ICAgICMgUmVhZHk7IGlkbGUgdW50aWwgdGhlIHBhcmVudCB0ZWFycyB1cyBkb3duLlxuJiM0MzsgICAgc2lnbmFsLnBhdXNlKClcbiYjNDM7XG4mIzQzO2RlZiBhbm9uX2h1Z2Vfa2IocGlkKTpcbiYjNDM7ICAgIHRvdGFsID0gMFxuJiM0MzsgICAgdHJ5OlxuJiM0MzsgICAgICAgIHdpdGggb3BlbigmIzM5Oy9wcm9jLyVkL3NtYXBzJiMzOTsgJSBwaWQpIGFzIGY6XG4mIzQzOyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6XG4mIzQzOyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJiMzOTtBbm9uSHVnZVBhZ2VzOiYjMzk7KTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0b3RhbCAmIzQzOz0gaW50KGxpbmUuc3BsaXQoKVsxXSlcbiYjNDM7ICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjpcbiYjNDM7ICAgICAgICByZXR1cm4gLTFcbiYjNDM7ICAgIHJldHVybiB0b3RhbFxuJiM0MztcbiYjNDM7ZGVmIG1haW4oKTpcbiYjNDM7ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygmIzM5Oy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2VuYWJsZWQmIzM5Oyk6XG4mIzQzOyAgICAgICAgcHJpbnQoJiMzOTtTS0lQOiB0cmFuc3BhcmVudCBodWdlcGFnZSBpcyBub3QgYXZhaWxhYmxlJiMzOTspXG4mIzQzOyAgICAgICAgZXhpdCgwKVxuJiM0MztcbiYjNDM7ICAgIHBpZCA9IG9zLmZvcmsoKVxuJiM0MzsgICAgaWYgcGlkID09IDA6XG4mIzQzOyAgICAgICAgY2hpbGRfd29ya2xvYWQoKVxuJiM0MzsgICAgICAgIG9zLl9leGl0KDApXG4mIzQzO1xuJiM0MzsgICAgdHJ5OlxuJiM0MzsgICAgICAgICMgR2l2ZSB0aGUgY2hpbGQgdGltZSB0byBmYXVsdCBpbiBpdHMgaHVnZSBwYWdlcy5cbiYjNDM7ICAgICAgICB0aW1lLnNsZWVwKDIpXG4mIzQzOyAgICAgICAgYmVmb3JlID0gYW5vbl9odWdlX2tiKHBpZClcbiYjNDM7ICAgICAgICBpZiBiZWZvcmUgXHUwMDNjPSAwOlxuJiM0MzsgICAgICAgICAgICBwcmludCgmIzM5O1NLSVA6IHdvcmtsb2FkIGRpZCBub3QgZ2V0IGFueSBUSFAgKEFub25IdWdlUGFnZXM9JWQpJiMzOTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgJSBiZWZvcmUpXG4mIzQzOyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbiYjNDM7ICAgICAgICAgICAgZXhpdCgwKVxuJiM0MztcbiYjNDM7ICAgICAgICAjIFNwbGl0IGV2ZXJ5IGxhcmdlIGZvbGlvIGluIHRoZSB0YXJnZXQgZG93biB0byBvcmRlci0wIGJhc2UgcGFnZXMuXG4mIzQzOyAgICAgICAga2RhbW9uZHMgPSBfZGFtb25fc3lzZnMuS2RhbW9uZHMoW19kYW1vbl9zeXNmcy5LZGFtb25kKFxuJiM0MzsgICAgICAgICAgICBjb250ZXh0cz1bX2RhbW9uX3N5c2ZzLkRhbW9uQ3R4KFxuJiM0MzsgICAgICAgICAgICAgICAgb3BzPSYjMzk7dmFkZHImIzM5OyxcbiYjNDM7ICAgICAgICAgICAgICAgIHRhcmdldHM9W19kYW1vbl9zeXNmcy5EYW1vblRhcmdldChwaWQ9cGlkKV0sXG4mIzQzOyAgICAgICAgICAgICAgICBzY2hlbWVzPVtfZGFtb25fc3lzZnMuRGFtb3MoXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSYjMzk7c3BsaXQmIzM5OyxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfb3JkZXI9MCxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIG1hdGNoIGV2ZXJ5IHJlZ2lvbiByZWdhcmRsZXNzIG9mIGFjY2Vzcy9hZ2Uvc2l6ZSwgc29cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIHRoZSBBUk02NCBzdGFsZS1UTEIgYmxpbmQgc3BvdCBjYW5ub3QgbWFzayB0aGUgdGFyZ2V0XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3BhdHRlcm49X2RhbW9uX3N5c2ZzLkRhbW9zQWNjZXNzUGF0dGVybihcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1bMCwgMioqNjQgLSAxXSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgbnJfYWNjZXNzZXM9WzAsIDIqKjY0IC0gMV0sXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgIGFnZT1bMCwgMioqNjQgLSAxXSksXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgYXBwbHlfaW50ZXJ2YWxfdXM9MCldKV0pXSlcbiYjNDM7ICAgICAgICBlcnIgPSBrZGFtb25kcy5zdGFydCgpXG4mIzQzOyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuJiM0MzsgICAgICAgICAgICBwcmludCgmIzM5O2tkYW1vbmRzIHN0YXJ0IGZhaWxlZDogJXMmIzM5OyAlIGVycilcbiYjNDM7ICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKVxuJiM0MzsgICAgICAgICAgICBleGl0KDEpXG4mIzQzO1xuJiM0MzsgICAgICAgICMgTGV0IHRoZSBzY2hlbWUgZmluZCBhbmQgc3BsaXQgdGhlIHJlZ2lvbnMuXG4mIzQzOyAgICAgICAgYWZ0ZXIgPSBiZWZvcmVcbiYjNDM7ICAgICAgICBmb3IgXyBpbiByYW5nZSg1MCk6XG4mIzQzOyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yKVxuJiM0MzsgICAgICAgICAgICBhZnRlciA9IGFub25faHVnZV9rYihwaWQpXG4mIzQzOyAgICAgICAgICAgIGlmIGFmdGVyID09IDA6XG4mIzQzOyAgICAgICAgICAgICAgICBicmVha1xuJiM0MztcbiYjNDM7ICAgICAgICBrZGFtb25kcy5zdG9wKClcbiYjNDM7ICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXG4mIzQzO1xuJiM0MzsgICAgICAgIGlmIGFmdGVyIFx1MDAzZT0gYmVmb3JlOlxuJiM0MzsgICAgICAgICAgICBwcmludCgmIzM5O0ZBSUw6IEFub25IdWdlUGFnZXMgZGlkIG5vdCBzaHJpbms6IGJlZm9yZT0lZCBLaUIgJiMzOTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgJiMzOTthZnRlcj0lZCBLaUImIzM5OyAlIChiZWZvcmUsIGFmdGVyKSlcbiYjNDM7ICAgICAgICAgICAgZXhpdCgxKVxuJiM0MzsgICAgICAgIHByaW50KCYjMzk7UEFTUzogQW5vbkh1Z2VQYWdlcyAlZCBLaUIgLVx1MDAzZSAlZCBLaUIgYWZ0ZXIgREFNT1NfU1BMSVQmIzM5O1xuJiM0MzsgICAgICAgICAgICAgICUgKGJlZm9yZSwgYWZ0ZXIpKVxuJiM0MzsgICAgZmluYWxseTpcbiYjNDM7ICAgICAgICB0cnk6XG4mIzQzOyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbiYjNDM7ICAgICAgICBleGNlcHQgUHJvY2Vzc0xvb2t1cEVycm9yOlxuJiM0MzsgICAgICAgICAgICBwYXNzXG4mIzQzO1xuJiM0MztpZiBfX25hbWVfXyA9PSAmIzM5O19fbWFpbl9fJiMzOTs6XG4mIzQzOyAgICBtYWluKClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XG5pbmRleCAzZmZhMDU0YjYzODY3ZC4uNDlkM2MzMTlkZmQ4OTggMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHlcbkBAIC0xMzEsMTEgJiM0MzsxMzEsMTIgQEAgZGVmIGFzc2VydF9zY2hlbWVfY29tbWl0dGVkKHNjaGVtZSwgZHVtcCk6XG4gICAgICAgICAgICAgJiMzOTtodWdlcGFnZSYjMzk7OiAzLFxuICAgICAgICAgICAgICYjMzk7bm9odWdlcGFnZSYjMzk7OiA0LFxuICAgICAgICAgICAgICYjMzk7Y29sbGFwc2UmIzM5OzogNSxcbi0gICAgICAgICAgICAmIzM5O2xydV9wcmlvJiMzOTs6IDYsXG4tICAgICAgICAgICAgJiMzOTtscnVfZGVwcmlvJiMzOTs6IDcsXG4tICAgICAgICAgICAgJiMzOTttaWdyYXRlX2hvdCYjMzk7OiA4LFxuLSAgICAgICAgICAgICYjMzk7bWlncmF0ZV9jb2xkJiMzOTs6IDksXG4tICAgICAgICAgICAgJiMzOTtzdGF0JiMzOTs6IDEwLFxuJiM0MzsgICAgICAgICAgICAmIzM5O3NwbGl0JiMzOTs6IDYsXG4mIzQzOyAgICAgICAgICAgICYjMzk7bHJ1X3ByaW8mIzM5OzogNyxcbiYjNDM7ICAgICAgICAgICAgJiMzOTtscnVfZGVwcmlvJiMzOTs6IDgsXG4mIzQzOyAgICAgICAgICAgICYjMzk7bWlncmF0ZV9ob3QmIzM5OzogOSxcbiYjNDM7ICAgICAgICAgICAgJiMzOTttaWdyYXRlX2NvbGQmIzM5OzogMTAsXG4mIzQzOyAgICAgICAgICAgICYjMzk7c3RhdCYjMzk7OiAxMSxcbiAgICAgICAgICAgICB9XG4gICAgIGFzc2VydF90cnVlKGR1bXBbJiMzOTthY3Rpb24mIzM5O10gPT0gYWN0aW9uX3ZhbFtzY2hlbWUuYWN0aW9uXSwgJiMzOTthY3Rpb24mIzM5OywgZHVtcClcbiAgICAgYXNzZXJ0X3RydWUoZHVtcFsmIzM5O2FwcGx5X2ludGVydmFsX3VzJiMzOTtdID09IHNjaGVtZS4gYXBwbHlfaW50ZXJ2YWxfdXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vc192YV9zcGxpdCYjMzQ7LAogICAgJiMzNDt0YXJnZXRfb3JkZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3Nob3cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBEQU1PTiBhY3Rpb24gYERBTU9TX1NQTElUYCB0byBzcGxpdCBsYXJnZSBmb2xpb3MgZG93biB0byBhIHNwZWNpZmllZCBvcmRlci4gSXQgYWRkcyBzeXNmcyBpbnRlcmZhY2VzIHRvIGNvbmZpZ3VyZSB0aGUgdGFyZ2V0IG9yZGVyIGFuZCBpbXBsZW1lbnRzIHRoZSBzcGxpdHRpbmcgbG9naWMgaW4gYGRhbW9zX3ZhX3NwbGl0YCB1c2luZyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyBhbmQgc3lzZnMgaW50ZXJmYWNlIGhhbmRsZSBlZGdlIGNhc2VzIGNvcnJlY3RseS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2FkZjg4NDQxMTQ5MmUyZDcwMjAwYTFkNGE1YjJhZTU3MWE1NGRiOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDAzOjM4OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vbgppbmRleCA5MDdhNTA0ZmI2NGM1NC4uZWU4ZTI2MGE2MzFjZjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCkBAIC0yNjUsNiAmIzQzOzI2NSwxMyBAQCBDb250YWN0OglTSiBQYXJrICZsdDtzakBrZXJuZWwub3JnJmd0OwogRGVzY3JpcHRpb246CUFjdGlvbiYjMzk7cyB0YXJnZXQgTlVNQSBub2RlIGlkLiAgU3VwcG9ydGVkIGJ5IG9ubHkgcmVsZXZhbnQKIAkJYWN0aW9ucy4KIAomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L3NjaGVtZXMvJmx0O1MmZ3Q7L3RhcmdldF9vcmRlcgomIzQzO0RhdGU6CQlKdWwgMjAyNgomIzQzO0NvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CiYjNDM7RGVzY3JpcHRpb246CVRhcmdldCBmb2xpbyBvcmRlciBmb3IgdGhlIGBgc3BsaXRgYCBhY3Rpb24uICBMYXJnZSBmb2xpb3MgaW4KJiM0MzsJCXRoZSB0YXJnZXQgcmVnaW9uIGFyZSBzcGxpdCBkb3duIHRvIHRoaXMgb3JkZXIuICBWYWxpZCB2YWx1ZXMKJiM0MzsJCWFyZSAwIChvcmRlci0wIGJhc2UgcGFnZXMpIGFuZCAyLi5IUEFHRV9QTURfT1JERVItMS4KJiM0MzsKIFdoYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L3NjaGVtZXMvJmx0O1MmZ3Q7L2FwcGx5X2ludGVydmFsX3VzCiBEYXRlOgkJU2VwIDIwMjMKIENvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKaW5kZXggYWVkNmNiMWNmNDgzMTAuLjg3YTgwMTk1NGIxYjMwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0CkBAIC01NDksNiAmIzQzOzU0OSwxMSBAQCB0aGF0IHN1cHBvcnRzIGVhY2ggYWN0aW9uIGFyZSBhcyBiZWxvdy4KICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW4KICAgIFRSQU5TUEFSRU5UX0hVR0VQQUdFIGlzIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gb2YgdGhlIGFjdGlvbiB3aWxsIGp1c3QKICAgIGZhaWwuCiYjNDM7IC0gYGBzcGxpdGBgOiBTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gZG93biB0byB0aGUgb3JkZXIgc3BlY2lmaWVkCiYjNDM7ICAgYnkgdGhlIHNjaGVtZSYjMzk7cyBgYHRhcmdldF9vcmRlcmBgIChgYDBgYCBmb3Igb3JkZXItMCBiYXNlIHBhZ2VzLCBvcgomIzQzOyAgIGBgMi4uSFBBR0VfUE1EX09SREVSLTFgYCkuICBTdXBwb3J0ZWQgYnkgYGB2YWRkcmBgIGFuZCBgYGZ2YWRkcmBgIG9wZXJhdGlvbnMKJiM0MzsgICBzZXQuIFdoZW4gVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgYWN0aW9uCiYjNDM7ICAgd2lsbCBqdXN0IGZhaWwuCiAgLSBgYGxydV9wcmlvYGA6IFByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLgogICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC4KICAtIGBgbHJ1X2RlcHJpb2BgOiBEZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oCmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTEwLDYgJiM0MzsxMTAsNyBAQCBzdHJ1Y3QgZGFtb25fdGFyZ2V0IHsKICAqIEBEQU1PU19IVUdFUEFHRToJQ2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS4KICAqIEBEQU1PU19OT0hVR0VQQUdFOglDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX05PSFVHRVBBR0UuCiAgKiBAREFNT1NfQ09MTEFQU0U6CUNhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfQ09MTEFQU0UuCiYjNDM7ICogQERBTU9TX1NQTElUOglTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gdG8gYSBzbWFsbGVyIG9yZGVyLgogICogQERBTU9TX0xSVV9QUklPOglQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy4KICAqIEBEQU1PU19MUlVfREVQUklPOglEZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLgogICogQERBTU9TX01JR1JBVEVfSE9UOiAgTWlncmF0ZSB0aGUgcmVnaW9ucyBwcmlvcml0aXppbmcgd2FybWVyIHJlZ2lvbnMuCkBAIC0xMzAsNiAmIzQzOzEzMSw3IEBAIGVudW0gZGFtb3NfYWN0aW9uIHsKIAlEQU1PU19IVUdFUEFHRSwKIAlEQU1PU19OT0hVR0VQQUdFLAogCURBTU9TX0NPTExBUFNFLAomIzQzOwlEQU1PU19TUExJVCwKIAlEQU1PU19MUlVfUFJJTywKIAlEQU1PU19MUlVfREVQUklPLAogCURBTU9TX01JR1JBVEVfSE9ULApAQCAtNTgyLDEwICYjNDM7NTg0LDE1IEBAIHN0cnVjdCBkYW1vcyB7CiAJc3RydWN0IGRhbW9zX3F1b3RhIHF1b3RhOwogCXN0cnVjdCBkYW1vc193YXRlcm1hcmtzIHdtYXJrczsKIAl1bmlvbiB7Ci0JCXN0cnVjdCB7Ci0JCQlpbnQgdGFyZ2V0X25pZDsKLQkJCXN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7Ci0JCX07CiYjNDM7CQlpbnQgdGFyZ2V0X25pZDsKJiM0MzsJCXN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7CiYjNDM7CQkvKgomIzQzOwkJICogQG9yZGVyOiB0YXJnZXQgZm9saW8gb3JkZXIgZm9yIERBTU9TX1NQTElULgomIzQzOwkJICogU3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gdGhpcyBvcmRlci4gIDAgZm9yCiYjNDM7CQkgKiBvcmRlci0wIGJhc2UgcGFnZXMsIDIuLkhQQUdFX1BNRF9PUkRFUi0xIGZvcgomIzQzOwkJICogc21hbGxlciBtVEhQLiAgT3JkZXItMSBpcyByZWplY3RlZC4KJiM0MzsJCSAqLwomIzQzOwkJdW5zaWduZWQgaW50IG9yZGVyOwogCX07CiAJc3RydWN0IGxpc3RfaGVhZCBjb3JlX2ZpbHRlcnM7CiAJc3RydWN0IGxpc3RfaGVhZCBvcHNfZmlsdGVyczsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA4MDZhNjdkMDJhNmU5MC4uMzk0YzYyNDU1YWQ1NmIgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTY5Myw2ICYjNDM7NjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybiwKIAkJcmV0dXJuIE5VTEw7CiAJc2NoZW1lLSZndDtwYXR0ZXJuID0gKnBhdHRlcm47CiAJc2NoZW1lLSZndDthY3Rpb24gPSBhY3Rpb247CiYjNDM7CXNjaGVtZS0mZ3Q7b3JkZXIgPSAwOwogCXNjaGVtZS0mZ3Q7YXBwbHlfaW50ZXJ2YWxfdXMgPSBhcHBseV9pbnRlcnZhbF91czsKIAkvKgogCSAqIG5leHRfYXBwbHlfc2lzIHdpbGwgYmUgc2V0IHdoZW4ga2RhbW9uZCBzdGFydHMuICBXaGlsZSBrZGFtb25kIGlzCkBAIC0xNDQ2LDYgJiM0MzsxNDQ3LDcgQEAgc3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKQogCiAJZHN0LSZndDtwYXR0ZXJuID0gc3JjLSZndDtwYXR0ZXJuOwogCWRzdC0mZ3Q7YWN0aW9uID0gc3JjLSZndDthY3Rpb247CiYjNDM7CWRzdC0mZ3Q7b3JkZXIgPSBzcmMtJmd0O29yZGVyOwogCWRzdC0mZ3Q7YXBwbHlfaW50ZXJ2YWxfdXMgPSBzcmMtJmd0O2FwcGx5X2ludGVydmFsX3VzOwogCiAJZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKCZhbXA7ZHN0LSZndDtxdW90YSwgJmFtcDtzcmMtJmd0O3F1b3RhKTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYwppbmRleCAzMmY0OTVhOTZiMTdhOC4uNzI1ZWQ4MWNjZjZjYWMgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMKQEAgLTQsNyAmIzQzOzQsOSBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21tLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbnVtYS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9odWdlX21tLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7c3lzZnMtY29tbW9uLmgmIzM0OwogCkBAIC0yMjYwLDYgJiM0MzsyMjYyLDcgQEAgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSB7CiAJc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0czsKIAlzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnRyaWVkX3JlZ2lvbnM7CiAJaW50IHRhcmdldF9uaWQ7CiYjNDM7CXVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7CiAJc3RydWN0IGRhbW9zX3N5c2ZzX2Rlc3RzICpkZXN0czsKIH07CiAKQEAgLTIyOTMsNiAmIzQzOzIyOTYsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHsKIAkJLmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLAogCQkubmFtZSA9ICYjMzQ7Y29sbGFwc2UmIzM0OywKIAl9LAomIzQzOwl7CiYjNDM7CQkuYWN0aW9uID0gREFNT1NfU1BMSVQsCiYjNDM7CQkubmFtZSA9ICYjMzQ7c3BsaXQmIzM0OywKJiM0MzsJfSwKIAl7CiAJCS5hY3Rpb24gPSBEQU1PU19MUlVfUFJJTywKIAkJLm5hbWUgPSAmIzM0O2xydV9wcmlvJiMzNDssCkBAIC0yMzI2LDYgJiM0MzsyMzMzLDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9hbGxvYygKIAlzY2hlbWUtJmd0O2FjdGlvbiA9IGFjdGlvbjsKIAlzY2hlbWUtJmd0O2FwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7CiAJc2NoZW1lLSZndDt0YXJnZXRfbmlkID0gTlVNQV9OT19OT0RFOwomIzQzOwlzY2hlbWUtJmd0O3RhcmdldF9vcmRlciA9IDA7CiAJcmV0dXJuIHNjaGVtZTsKIH0KIApAQCAtMjY0NSw2ICYjNDM7MjY1Myw0MCBAQCBzdGF0aWMgc3NpemVfdCB0YXJnZXRfbmlkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogCXJldHVybiBlcnIgPyBlcnIgOiBjb3VudDsKIH0KIAomIzQzO3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLAomIzQzOwkJc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaiwKJiM0MzsJCQlzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCAmIzM0OyV1XG4mIzM0Oywgc2NoZW1lLSZndDt0YXJnZXRfb3JkZXIpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosCiYjNDM7CQlzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosCiYjNDM7CQkJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7CiYjNDM7CXVuc2lnbmVkIGludCB2YWw7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCAmYW1wO3ZhbCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UKJiM0MzsJLyogVmFsaWQgc3BsaXQgdGFyZ2V0czogMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBvciAyLi5IUEFHRV9QTURfT1JERVItMS4gKi8KJiM0MzsJaWYgKHZhbCAhPSAwICZhbXA7JmFtcDsgKHZhbCAmbHQ7IDIgfHwgdmFsICZndDs9IEhQQUdFX1BNRF9PUkRFUikpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsjZWxzZQomIzQzOwlpZiAodmFsICE9IDApCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJc2NoZW1lLSZndDt0YXJnZXRfb3JkZXIgPSB2YWw7CiYjNDM7CXJldHVybiBjb3VudDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iaikKIHsKIAlrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpOwpAQCAtMjY1OSwxMCAmIzQzOzI3MDEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9CiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPQogCQlfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTsKIAomIzQzO3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID0KJiM0MzsJCV9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7CiYjNDM7CiBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX2F0dHJzW10gPSB7CiAJJmFtcDtkYW1vbl9zeXNmc19zY2hlbWVfYWN0aW9uX2F0dHIuYXR0ciwKIAkmYW1wO2RhbW9uX3N5c2ZzX3NjaGVtZV9hcHBseV9pbnRlcnZhbF91c19hdHRyLmF0dHIsCiAJJmFtcDtkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyLmF0dHIsCiYjNDM7CSZhbXA7ZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyLmF0dHIsCiAJTlVMTCwKIH07CiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7CkBAIC0zMDExLDYgJiM0MzszMDU3LDggQEAgc3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKAogCWlmICghc2NoZW1lKQogCQlyZXR1cm4gTlVMTDsKIAomIzQzOwlzY2hlbWUtJmd0O29yZGVyID0gc3lzZnNfc2NoZW1lLSZndDt0YXJnZXRfb3JkZXI7CiYjNDM7CiAJZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy0mZ3Q7Z29hbHMsICZhbXA7c2NoZW1lLSZndDtxdW90YSk7CiAJaWYgKGVycikgewogCQlkYW1vbl9kZXN0cm95X3NjaGVtZShzY2hlbWUpOwpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmMKaW5kZXggZDEwYjgwNDJhZGI1YmEuLmE4NjA3NDQ4NTg0ZDU1IDEwMDY0NAotLS0gYS9tbS9kYW1vbi92YWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmMKQEAgLTYsNiAmIzQzOzYsNyBAQAogI2RlZmluZSBwcl9mbXQoZm10KSAmIzM0O2RhbW9uLXZhOiAmIzM0OyBmbXQKIAogI2luY2x1ZGUgJmx0O2xpbnV4L2hpZ2htZW0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaHVnZV9tbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2h1Z2V0bGIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tbWFuLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW11X25vdGlmaWVyLmgmZ3Q7CkBAIC04OTYsNiAmIzQzOzg5NywxMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKgomIzQzOyAqIGRhbW9zX3ZhX3NwbGl0KCkgLSBTcGxpdCBsYXJnZSBmb2xpb3MgaW4gYSByZWdpb24gZG93biB0byBAdGFyZ2V0X29yZGVyCiYjNDM7ICogdXNpbmcgdGhlIGV4aXN0aW5nIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkuCiYjNDM7ICoKJiM0MzsgKiBMb2NraW5nOiBmb2xpb193YWxrX3N0YXJ0KCkgcmV0dXJucyB0aGUgZm9saW8gd2l0aCB0aGUgcGFnZSB0YWJsZSBsb2NrCiYjNDM7ICogaGVsZC4gIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgbXVzdCBub3QgcnVuIHVuZGVyIHRoZSBwYWdlIHRhYmxlIGxvY2ssCiYjNDM7ICogc28gd2UgcGluIHRoZSBmb2xpbyAocmVmZXJlbmNlICYjNDM7IGxvY2spLCBlbmQgdGhlIHdhbGsgdG8gZHJvcCB0aGUgcGFnZQomIzQzOyAqIHRhYmxlIGxvY2ssIGFuZCBzcGxpdCB3aGlsZSBob2xkaW5nIG9ubHkgbW1hcF9yZWFkX2xvY2suCiYjNDM7ICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSByZXR1cm5zIC1FQlVTWSBmb3IgYSByYWNlZCBvciBwaW5uZWQgZm9saW87CiYjNDM7ICogd2Ugc2tpcCBzdWNoIGZvbGlvcy4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zcGxpdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsCiYjNDM7CQlzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsCiYjNDM7CQl1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtJmd0O29yZGVyOwomIzQzOwl1bnNpZ25lZCBsb25nIGFkZHIgPSBBTElHTl9ET1dOKHItJmd0O2FyLnN0YXJ0LCBQQUdFX1NJWkUpOwomIzQzOwl1bnNpZ25lZCBsb25nIGVuZCA9IHItJmd0O2FyLmVuZDsKJiM0MzsJdW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDsKJiM0MzsJc3RydWN0IG1tX3N0cnVjdCAqbW07CiYjNDM7CiYjNDM7CW1tID0gZGFtb25fZ2V0X21tKHRhcmdldCk7CiYjNDM7CWlmICghbW0pCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJd2hpbGUgKGFkZHIgJmx0OyBlbmQpIHsKJiM0MzsJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwomIzQzOwkJc3RydWN0IGZvbGlvICpmb2xpbzsKJiM0MzsJCXN0cnVjdCBmb2xpb193YWxrIGZ3OwomIzQzOwkJdW5zaWduZWQgbG9uZyBmb2xpb19zeiA9IDA7CiYjNDM7CiYjNDM7CQlpZiAobW1hcF9yZWFkX2xvY2tfa2lsbGFibGUobW0pKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJdm1hID0gdm1hX2xvb2t1cChtbSwgYWRkcik7CiYjNDM7CQlpZiAoIXZtYSkgewomIzQzOwkJCS8qIFNraXAgdGhlIGdhcCB0byB0aGUgbmV4dCBWTUEsIGlmIGFueS4gKi8KJiM0MzsJCQl2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7CiYjNDM7CQkJbW1hcF9yZWFkX3VubG9jayhtbSk7CiYjNDM7CQkJaWYgKCF2bWEgfHwgdm1hLSZndDt2bV9zdGFydCAmZ3Q7PSBlbmQpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWFkZHIgPSB2bWEtJmd0O3ZtX3N0YXJ0OwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogRm9saW9zIGluIHRoZXNlIFZNQXMgYXJlIG5vdCBvdXIgYnVzaW5lc3MuICovCiYjNDM7CQlpZiAodm1hLSZndDt2bV9mbGFncyAmYW1wOyAoVk1fSFVHRVRMQiB8IFZNX01JWEVETUFQKSkgewomIzQzOwkJCWFkZHIgPSB2bWEtJmd0O3ZtX2VuZDsKJiM0MzsJCQltbWFwX3JlYWRfdW5sb2NrKG1tKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWZvbGlvID0gZm9saW9fd2Fsa19zdGFydCgmYW1wO2Z3LCB2bWEsIGFkZHIsIDApOwomIzQzOwkJaWYgKCFmb2xpbykgewomIzQzOwkJCW1tYXBfcmVhZF91bmxvY2sobW0pOwomIzQzOwkJCWFkZHIgJiM0Mzs9IFBBR0VfU0laRTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWZvbGlvX3N6ID0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogRm9yIGZpbGUtYmFja2VkIGZvbGlvcywgQHRhcmdldF9vcmRlciBtYXkgYmUgYmVsb3cgdGhlCiYjNDM7CQkgKiBmaWxlc3lzdGVtJiMzOTtzIG1pbmltdW0gZm9saW8gb3JkZXIgKG1hcHBpbmdfbWluX2ZvbGlvX29yZGVyKCkpLgomIzQzOwkJICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSB3aWxsIHNpbXBseSBmYWlsIGluIHRoYXQgY2FzZSBhbmQKJiM0MzsJCSAqIHdlIHNraXAgdGhlIGZvbGlvLiAgVGhpcyBpcyBhIHNhZmUgbm8tb3A7IGZ1dHVyZSB3b3JrIGNhbgomIzQzOwkJICogYWRqdXN0IHRhcmdldF9vcmRlciB1cHdhcmQgbGlrZSBzcGxpdF9odWdlX3BhZ2VzX2luX3BpZCgpCiYjNDM7CQkgKiBkb2VzIHdoZW4gYSBzcGVjaWZpYyBmaWxlc3lzdGVtIG5lZWRzIGl0LgomIzQzOwkJICovCiYjNDM7CiYjNDM7CQkvKiBIb25vdXIgdGhlIHNjaGVtZSYjMzk7cyBvcGVyYXRpb25zLWxheWVyIGZpbHRlcnMuICovCiYjNDM7CQlpZiAoZGFtb3Nfb3BzX2hhc19maWx0ZXIocykpIHsKJiM0MzsJCQlpZiAoZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLAomIzQzOwkJCQkJZncubGV2ZWwgPT0gRldfTEVWRUxfUFRFID8gZncucHRlcCA6IE5VTEwsCiYjNDM7CQkJCQlmdy5sZXZlbCA9PSBGV19MRVZFTF9QTUQgPyBmdy5wbWRwIDogTlVMTCkpIHsKJiM0MzsJCQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsJCQkJbW1hcF9yZWFkX3VubG9jayhtbSk7CiYjNDM7CQkJCWdvdG8gbmV4dDsKJiM0MzsJCQl9CiYjNDM7CQkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGZvbGlvX3N6OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGZvbGlvX29yZGVyKGZvbGlvKSAmZ3Q7IHRhcmdldF9vcmRlciAmYW1wOyZhbXA7IGZvbGlvX3RyeWxvY2soZm9saW8pKSB7CiYjNDM7CQkJZm9saW9fZ2V0KGZvbGlvKTsKJiM0MzsJCQkvKiBEcm9wIHRoZSBwYWdlIHRhYmxlIGxvY2sgYmVmb3JlIHNwbGl0dGluZy4gKi8KJiM0MzsJCQlmb2xpb193YWxrX2VuZCgmYW1wO2Z3LCB2bWEpOwomIzQzOwomIzQzOwkJCWlmICghc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIHRhcmdldF9vcmRlcikpCiYjNDM7CQkJCWFwcGxpZWQgJiM0Mzs9IGZvbGlvX3N6OwomIzQzOwomIzQzOwkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiYjNDM7CQkJZm9saW9fcHV0KGZvbGlvKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsJCX0KJiM0MzsJCW1tYXBfcmVhZF91bmxvY2sobW0pOwomIzQzO25leHQ6CiYjNDM7CQlhZGRyID0gQUxJR05fRE9XTihhZGRyLCBmb2xpb19zeikgJiM0MzsgZm9saW9fc3o7CiYjNDM7CQljb25kX3Jlc2NoZWQoKTsKJiM0MzsJfQomIzQzOwomIzQzOwltbXB1dChtbSk7CiYjNDM7CXJldHVybiBhcHBsaWVkOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsCiAJCXN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCXN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKQpAQCAtOTI2LDYgJiM0MzsxMDMyLDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKIAkJcmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTsKIAljYXNlIERBTU9TX1NUQVQ6CiAJCXJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7CiYjNDM7CWNhc2UgREFNT1NfU1BMSVQ6CiYjNDM7CQlyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTsKIAlkZWZhdWx0OgogCQkvKgogCQkgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICYjMzk7dmFkZHImIzM5Oy4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGUKaW5kZXggZWNlMjQ0ZTVjNWI5NWMuLmE2MjNjMjcxMzU1ZmZlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZQpAQCAtMTIsNiAmIzQzOzEyLDcgQEAgVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnMuc2gKIFRFU1RfUFJPR1MgJiM0Mzs9IHN5c2ZzLnB5CiBURVNUX1BST0dTICYjNDM7PSBzeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zX3dzc19lc3RpbWF0aW9uLnB5CiBURVNUX1BST0dTICYjNDM7PSBkYW1vc19xdW90YS5weSBkYW1vc19xdW90YV9nb2FsLnB5IGRhbW9zX2FwcGx5X2ludGVydmFsLnB5CiYjNDM7VEVTVF9QUk9HUyAmIzQzOz0gZGFtb3Nfc3BsaXQucHkKIFRFU1RfUFJPR1MgJiM0Mzs9IGRhbW9zX3RyaWVkX3JlZ2lvbnMucHkgZGFtb25fbnJfcmVnaW9ucy5weQogVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnNfcmVmcmVzaC5weQogVEVTVF9QUk9HUyAmIzQzOz0gcmVjbGFpbS5zaCBscnVfc29ydC5zaApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5CmluZGV4IGU2YTIyNjVkNzIxZThiLi41YTAxZjMxYWQ5ZjI2ZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weQpAQCAtNDE5LDYgJiM0Mzs0MTksNyBAQCBjbGFzcyBEYW1vczoKICAgICBmaWx0ZXJzID0gTm9uZQogICAgIGFwcGx5X2ludGVydmFsX3VzID0gTm9uZQogICAgIHRhcmdldF9uaWQgPSBOb25lCiYjNDM7ICAgIHRhcmdldF9vcmRlciA9IE5vbmUKICAgICBkZXN0cyA9IE5vbmUKICAgICBpZHggPSBOb25lCiAgICAgY29udGV4dCA9IE5vbmUKQEAgLTQyOSw3ICYjNDM7NDMwLDcgQEAgY2xhc3MgRGFtb3M6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjdGlvbj0mIzM5O3N0YXQmIzM5OywgYWNjZXNzX3BhdHRlcm49RGFtb3NBY2Nlc3NQYXR0ZXJuKCksCiAgICAgICAgICAgICAgICAgIHF1b3RhPURhbW9zUXVvdGEoKSwgd2F0ZXJtYXJrcz1EYW1vc1dhdGVybWFya3MoKSwKICAgICAgICAgICAgICAgICAgY29yZV9maWx0ZXJzPVtdLCBvcHNfZmlsdGVycz1bXSwgZmlsdGVycz1bXSwgdGFyZ2V0X25pZD0wLAotICAgICAgICAgICAgICAgICBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOgomIzQzOyAgICAgICAgICAgICAgICAgdGFyZ2V0X29yZGVyPTAsIGRlc3RzPURhbW9zRGVzdHMoKSwgYXBwbHlfaW50ZXJ2YWxfdXM9MCk6CiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uCiAgICAgICAgIHNlbGYuYWNjZXNzX3BhdHRlcm4gPSBhY2Nlc3NfcGF0dGVybgogICAgICAgICBzZWxmLmFjY2Vzc19wYXR0ZXJuLnNjaGVtZSA9IHNlbGYKQEAgLTQ0OCw2ICYjNDM7NDQ5LDcgQEAgY2xhc3MgRGFtb3M6CiAgICAgICAgIHNlbGYuZmlsdGVycy5zY2hlbWUgPSBzZWxmCiAKICAgICAgICAgc2VsZi50YXJnZXRfbmlkID0gdGFyZ2V0X25pZAomIzQzOyAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIgPSB0YXJnZXRfb3JkZXIKICAgICAgICAgc2VsZi5kZXN0cyA9IGRlc3RzCiAgICAgICAgIHNlbGYuZGVzdHMuc2NoZW1lID0gc2VsZgogCkBAIC00OTIsNiAmIzQzOzQ5NCwxMSBAQCBjbGFzcyBEYW1vczoKICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVycgogCiYjNDM7ICAgICAgICBlcnIgPSB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN5c2ZzX2RpcigpLCAmIzM5O3RhcmdldF9vcmRlciYjMzk7KSwgJiMzOTslZCYjMzk7ICUKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIpCiYjNDM7ICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6CiYjNDM7ICAgICAgICAgICAgcmV0dXJuIGVycgomIzQzOwogICAgICAgICBlcnIgPSBzZWxmLmRlc3RzLnN0YWdlKCkKICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVycgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vZGFtb3Nfc3BsaXQucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uMDg5ZmJlMGYwZDRkM2IKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weQpAQCAtMCwwICYjNDM7MSwxMjUgQEAKJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIEZ1bmN0aW9uYWwgdGVzdCBmb3IgdGhlIERBTU9TX1NQTElUIGFjdGlvbi4KJiM0MzsjCiYjNDM7IyBBIGNoaWxkIHByb2Nlc3MgYWxsb2NhdGVzIGEgTUFEVl9IVUdFUEFHRS1iYWNrZWQgYW5vbnltb3VzIHJlZ2lvbiBhbmQKJiM0MzsjIGZhdWx0cyBpdCBpbiBzbyB0aGF0IGl0IGlzIGJhY2tlZCBieSAobSlUSFBzLiAgVGhlIHBhcmVudCB0aGVuIHJ1bnMgYQomIzQzOyMgREFNT04vREFNT1Mgc2NoZW1lIHdpdGggYWN0aW9uICYjMzk7c3BsaXQmIzM5OyBhbmQgdGFyZ2V0X29yZGVyIDAgYWdhaW5zdCB0aGUKJiM0MzsjIGNoaWxkIGFuZCBjaGVja3MgdGhhdCB0aGUgaHVnZSBwYWdlcyBhcmUgc3BsaXQgaW50byBiYXNlIHBhZ2VzLCBpLmUuIHRoZQomIzQzOyMgY2hpbGQmIzM5O3MgQW5vbkh1Z2VQYWdlcyAoYXMgcmVwb3J0ZWQgYnkgL3Byb2MvJmx0O3BpZCZndDsvc21hcHMpIGRyb3BzLgomIzQzOwomIzQzO2ltcG9ydCBjdHlwZXMKJiM0MztpbXBvcnQgb3MKJiM0MztpbXBvcnQgc2lnbmFsCiYjNDM7aW1wb3J0IHN5cwomIzQzO2ltcG9ydCB0aW1lCiYjNDM7CiYjNDM7aW1wb3J0IF9kYW1vbl9zeXNmcwomIzQzOwomIzQzO1BNRF9TSVpFID0gMiAqIDEwMjQgKiAxMDI0CiYjNDM7TUFEVl9IVUdFUEFHRSA9IDE0CiYjNDM7UFJPVF9SRUFEX1dSSVRFID0gMHgxIHwgMHgyCiYjNDM7TUFQX1BSSVZBVEVfQU5PTiA9IDB4MiB8IDB4MjAKJiM0MztSRUdJT05fU0laRSA9IDMyICogUE1EX1NJWkUKJiM0MzsKJiM0MztkZWYgY2hpbGRfd29ya2xvYWQoKToKJiM0MzsgICAgJiMzOTsmIzM5OyYjMzk7QWxsb2NhdGUgYSBQTUQtYWxpZ25lZCwgVEhQLWJhY2tlZCByZWdpb24sIGZhdWx0IGl0IGluLCB0aGVuIGlkbGUuJiMzOTsmIzM5OyYjMzk7CiYjNDM7ICAgIGxpYmMgPSBjdHlwZXMuQ0RMTCgmIzM5O2xpYmMuc28uNiYjMzk7LCB1c2VfZXJybm89VHJ1ZSkKJiM0MzsgICAgbGliYy5tbWFwLnJlc3R5cGUgPSBjdHlwZXMuY192b2lkX3AKJiM0MzsgICAgbGliYy5tbWFwLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3ZvaWRfcCwgY3R5cGVzLmNfc2l6ZV90LCBjdHlwZXMuY19pbnQsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfbG9uZ10KJiM0MzsgICAgbGliYy5tYWR2aXNlLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3ZvaWRfcCwgY3R5cGVzLmNfc2l6ZV90LCBjdHlwZXMuY19pbnRdCiYjNDM7CiYjNDM7ICAgICMgT3Zlci1hbGxvY2F0ZSBzbyB0aGF0IGEgUE1ELWFsaWduZWQgd2luZG93IGlzIGF2YWlsYWJsZS4KJiM0MzsgICAgcmF3ID0gbGliYy5tbWFwKE5vbmUsIFJFR0lPTl9TSVpFICYjNDM7IFBNRF9TSVpFLCBQUk9UX1JFQURfV1JJVEUsCiYjNDM7ICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURV9BTk9OLCAtMSwgMCkKJiM0MzsgICAgaWYgcmF3IGlzIE5vbmUgb3IgcmF3ID09IGN0eXBlcy5jX3ZvaWRfcCgtMSkudmFsdWU6CiYjNDM7ICAgICAgICBvcy5fZXhpdCgyKQomIzQzOyAgICBiYXNlID0gKHJhdyAmIzQzOyBQTURfU0laRSAtIDEpICZhbXA7IH4oUE1EX1NJWkUgLSAxKQomIzQzOyAgICBsaWJjLm1hZHZpc2UoY3R5cGVzLmNfdm9pZF9wKGJhc2UpLCBSRUdJT05fU0laRSwgTUFEVl9IVUdFUEFHRSkKJiM0MzsKJiM0MzsgICAgYnVmID0gKGN0eXBlcy5jX2NoYXIgKiBSRUdJT05fU0laRSkuZnJvbV9hZGRyZXNzKGJhc2UpCiYjNDM7ICAgIGZvciBvZmYgaW4gcmFuZ2UoMCwgUkVHSU9OX1NJWkUsIDQwOTYpOgomIzQzOyAgICAgICAgYnVmW29mZl0gPSAxCiYjNDM7CiYjNDM7ICAgICMgUmVhZHk7IGlkbGUgdW50aWwgdGhlIHBhcmVudCB0ZWFycyB1cyBkb3duLgomIzQzOyAgICBzaWduYWwucGF1c2UoKQomIzQzOwomIzQzO2RlZiBhbm9uX2h1Z2Vfa2IocGlkKToKJiM0MzsgICAgdG90YWwgPSAwCiYjNDM7ICAgIHRyeToKJiM0MzsgICAgICAgIHdpdGggb3BlbigmIzM5Oy9wcm9jLyVkL3NtYXBzJiMzOTsgJSBwaWQpIGFzIGY6CiYjNDM7ICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKJiM0MzsgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCYjMzk7QW5vbkh1Z2VQYWdlczomIzM5Oyk6CiYjNDM7ICAgICAgICAgICAgICAgICAgICB0b3RhbCAmIzQzOz0gaW50KGxpbmUuc3BsaXQoKVsxXSkKJiM0MzsgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgomIzQzOyAgICAgICAgcmV0dXJuIC0xCiYjNDM7ICAgIHJldHVybiB0b3RhbAomIzQzOwomIzQzO2RlZiBtYWluKCk6CiYjNDM7ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygmIzM5Oy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2VuYWJsZWQmIzM5Oyk6CiYjNDM7ICAgICAgICBwcmludCgmIzM5O1NLSVA6IHRyYW5zcGFyZW50IGh1Z2VwYWdlIGlzIG5vdCBhdmFpbGFibGUmIzM5OykKJiM0MzsgICAgICAgIGV4aXQoMCkKJiM0MzsKJiM0MzsgICAgcGlkID0gb3MuZm9yaygpCiYjNDM7ICAgIGlmIHBpZCA9PSAwOgomIzQzOyAgICAgICAgY2hpbGRfd29ya2xvYWQoKQomIzQzOyAgICAgICAgb3MuX2V4aXQoMCkKJiM0MzsKJiM0MzsgICAgdHJ5OgomIzQzOyAgICAgICAgIyBHaXZlIHRoZSBjaGlsZCB0aW1lIHRvIGZhdWx0IGluIGl0cyBodWdlIHBhZ2VzLgomIzQzOyAgICAgICAgdGltZS5zbGVlcCgyKQomIzQzOyAgICAgICAgYmVmb3JlID0gYW5vbl9odWdlX2tiKHBpZCkKJiM0MzsgICAgICAgIGlmIGJlZm9yZSAmbHQ7PSAwOgomIzQzOyAgICAgICAgICAgIHByaW50KCYjMzk7U0tJUDogd29ya2xvYWQgZGlkIG5vdCBnZXQgYW55IFRIUCAoQW5vbkh1Z2VQYWdlcz0lZCkmIzM5OwomIzQzOyAgICAgICAgICAgICAgICAgICUgYmVmb3JlKQomIzQzOyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKJiM0MzsgICAgICAgICAgICBleGl0KDApCiYjNDM7CiYjNDM7ICAgICAgICAjIFNwbGl0IGV2ZXJ5IGxhcmdlIGZvbGlvIGluIHRoZSB0YXJnZXQgZG93biB0byBvcmRlci0wIGJhc2UgcGFnZXMuCiYjNDM7ICAgICAgICBrZGFtb25kcyA9IF9kYW1vbl9zeXNmcy5LZGFtb25kcyhbX2RhbW9uX3N5c2ZzLktkYW1vbmQoCiYjNDM7ICAgICAgICAgICAgY29udGV4dHM9W19kYW1vbl9zeXNmcy5EYW1vbkN0eCgKJiM0MzsgICAgICAgICAgICAgICAgb3BzPSYjMzk7dmFkZHImIzM5OywKJiM0MzsgICAgICAgICAgICAgICAgdGFyZ2V0cz1bX2RhbW9uX3N5c2ZzLkRhbW9uVGFyZ2V0KHBpZD1waWQpXSwKJiM0MzsgICAgICAgICAgICAgICAgc2NoZW1lcz1bX2RhbW9uX3N5c2ZzLkRhbW9zKAomIzQzOyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSYjMzk7c3BsaXQmIzM5OywKJiM0MzsgICAgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLAomIzQzOyAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBldmVyeSByZWdpb24gcmVnYXJkbGVzcyBvZiBhY2Nlc3MvYWdlL3NpemUsIHNvCiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIHRoZSBBUk02NCBzdGFsZS1UTEIgYmxpbmQgc3BvdCBjYW5ub3QgbWFzayB0aGUgdGFyZ2V0CiYjNDM7ICAgICAgICAgICAgICAgICAgICBhY2Nlc3NfcGF0dGVybj1fZGFtb25fc3lzZnMuRGFtb3NBY2Nlc3NQYXR0ZXJuKAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9WzAsIDIqKjY0IC0gMV0sCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgbnJfYWNjZXNzZXM9WzAsIDIqKjY0IC0gMV0sCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgYWdlPVswLCAyKio2NCAtIDFdKSwKJiM0MzsgICAgICAgICAgICAgICAgICAgIGFwcGx5X2ludGVydmFsX3VzPTApXSldKV0pCiYjNDM7ICAgICAgICBlcnIgPSBrZGFtb25kcy5zdGFydCgpCiYjNDM7ICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6CiYjNDM7ICAgICAgICAgICAgcHJpbnQoJiMzOTtrZGFtb25kcyBzdGFydCBmYWlsZWQ6ICVzJiMzOTsgJSBlcnIpCiYjNDM7ICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKQomIzQzOyAgICAgICAgICAgIGV4aXQoMSkKJiM0MzsKJiM0MzsgICAgICAgICMgTGV0IHRoZSBzY2hlbWUgZmluZCBhbmQgc3BsaXQgdGhlIHJlZ2lvbnMuCiYjNDM7ICAgICAgICBhZnRlciA9IGJlZm9yZQomIzQzOyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoNTApOgomIzQzOyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yKQomIzQzOyAgICAgICAgICAgIGFmdGVyID0gYW5vbl9odWdlX2tiKHBpZCkKJiM0MzsgICAgICAgICAgICBpZiBhZnRlciA9PSAwOgomIzQzOyAgICAgICAgICAgICAgICBicmVhawomIzQzOwomIzQzOyAgICAgICAga2RhbW9uZHMuc3RvcCgpCiYjNDM7ICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiYjNDM7CiYjNDM7ICAgICAgICBpZiBhZnRlciAmZ3Q7PSBiZWZvcmU6CiYjNDM7ICAgICAgICAgICAgcHJpbnQoJiMzOTtGQUlMOiBBbm9uSHVnZVBhZ2VzIGRpZCBub3Qgc2hyaW5rOiBiZWZvcmU9JWQgS2lCICYjMzk7CiYjNDM7ICAgICAgICAgICAgICAgICAgJiMzOTthZnRlcj0lZCBLaUImIzM5OyAlIChiZWZvcmUsIGFmdGVyKSkKJiM0MzsgICAgICAgICAgICBleGl0KDEpCiYjNDM7ICAgICAgICBwcmludCgmIzM5O1BBU1M6IEFub25IdWdlUGFnZXMgJWQgS2lCIC0mZ3Q7ICVkIEtpQiBhZnRlciBEQU1PU19TUExJVCYjMzk7CiYjNDM7ICAgICAgICAgICAgICAlIChiZWZvcmUsIGFmdGVyKSkKJiM0MzsgICAgZmluYWxseToKJiM0MzsgICAgICAgIHRyeToKJiM0MzsgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiYjNDM7ICAgICAgICBleGNlcHQgUHJvY2Vzc0xvb2t1cEVycm9yOgomIzQzOyAgICAgICAgICAgIHBhc3MKJiM0MzsKJiM0MztpZiBfX25hbWVfXyA9PSAmIzM5O19fbWFpbl9fJiMzOTs6CiYjNDM7ICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weQppbmRleCAzZmZhMDU0YjYzODY3ZC4uNDlkM2MzMTlkZmQ4OTggMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5CkBAIC0xMzEsMTEgJiM0MzsxMzEsMTIgQEAgZGVmIGFzc2VydF9zY2hlbWVfY29tbWl0dGVkKHNjaGVtZSwgZHVtcCk6CiAgICAgICAgICAgICAmIzM5O2h1Z2VwYWdlJiMzOTs6IDMsCiAgICAgICAgICAgICAmIzM5O25vaHVnZXBhZ2UmIzM5OzogNCwKICAgICAgICAgICAgICYjMzk7Y29sbGFwc2UmIzM5OzogNSwKLSAgICAgICAgICAgICYjMzk7bHJ1X3ByaW8mIzM5OzogNiwKLSAgICAgICAgICAgICYjMzk7bHJ1X2RlcHJpbyYjMzk7OiA3LAotICAgICAgICAgICAgJiMzOTttaWdyYXRlX2hvdCYjMzk7OiA4LAotICAgICAgICAgICAgJiMzOTttaWdyYXRlX2NvbGQmIzM5OzogOSwKLSAgICAgICAgICAgICYjMzk7c3RhdCYjMzk7OiAxMCwKJiM0MzsgICAgICAgICAgICAmIzM5O3NwbGl0JiMzOTs6IDYsCiYjNDM7ICAgICAgICAgICAgJiMzOTtscnVfcHJpbyYjMzk7OiA3LAomIzQzOyAgICAgICAgICAgICYjMzk7bHJ1X2RlcHJpbyYjMzk7OiA4LAomIzQzOyAgICAgICAgICAgICYjMzk7bWlncmF0ZV9ob3QmIzM5OzogOSwKJiM0MzsgICAgICAgICAgICAmIzM5O21pZ3JhdGVfY29sZCYjMzk7OiAxMCwKJiM0MzsgICAgICAgICAgICAmIzM5O3N0YXQmIzM5OzogMTEsCiAgICAgICAgICAgICB9CiAgICAgYXNzZXJ0X3RydWUoZHVtcFsmIzM5O2FjdGlvbiYjMzk7XSA9PSBhY3Rpb25fdmFsW3NjaGVtZS5hY3Rpb25dLCAmIzM5O2FjdGlvbiYjMzk7LCBkdW1wKQogICAgIGFzc2VydF90cnVlKGR1bXBbJiMzOTthcHBseV9pbnRlcnZhbF91cyYjMzk7XSA9PSBzY2hlbWUuIGFwcGx5X2ludGVydmFsX3VzLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzY5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFNwbGl0IEFjdGlvbjogRm9jdXNlZCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgdGhpcyBuZXcgcGF0Y2ggc2VyaWVzIGludHJvZHVjaW5nIGEgYERBTU9TX1NQTElUYCBhY3Rpb24gZm9yIERBTU9OLiBJdCBzb3VuZHMgbGlrZSB0aGlzIGlzIGdvaW5nIHRvIGJlIHNwbGl0dGluZyBsYXJnZSBmb2xpb3MgZG93biB0byBhIGRlZmluZWQgb3JkZXIsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhpcy4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNjb3BlLiBUaGUgcGF0Y2ggdG91Y2hlcyBkb2N1bWVudGF0aW9uLCBgZGFtb24uaGAsIGNvcmUgREFNT04gZmlsZXMsIHN5c2ZzIGludGVyYWN0aW9uLCB2aXJ0dWFsIGFkZHJlc3MgaGFuZGxpbmcsIGFuZCBzZWxmdGVzdHMuIFNlZW1zIHByZXR0eSBzcHJlYWQgb3V0LgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGBtbS9kYW1vbi92YWRkci5jYCBmaWxlOyBzcGVjaWZpY2FsbHksIHRoZSBuZXcgYGRhbW9zX3ZhX3NwbGl0YCBmdW5jdGlvbiB3aGljaCBwcmVzdW1hYmx5IGlzIHRoZSBjb3JlIG9mIHRoaXMuIEl0IGxvb2tzIGxpa2UgaXQgdXNlcyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIC0gdGhpcyB3aWxsIG5lZWQgdG8gYmUgd2VsbC1mdXp6ZWQuCgpJJiMzOTttIHRoaW5raW5nIHRoZSBrZXkgYXJlYXMgdG8gYW5hbHl6ZSB3aWxsIGJlIGBkYW1vc192YV9zcGxpdGAsIHRoZW4gdGhlIHN5c2ZzIGludGVyZmFjZSBoYW5kbGVycyBmb3IgdGhlIHNwbGl0IGZ1bmN0aW9uYWxpdHk6IGB0YXJnZXRfb3JkZXJfc3RvcmVgIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLgoKQ29uZmlndXJhdGlvbiBpcyBrZXkgaGVyZS4gREFNT04gaXRzZWxmIGlzIGVuYWJsZWQgYnkgYENPTkZJR19EQU1PTmAsIHRoZSBzeXNmcyBpbnRlcmZhY2UgYnkgYENPTkZJR19EQU1PTl9TWVNGU2AsIGFuZCB0aGUgdmlydHVhbCBhZGRyZXNzIG9wZXJhdGlvbnMgYnkgYENPTkZJR19EQU1PTl9WQUREUmAuICBJIGFsc28gbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIGludGVyYWN0cyB3aXRoIHRyYW5zcGFyZW50IGh1Z2VwYWdlcywgc28gSSBzaG91bGQgbG9vayBpbiBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYC4KCkFoYSEgTG9va3MgbGlrZSBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LiBUaGUgY29kZSBjaGVja3MgZm9yIGl0LiBTbyB0aGlzIGlzIGEgcGFyYW1ldGVyIG9mIHRoZSBzcGxpdCBvcGVyYXRpb24gaXRzZWxmOiBgdmFsYCBjYW4gYmUgMCBvciBiZXR3ZWVuIDIgYW5kIGBIUEFHRV9QTURfT1JERVItMWAgaWYgaHVnZXBhZ2VzIGFyZSBlbmFibGVkLiBJZiBub3QsIG9ubHkgMCBpcyBhbGxvd2VkLgoKUmlnaHQsIEkmIzM5O2xsIG5lZWQgdG8gcnVuIGEgYGdpdCBncmVwYCBvbiB0aGlzIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlncyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlIGZ1enplciYjMzk7cyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEQU1PTl9TWVNGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdD0zNz1zeXNmcyBJbnRlcmZhY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zOS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0OjQwOkRBTU9OIHN5c2ZzIGludGVyZmFjZSBpcyBidWlsdCB3aGVuIGBgQ09ORklHX0RBTU9OX1NZU0ZTYGAgaXMgZGVmaW5lZC4gIEl0XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC00MS1jcmVhdGVzIG11bHRpcGxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyB1bmRlciBpdHMgc3lzZnMgZGlyZWN0b3J5LFxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdD0zNT1zeXNmc+aOpeWPo1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0LTM2LT09PT09PT09PVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0OjM3OkRBTU9O55qEc3lzZnPmjqXlj6PmmK/lnKjlrprkuYkgYGBDT05GSUdfREFNT05fU1lTRlNgYCDml7blu7rnq4vnmoTjgILlroPlnKjlhbZzeXNmc+ebruW9leS4i+WIm+W7uuWkmlxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0LTM4LeS4quebruW9leWSjOaWh+S7tu+8jCBgYFx1MDAzY3N5c2ZzXHUwMDNlL2tlcm5lbC9tbS9kYW1vbi9gYCDjgILkvaDlj6/ku6XpgJrov4flr7nor6Xnm67lvZXkuIvnmoTmlofku7bov5vooYzlhpnlhaXlkoxcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3Q9MzU9c3lzZnPmjqXlj6NcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zNi09PT09PT09PT1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdDozNzpEQU1PTueahHN5c2Zz5o6l5Y+j5piv5Zyo5a6a576pIGBgQ09ORklHX0RBTU9OX1NZU0ZTYGAg5pmC5bu656uL55qE44CC5a6D5Zyo5YW2c3lzZnPnm67pjITkuIvlibXlu7rlpJpcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zOC3lgIvnm67pjITlkozmlofku7bvvIwgYGBcdTAwM2NzeXNmc1x1MDAzZS9rZXJuZWwvbW0vZGFtb24vYGAg44CC5L2g5Y+v5Lul6YCa6YGO5bCN6Kmy55uu6YyE5LiL55qE5paH5Lu26YCy6KGM5a+r5YWl5ZKMXG4tLVxubW0vZGFtb24vS2NvbmZpZz01Nj1jb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnOjc4Olx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxubW0vZGFtb24vS2NvbmZpZy03OS1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vTWFrZWZpbGU9NT1vYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbm1tL2RhbW9uL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVx0JiM0Mzs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXG5tbS9kYW1vbi9NYWtlZmlsZS03LW9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXG4tLVxubW0vZGFtb24vc3lzZnMuYz0xODI5PWVudW0gZGFtb25fc3lzZnNfY21kIHtcbm1tL2RhbW9uL3N5c2ZzLmM6MTgzMDpcdC8qIEBEQU1PTl9TWVNGU19DTURfT046IFR1cm4gdGhlIGtkYW1vbmQgb24uICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzE6XHREQU1PTl9TWVNGU19DTURfT04sXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzI6XHQvKiBAREFNT05fU1lTRlNfQ01EX09GRjogVHVybiB0aGUga2RhbW9uZCBvZmYuICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzM6XHREQU1PTl9TWVNGU19DTURfT0ZGLFxubW0vZGFtb24vc3lzZnMuYzoxODM0Olx0LyogQERBTU9OX1NZU0ZTX0NNRF9DT01NSVQ6IFVwZGF0ZSBrZGFtb25kIGlucHV0cy4gKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTgzNTpcdERBTU9OX1NZU0ZTX0NNRF9DT01NSVQsXG5tbS9kYW1vbi9zeXNmcy5jLTE4MzYtXHQvKlxubW0vZGFtb24vc3lzZnMuYzoxODM3Olx0ICogQERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzogQ29tbWl0IHRoZSBxdW90YSBnb2Fsc1xubW0vZGFtb24vc3lzZnMuYy0xODM4LVx0ICogdG8gREFNT04uXG5tbS9kYW1vbi9zeXNmcy5jLTE4MzktXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg0MDpcdERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg0MS1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4NDI6XHQgKiBAREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1NUQVRTOiBVcGRhdGUgc2NoZW1lIHN0YXRzIHN5c2ZzXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDMtXHQgKiBmaWxlcy5cbm1tL2RhbW9uL3N5c2ZzLmMtMTg0NC1cdCAqL1xubW0vZGFtb24vc3lzZnMuYzoxODQ1Olx0REFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1NUQVRTLFxubW0vZGFtb24vc3lzZnMuYy0xODQ2LVx0Lypcbm1tL2RhbW9uL3N5c2ZzLmM6MTg0NzpcdCAqIEBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfVFJJRURfQllURVM6IFVwZGF0ZVxubW0vZGFtb24vc3lzZnMuYy0xODQ4LVx0ICogdHJpZWRfcmVnaW9ucy90b3RhbF9ieXRlcyBzeXNmcyBmaWxlcyBmb3IgZWFjaCBzY2hlbWUuXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDktXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg1MDpcdERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg1MS1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4NTI6XHQgKiBAREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6IFVwZGF0ZSBzY2hlbWVzIHRyaWVkXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTMtXHQgKiByZWdpb25zXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTQtXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg1NTpcdERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9SRUdJT05TLFxubW0vZGFtb24vc3lzZnMuYy0xODU2LVx0Lypcbm1tL2RhbW9uL3N5c2ZzLmM6MTg1NzpcdCAqIEBEQU1PTl9TWVNGU19DTURfQ0xFQVJfU0NIRU1FU19UUklFRF9SRUdJT05TOiBDbGVhciBzY2hlbWVzIHRyaWVkXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTgtXHQgKiByZWdpb25zXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTktXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg2MDpcdERBTU9OX1NZU0ZTX0NNRF9DTEVBUl9TQ0hFTUVTX1RSSUVEX1JFR0lPTlMsXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjEtXHQvKlxubW0vZGFtb24vc3lzZnMuYzoxODYyOlx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOiBVcGRhdGUgdGhlXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjMtXHQgKiBlZmZlY3RpdmUgc2l6ZSBxdW90YSBvZiB0aGUgc2NoZW1lIGluIGJ5dGVzLlxubW0vZGFtb24vc3lzZnMuYy0xODY0LVx0ICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4NjU6XHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg2Ni1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4Njc6XHQgKiBAREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6IFVwZGF0ZSB0aGUgdHVuZWQgbW9uaXRvcmluZ1xubW0vZGFtb24vc3lzZnMuYy0xODY4LVx0ICogaW50ZXJ2YWxzLlxubW0vZGFtb24vc3lzZnMuYy0xODY5LVx0ICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzA6XHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1RVTkVEX0lOVEVSVkFMUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg3MS1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzI6XHQgKiBATlJfREFNT05fU1lTRlNfQ01EUzogVG90YWwgbnVtYmVyIG9mIERBTU9OIHN5c2ZzIGNvbW1hbmRzLlxubW0vZGFtb24vc3lzZnMuYy0xODczLVx0ICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzQ6XHROUl9EQU1PTl9TWVNGU19DTURTLFxubW0vZGFtb24vc3lzZnMuYy0xODc1LX07XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xODkxPXN0YXRpYyBzc2l6ZV90IHN0YXRlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE5MDgtXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzXFxuXCYjMzQ7LCBydW5uaW5nID9cbm1tL2RhbW9uL3N5c2ZzLmM6MTkwOTpcdFx0XHRkYW1vbl9zeXNmc19jbWRfc3Ryc1tEQU1PTl9TWVNGU19DTURfT05dIDpcbm1tL2RhbW9uL3N5c2ZzLmM6MTkxMDpcdFx0XHRkYW1vbl9zeXNmc19jbWRfc3Ryc1tEQU1PTl9TWVNGU19DTURfT0ZGXSk7XG5tbS9kYW1vbi9zeXNmcy5jLTE5MTEtfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjM2Mj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM2NC17XG5tbS9kYW1vbi9zeXNmcy5jOjIzNjU6XHRpZiAoY21kICE9IERBTU9OX1NZU0ZTX0NNRF9PRkYgXHUwMDI2XHUwMDI2IGtkYW1vbmQtXHUwMDNlY29udGV4dHMtXHUwMDNlbnIgIT0gMSlcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2Ni1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzY4LVx0c3dpdGNoIChjbWQpIHtcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2OTpcdGNhc2UgREFNT05fU1lTRlNfQ01EX09OOlxubW0vZGFtb24vc3lzZnMuYy0yMzcwLVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihrZGFtb25kKTtcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MTpcdGNhc2UgREFNT05fU1lTRlNfQ01EX09GRjpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Mi1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYzoyMzczOlx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUOlxubW0vZGFtb24vc3lzZnMuYy0yMzc0LVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3NS1cdFx0XHRcdGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCwga2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzNzY6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Ny1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzc5LVx0XHRcdFx0a2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODA6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19TVEFUUzpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4MS1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzODItXHRcdFx0XHRkYW1vbl9zeXNmc191cGRfc2NoZW1lc19zdGF0cywga2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODM6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUzpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4NC1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoa2RhbW9uZCwgdHJ1ZSk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODU6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9SRUdJT05TOlxubW0vZGFtb24vc3lzZnMuYy0yMzg2LVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfdXBkYXRlX3NjaGVtZXNfdHJpZWRfcmVnaW9ucyhrZGFtb25kLCBmYWxzZSk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODc6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DTEVBUl9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6XG5tbS9kYW1vbi9zeXNmcy5jLTIzODgtXHRcdHJldHVybiBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG5tbS9kYW1vbi9zeXNmcy5jLTIzODktXHRcdFx0a2RhbW9uZC1cdTAwM2Vjb250ZXh0cy1cdTAwM2Vjb250ZXh0c19hcnJbMF0tXHUwMDNlc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzOTA6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOlxubW0vZGFtb24vc3lzZnMuYy0yMzkxLVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzOTMtXHRcdFx0XHRrZGFtb25kKTtcbm1tL2RhbW9uL3N5c2ZzLmM6MjM5NDpcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6XG5tbS9kYW1vbi9zeXNmcy5jLTIzOTUtXHRcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjQwMj1zdGF0aWMgc3NpemVfdCBzdGF0ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjQxMS1cdFx0cmV0dXJuIC1FQlVTWTtcbm1tL2RhbW9uL3N5c2ZzLmM6MjQxMjpcdGZvciAoY21kID0gMDsgY21kIFx1MDAzYyBOUl9EQU1PTl9TWVNGU19DTURTOyBjbWQmIzQzOyYjNDM7KSB7XG5tbS9kYW1vbi9zeXNmcy5jLTI0MTMtXHRcdGlmIChzeXNmc19zdHJlcShidWYsIGRhbW9uX3N5c2ZzX2NtZF9zdHJzW2NtZF0pKSB7XG4tLVxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnPTEzPUNPTkZJR19TWVNGUz15XG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWc6MTQ6Q09ORklHX0RBTU9OX1NZU0ZTPXlcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZzoxNTpDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVD15XG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWctMTYtXG4tLVxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC01LVxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC03LVxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1NZU0ZTX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo5OiNkZWZpbmUgX0RBTU9OX1NZU0ZTX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMC1cbi0tXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oPTEwNj1rdW5pdF90ZXN0X3N1aXRlKGRhbW9uX3N5c2ZzX3Rlc3Rfc3VpdGUpO1xubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMDctXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjEwODojZW5kaWYgLyogX0RBTU9OX1NZU0ZTX1RFU1RfSCAqL1xubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMDktXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjExMDojZW5kaWYgLyogQ09ORklHX0RBTU9OX1NZU0ZTX0tVTklUX1RFU1QgKi9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9MT1DT05GSUdfREFNT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnOjI6Q09ORklHX0RBTU9OX1NZU0ZTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZy0zLUNPTkZJR19EQU1PTl9QQUREUj15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NzUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQ29uZmlnIENoZWNrcyBhbmQgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBzZXQgb2YgY29uZmlndXJhdGlvbnMg4oCTIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBTZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIHNldCBvZiBEQU1PTi1yZWxhdGVkIGZlYXR1cmVzLiBCZWZvcmUgSSBnbyB0b28gZmFyLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgYERBTU9OX1ZBRERSYCBpcyBhY3R1YWxseSBhIHZhbGlkIGNvbmZpZyBvcHRpb24uIEdvdHRhIHZlcmlmeSB0aGVzZSB0aGluZ3MsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29tcGxleCBkZXBlbmRlbmNpZXMuIEEgcXVpY2sgc2FuaXR5IGNoZWNrIG5vdyBjYW4gc2F2ZSBhIGxvdCBvZiBoZWFkYWNoZXMgbGF0ZXIgb24gZG93biB0aGUgbGluZS4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gd2FzdGUgdGltZSBkb3duIGEgcmFiYml0IGhvbGUgZm9yIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IGV4aXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OX1ZBRERSJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9MjY9Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWc9NDc9Y29uZmlnIERBTU9OX1BBRERSXG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNTktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL01ha2VmaWxlPTM9b2JqLXlcdFx0XHRcdDo9IGNvcmUub1xubW0vZGFtb24vTWFrZWZpbGU6NDpvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbm1tL2RhbW9uL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVx0JiM0Mzs9IG9wcy1jb21tb24ubyBwYWRkci5vXG4tLVxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnPTg9Q09ORklHX1BBR0VfSURMRV9GTEFHPXlcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZzo5OkNPTkZJR19EQU1PTl9WQUREUj15XG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWc6MTA6Q09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1Q9eVxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnLTExLVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD00MDM9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDExLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQxMjpcdC8qIERBTU9OX09QU19WQUREUiBpcyByZWdpc3RlcmVkIG9ubHkgaWYgQ09ORklHX0RBTU9OX1ZBRERSIGlzIHNldCAqL1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQxMy1cdGlmICghZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoREFNT05fT1BTX1ZBRERSKSkge1xuLS1cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtNS1cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtNy1cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6ODojaWZuZGVmIF9EQU1PTl9WQUREUl9URVNUX0hcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6OTojZGVmaW5lIF9EQU1PTl9WQUREUl9URVNUX0hcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMTAtXG4tLVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaD0yNzc9a3VuaXRfdGVzdF9zdWl0ZShkYW1vbl90ZXN0X3N1aXRlKTtcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMjc4LVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDoyNzk6I2VuZGlmIC8qIF9EQU1PTl9WQUREUl9URVNUX0ggKi9cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMjgwLVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDoyODE6I2VuZGlmXHQvKiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVCAqL1xuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtMjAtXG5tbS9kYW1vbi92YWRkci5jOjIxOiNpZmRlZiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vdmFkZHIuYy0yMi0jdW5kZWYgREFNT05fTUlOX1JFR0lPTl9TWlxuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZz01PWNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvblwmIzM0O1xuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjc6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9WQUREUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTgtXHRoZWxwXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9WQUREUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTIwLVx0aGVscFxuLS1cbnRvb2xzL3Rlc3Rpbmcva3VuaXQvY29uZmlncy9hbGxfdGVzdHMuY29uZmlnPTM5PUNPTkZJR19EQU1PTj15XG50b29scy90ZXN0aW5nL2t1bml0L2NvbmZpZ3MvYWxsX3Rlc3RzLmNvbmZpZzo0MDpDT05GSUdfREFNT05fVkFERFI9eVxudG9vbHMvdGVzdGluZy9rdW5pdC9jb25maWdzL2FsbF90ZXN0cy5jb25maWctNDEtQ09ORklHX0RBTU9OX1BBRERSPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9Mz1DT05GSUdfREFNT05fUEFERFI9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnOjQ6Q09ORklHX0RBTU9OX1ZBRERSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZy01LUNPTkZJR19EQU1PTl9SRUNMQUlNPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkxOAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBEQU1PTl9WQUREUmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgYXJlIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBhbHNvIHRoZSBldmVyLXByZXNlbnQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSBhbHdheXMgbmVlZCB0byBjb25zaWRlciBUSFAgaW4gdGhlc2Ugc2NlbmFyaW9zLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIHBhdGggdG8gYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBSaWdodCwgc28gYGRhbW9zX3ZhX3NwbGl0YCBnZXRzIGNhbGxlZCBmcm9tIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIHdoZW4gdGhlIGFjdGlvbiBpcyBgREFNT1NfU1BMSVRgLiBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBpcyBzdWJzZXF1ZW50bHkgY2FsbGVkIGJ5IGBkYW1vbl92YV9hcHBseV90aHJlZV9yZWdpb25zYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSBgZGFtb25fdmFfYXBwbHlfc2NoZW1lc2AsIHRoZW4gYnkgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIGFuZCBmaW5hbGx5LCB0aGF04oCZcyBpbnZva2VkIGJ5IGBrZGFtb25kX2ZuYC4gQW5kIGZyb20gdGhlcmUsIGl0IGFwcGVhcnMgdGhpcyBlbnRpcmUgc2VxdWVuY2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gRXhjZWxsZW50LCB0aGF0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB0aGUgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLgoKVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYXJlOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCwgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHkgdGhlIGB0YXJnZXRfb3JkZXJgIGZ1bmN0aW9ucywgdG8gY29uZmlybSB0aGVpciBiZWhhdmlvci4gSSYjMzk7bGwgZmluZCB0aGVtIGluIGBtbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RhcmdldF9vcmRlcl9zdG9yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjY1Nj1zdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjY1OnN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Njc3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIGEgREFNT1MgVmlydHVhbCBBZGRyZXNzIFNwbGl0KioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BsaXQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgREFNT1MgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRhbW9zX3ZhX3NwbGl0YCB3aXRoaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGxvZ2ljIGZvciBob3cgdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBpcyBzZWdtZW50ZWQgYW5kIGhhbmRsZWQgdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgY29kZSBkZXRlcm1pbmVzIHRoZSBzcGxpdHRpbmcgcG9pbnRzIGFuZCB0aGUgaW1wbGljYXRpb25zIGl0IGhhcyBvbiBtZW1vcnkgbWFuYWdlbWVudC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBEQU1PTiYjMzk7cyBvcGVyYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXQgY29tcGxldGVseSBpcyBwYXJhbW91bnQuIExldCYjMzk7cyBkaXZlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc192YV9zcGxpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jPTg3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTkwMC0vKlxubW0vZGFtb24vdmFkZHIuYzo5MDE6ICogZGFtb3NfdmFfc3BsaXQoKSAtIFNwbGl0IGxhcmdlIGZvbGlvcyBpbiBhIHJlZ2lvbiBkb3duIHRvIEB0YXJnZXRfb3JkZXJcbm1tL2RhbW9uL3ZhZGRyLmMtOTAyLSAqIHVzaW5nIHRoZSBleGlzdGluZyBzcGxpdF9mb2xpb190b19vcmRlcigpLlxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtOTEwLSAqL1xubW0vZGFtb24vdmFkZHIuYzo5MTE6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxubW0vZGFtb24vdmFkZHIuYy05MTItXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTEwMDU9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTEwMzUtXHRjYXNlIERBTU9TX1NQTElUOlxubW0vZGFtb24vdmFkZHIuYzoxMDM2Olx0XHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcbm1tL2RhbW9uL3ZhZGRyLmMtMTAzNy1cdGRlZmF1bHQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MTkyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY291cGxlIG9mIGtleSBhZGRpdGlvbnM6IGEgbmV3IHN5c2ZzIGZpbGUgY2FsbGVkIGB0YXJnZXRfb3JkZXJgLCBhbmQgYSBuZXcgYWN0aW9uLCBgc3BsaXRgLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGRhbW9zX3ZhX3NwbGl0YCBmdW5jdGlvbiwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIFZNQXMgYW5kIHNwbGl0dGluZyBmb2xpb3MuIEZyb20gYSBjdXJzb3J5IGdsYW5jZSwgaXQgYXBwZWFycyBmdW5jdGlvbmFsbHkgc291bmQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZ1enppbmc7IGl0JiMzOTtzIHRoZSBraW5kIG9mIGNvZGUgdGhhdCYjMzk7cyByaXBlIGZvciBmaW5kaW5nIGVkZ2UgY2FzZXMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpJIHNob3VsZCBhbHNvIG5vdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHdpbGwgYmUgbmVlZGVkOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fVkFERFJgLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgZm9yIG15IHRlc3RpbmcgZW52aXJvbm1lbnQgc2V0dXAuCgpUaGUgbW9zdCBpbXBvcnRhbnQgc3ltYm9scyBmb3IgbWUgdG8gZm9jdXMgb24gaGVyZSBhcmUgYGRhbW9zX3ZhX3NwbGl0YCwgb2J2aW91c2x5LCBhbmQgdGhlbiB0aGUgc3lzZnMgZmlsZSBoYW5kbGVycyBgdGFyZ2V0X29yZGVyX3N0b3JlYCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC4gVGhvc2Ugd2lsbCBwcm92aWRlIGNydWNpYWwgY29udHJvbCBvdmVyIHRoZSBuZXcgYmVoYXZpb3IuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBxdWlja2x5IHNjYW4gdGhlIGNvZGUgdG8gdmVyaWZ5IHRoYXQgYGRhbW9zX3ZhX3NwbGl0YCBpcyB0aGUgb25seSBhZGRlZCBmdW5jdGlvbi4gSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljLipkYW1vc192YV9zcGxpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jPTg3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTkxMC0gKi9cbm1tL2RhbW9uL3ZhZGRyLmM6OTExOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbm1tL2RhbW9uL3ZhZGRyLmMtOTEyLVx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzM3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gd2hhdCBJJiMzOTttIGFib3V0IHRvIGRvOgoKKipDaGVja2luZyBmb3IgUmVsYXRlZCBGdW5jdGlvbmFsaXR5IGluIHRoZSBLZXJuZWwmIzM5O3Mgc3lzZnMgU2NoZW1lcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZXRoaW5nIGluIHRoaXMga2VybmVsIG1vZHVsZSwgc3BlY2lmaWNhbGx5IGBtbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgaWYgYW55IGFkZGl0aW9uYWwgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGF0IGZpbGUuJiMzNDsgSSBrbm93IHRoZSBjb2RlYmFzZSByZWFzb25hYmx5IHdlbGwsIGJ1dCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGRvdWJsZS1jaGVjaywgZXNwZWNpYWxseSBhZnRlciBhIHBlcmlvZCBhd2F5LCBvciBpZiBzaWduaWZpY2FudCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHJlY2VudGx5LiBJdCYjMzk7cyBhYm91dCBlbnN1cmluZyBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgSSBzdGFydCBtYWtpbmcgYW55IGFzc3VtcHRpb25zIG9yIGdvaW5nIGRlZXBlciBpbnRvIGFueSBvbmUgYXJlYS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3Mgb3ZlcmFsbCBiZWhhdmlvciBvciByZWxhdGUgdG8gd2hhdCBJJiMzOTttIHdvcmtpbmcgb24gcmlnaHQgbm93LiBBIHF1aWNrIHNjYW4gd2lsbCBwcmV2ZW50IHN1cnByaXNlcyBkb3duIHRoZSByb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljLip0YXJnZXRfb3JkZXJfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNjQ0PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NTUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY1NjpzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjU3LVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjY1OnN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNzAxPXN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9uaWRfYXR0ciA9XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3MDMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjcwNDpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjcwNS1cdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczNDEKCQkJCQkJCW91dHB1dDogMTc3CgkJCQkJCQl0aG91Z2h0czogMjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIEZvbGlvIFNwbGl0dGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHNvbWUgaW50ZXJlc3RpbmcgZnVuY3Rpb25hbGl0eSBpbnRvIERBTU9OLCBzcGVjaWZpY2FsbHkgdGhlIGFiaWxpdHkgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIgdmlhIGEgbmV3IGBEQU1PU19TUExJVGAgYWN0aW9uLiBJIHNlZSB0aHJlZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCwgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuIEZyb20gYSBoaWdoLWxldmVsIHBlcnNwZWN0aXZlLCBJIHVuZGVyc3RhbmQgdGhpcyBtZWFucyB3ZSYjMzk7cmUgYWRkaW5nIGJvdGggYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtICphbmQqIGEgbmV3IHN5c2ZzIGludGVyZmFjZSB0byBjb250cm9sIGl0LiBUaGUgY29yZSBsb2dpYyBmb3IgdGhlIHNwbGl0IGl0c2VsZiBzZWVtcyB0byBiZSB3aXRoaW4gYGRhbW9zX3ZhX3NwbGl0YCwgbGV2ZXJhZ2luZyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgLgoKR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogKipGVVpaSU5HISoqIFRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gcmlnb3JvdXNseSB0ZXN0IHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMsIHBhcnRpY3VsYXJseSBpbiBgZGFtb3NfdmFfc3BsaXRgLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIG5ldyBzeXNmcyBpbnRlcmZhY2UsIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLiBFZGdlIGNhc2VzIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBoZXJlOiB3aGF0IGhhcHBlbnMgd2l0aCB2ZXJ5IGxhcmdlIGZvbGlvcywgbWluaW1hbCB0YXJnZXQgb3JkZXJzLCBvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBUaGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25zIG9mIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFsbCBtYWtlIHNlbnNlIGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCBzaG91bGQgYmUgY29uc2lkZXJlZCBkdXJpbmcgdGVzdGluZywgdG8gZXN0YWJsaXNoIHRoZSBjb25kaXRpb25zIGluIHdoaWNoIHRoaXMgZmVhdHVyZSB3aWxsIGJlIHVzZWQgYW5kIGhvdyB0aGV5IG1heSBlZmZlY3QgdGhlIHRlc3RpbmcgcHJvY2Vzcy4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdGhhdCBJIHdpbGwgZm9jdXMgb24gZHVyaW5nIGludmVzdGlnYXRpb24gYXJlOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC4KCkkmIzM5O20gcmVhZHkgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwLCBzbyBJIHdpbGwgbm93IGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zaG93JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgREFNT04gYWN0aW9uIGBEQU1PU19TUExJVGAgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIuIEl0IGFkZHMgc3lzZnMgaW50ZXJmYWNlcyB0byBjb25maWd1cmUgdGhlIHRhcmdldCBvcmRlciBhbmQgaW1wbGVtZW50cyB0aGUgc3BsaXR0aW5nIGxvZ2ljIGluIGBkYW1vc192YV9zcGxpdGAgdXNpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZSBoYW5kbGUgZWRnZSBjYXNlcyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zaG93JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgREFNT04gYWN0aW9uIGBEQU1PU19TUExJVGAgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIuIEl0IGFkZHMgc3lzZnMgaW50ZXJmYWNlcyB0byBjb25maWd1cmUgdGhlIHRhcmdldCBvcmRlciBhbmQgaW1wbGVtZW50cyB0aGUgc3BsaXR0aW5nIGxvZ2ljIGluIGBkYW1vc192YV9zcGxpdGAgdXNpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZSBoYW5kbGUgZWRnZSBjYXNlcyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODoxMC42NjEyNjA4NzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDU1MTk1MTQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9zX3ZhX3NwbGl0XCIsXG4gICAgXCJ0YXJnZXRfb3JkZXJfc3RvcmVcIixcbiAgICBcInRhcmdldF9vcmRlcl9zaG93XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBEQU1PTiBhY3Rpb24gYERBTU9TX1NQTElUYCB0byBzcGxpdCBsYXJnZSBmb2xpb3MgZG93biB0byBhIHNwZWNpZmllZCBvcmRlci4gSXQgYWRkcyBzeXNmcyBpbnRlcmZhY2VzIHRvIGNvbmZpZ3VyZSB0aGUgdGFyZ2V0IG9yZGVyIGFuZCBpbXBsZW1lbnRzIHRoZSBzcGxpdHRpbmcgbG9naWMgaW4gYGRhbW9zX3ZhX3NwbGl0YCB1c2luZyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyBhbmQgc3lzZnMgaW50ZXJmYWNlIGhhbmRsZSBlZGdlIGNhc2VzIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzg6MTAuNjYxMjY2MjY3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTA2MjI4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3YWRmODg0NDExNDkyZTJkNzAyMDBhMWQ0YTViMmFlNTcxYTU0ZGI4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDIwIDAzOjM4OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cXG5pbmRleCA5MDdhNTA0ZmI2NGM1NC4uZWU4ZTI2MGE2MzFjZjIgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cXG4rKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxcbkBAIC0yNjUsNiArMjY1LDEzIEBAIENvbnRhY3Q6XFx0U0ogUGFyayBcXHUwMDNjc2pAa2VybmVsLm9yZ1xcdTAwM2VcXG4gRGVzY3JpcHRpb246XFx0QWN0aW9uJ3MgdGFyZ2V0IE5VTUEgbm9kZSBpZC4gIFN1cHBvcnRlZCBieSBvbmx5IHJlbGV2YW50XFxuIFxcdFxcdGFjdGlvbnMuXFxuIFxcbitXaGF0OlxcdFxcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1xcdTAwM2NLXFx1MDAzZS9jb250ZXh0cy9cXHUwMDNjQ1xcdTAwM2Uvc2NoZW1lcy9cXHUwMDNjU1xcdTAwM2UvdGFyZ2V0X29yZGVyXFxuK0RhdGU6XFx0XFx0SnVsIDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRUYXJnZXQgZm9saW8gb3JkZXIgZm9yIHRoZSBgYHNwbGl0YGAgYWN0aW9uLiAgTGFyZ2UgZm9saW9zIGluXFxuK1xcdFxcdHRoZSB0YXJnZXQgcmVnaW9uIGFyZSBzcGxpdCBkb3duIHRvIHRoaXMgb3JkZXIuICBWYWxpZCB2YWx1ZXNcXG4rXFx0XFx0YXJlIDAgKG9yZGVyLTAgYmFzZSBwYWdlcykgYW5kIDIuLkhQQUdFX1BNRF9PUkRFUi0xLlxcbitcXG4gV2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cXHUwMDNjS1xcdTAwM2UvY29udGV4dHMvXFx1MDAzY0NcXHUwMDNlL3NjaGVtZXMvXFx1MDAzY1NcXHUwMDNlL2FwcGx5X2ludGVydmFsX3VzXFxuIERhdGU6XFx0XFx0U2VwIDIwMjNcXG4gQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcXG5pbmRleCBhZWQ2Y2IxY2Y0ODMxMC4uODdhODAxOTU0YjFiMzAgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XFxuQEAgLTU0OSw2ICs1NDksMTEgQEAgdGhhdCBzdXBwb3J0cyBlYWNoIGFjdGlvbiBhcmUgYXMgYmVsb3cuXFxuICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW5cXG4gICAgVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgYWN0aW9uIHdpbGwganVzdFxcbiAgICBmYWlsLlxcbisgLSBgYHNwbGl0YGA6IFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiBkb3duIHRvIHRoZSBvcmRlciBzcGVjaWZpZWRcXG4rICAgYnkgdGhlIHNjaGVtZSdzIGBgdGFyZ2V0X29yZGVyYGAgKGBgMGBgIGZvciBvcmRlci0wIGJhc2UgcGFnZXMsIG9yXFxuKyAgIGBgMi4uSFBBR0VfUE1EX09SREVSLTFgYCkuICBTdXBwb3J0ZWQgYnkgYGB2YWRkcmBgIGFuZCBgYGZ2YWRkcmBgIG9wZXJhdGlvbnNcXG4rICAgc2V0LiBXaGVuIFRSQU5TUEFSRU5UX0hVR0VQQUdFIGlzIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gb2YgdGhlIGFjdGlvblxcbisgICB3aWxsIGp1c3QgZmFpbC5cXG4gIC0gYGBscnVfcHJpb2BgOiBQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC5cXG4gIC0gYGBscnVfZGVwcmlvYGA6IERlcHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5AQCAtMTEwLDYgKzExMCw3IEBAIHN0cnVjdCBkYW1vbl90YXJnZXQge1xcbiAgKiBAREFNT1NfSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cXG4gICogQERBTU9TX05PSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLlxcbiAgKiBAREFNT1NfQ09MTEFQU0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9DT0xMQVBTRS5cXG4rICogQERBTU9TX1NQTElUOlxcdFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiB0byBhIHNtYWxsZXIgb3JkZXIuXFxuICAqIEBEQU1PU19MUlVfUFJJTzpcXHRQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX0xSVV9ERVBSSU86XFx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX01JR1JBVEVfSE9UOiAgTWlncmF0ZSB0aGUgcmVnaW9ucyBwcmlvcml0aXppbmcgd2FybWVyIHJlZ2lvbnMuXFxuQEAgLTEzMCw2ICsxMzEsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7XFxuIFxcdERBTU9TX0hVR0VQQUdFLFxcbiBcXHREQU1PU19OT0hVR0VQQUdFLFxcbiBcXHREQU1PU19DT0xMQVBTRSxcXG4rXFx0REFNT1NfU1BMSVQsXFxuIFxcdERBTU9TX0xSVV9QUklPLFxcbiBcXHREQU1PU19MUlVfREVQUklPLFxcbiBcXHREQU1PU19NSUdSQVRFX0hPVCxcXG5AQCAtNTgyLDEwICs1ODQsMTUgQEAgc3RydWN0IGRhbW9zIHtcXG4gXFx0c3RydWN0IGRhbW9zX3F1b3RhIHF1b3RhO1xcbiBcXHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyB3bWFya3M7XFxuIFxcdHVuaW9uIHtcXG4tXFx0XFx0c3RydWN0IHtcXG4tXFx0XFx0XFx0aW50IHRhcmdldF9uaWQ7XFxuLVxcdFxcdFxcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7XFxuLVxcdFxcdH07XFxuK1xcdFxcdGludCB0YXJnZXRfbmlkO1xcbitcXHRcXHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyBtaWdyYXRlX2Rlc3RzO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBAb3JkZXI6IHRhcmdldCBmb2xpbyBvcmRlciBmb3IgREFNT1NfU1BMSVQuXFxuK1xcdFxcdCAqIFNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIHRoaXMgb3JkZXIuICAwIGZvclxcbitcXHRcXHQgKiBvcmRlci0wIGJhc2UgcGFnZXMsIDIuLkhQQUdFX1BNRF9PUkRFUi0xIGZvclxcbitcXHRcXHQgKiBzbWFsbGVyIG1USFAuICBPcmRlci0xIGlzIHJlamVjdGVkLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbiBcXHR9O1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGNvcmVfZmlsdGVycztcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBvcHNfZmlsdGVycztcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggODA2YTY3ZDAyYTZlOTAuLjM5NGM2MjQ1NWFkNTZiIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC02OTMsNiArNjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdHNjaGVtZS1cXHUwMDNlcGF0dGVybiA9ICpwYXR0ZXJuO1xcbiBcXHRzY2hlbWUtXFx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcXG4rXFx0c2NoZW1lLVxcdTAwM2VvcmRlciA9IDA7XFxuIFxcdHNjaGVtZS1cXHUwMDNlYXBwbHlfaW50ZXJ2YWxfdXMgPSBhcHBseV9pbnRlcnZhbF91cztcXG4gXFx0LypcXG4gXFx0ICogbmV4dF9hcHBseV9zaXMgd2lsbCBiZSBzZXQgd2hlbiBrZGFtb25kIHN0YXJ0cy4gIFdoaWxlIGtkYW1vbmQgaXNcXG5AQCAtMTQ0Niw2ICsxNDQ3LDcgQEAgc3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbiBcXG4gXFx0ZHN0LVxcdTAwM2VwYXR0ZXJuID0gc3JjLVxcdTAwM2VwYXR0ZXJuO1xcbiBcXHRkc3QtXFx1MDAzZWFjdGlvbiA9IHNyYy1cXHUwMDNlYWN0aW9uO1xcbitcXHRkc3QtXFx1MDAzZW9yZGVyID0gc3JjLVxcdTAwM2VvcmRlcjtcXG4gXFx0ZHN0LVxcdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IHNyYy1cXHUwMDNlYXBwbHlfaW50ZXJ2YWxfdXM7XFxuIFxcbiBcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGEoXFx1MDAyNmRzdC1cXHUwMDNlcXVvdGEsIFxcdTAwMjZzcmMtXFx1MDAzZXF1b3RhKTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXFxuaW5kZXggMzJmNDk1YTk2YjE3YTguLjcyNWVkODFjY2Y2Y2FjIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xcbisrKyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xcbkBAIC00LDcgKzQsOSBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbnVtYS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaHVnZV9tbS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInN5c2ZzLWNvbW1vbi5oXFxcIlxcbiBcXG5AQCAtMjI2MCw2ICsyMjYyLDcgQEAgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSB7XFxuIFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHM7XFxuIFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcXG4gXFx0aW50IHRhcmdldF9uaWQ7XFxuK1xcdHVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7XFxuIFxcdHN0cnVjdCBkYW1vc19zeXNmc19kZXN0cyAqZGVzdHM7XFxuIH07XFxuIFxcbkBAIC0yMjkzLDYgKzIyOTYsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcXG4gXFx0XFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxcbiBcXHRcXHQubmFtZSA9IFxcXCJjb2xsYXBzZVxcXCIsXFxuIFxcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmFjdGlvbiA9IERBTU9TX1NQTElULFxcbitcXHRcXHQubmFtZSA9IFxcXCJzcGxpdFxcXCIsXFxuK1xcdH0sXFxuIFxcdHtcXG4gXFx0XFx0LmFjdGlvbiA9IERBTU9TX0xSVV9QUklPLFxcbiBcXHRcXHQubmFtZSA9IFxcXCJscnVfcHJpb1xcXCIsXFxuQEAgLTIzMjYsNiArMjMzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpkYW1vbl9zeXNmc19zY2hlbWVfYWxsb2MoXFxuIFxcdHNjaGVtZS1cXHUwMDNlYWN0aW9uID0gYWN0aW9uO1xcbiBcXHRzY2hlbWUtXFx1MDAzZWFwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7XFxuIFxcdHNjaGVtZS1cXHUwMDNldGFyZ2V0X25pZCA9IE5VTUFfTk9fTk9ERTtcXG4rXFx0c2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgPSAwO1xcbiBcXHRyZXR1cm4gc2NoZW1lO1xcbiB9XFxuIFxcbkBAIC0yNjQ1LDYgKzI2NTMsNDAgQEAgc3RhdGljIHNzaXplX3QgdGFyZ2V0X25pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFx0cmV0dXJuIGVyciA/IGVyciA6IGNvdW50O1xcbiB9XFxuIFxcbitzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4rXFx0XFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuK3tcXG4rXFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXFxuK1xcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xcbitcXG4rXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJXVcXFxcblxcXCIsIHNjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyKTtcXG4rfVxcbitcXG4rc3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbitcXHRcXHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbitcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcXG4rXFx0dW5zaWduZWQgaW50IHZhbDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcXHUwMDI2dmFsKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuKyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG4rXFx0LyogVmFsaWQgc3BsaXQgdGFyZ2V0czogMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBvciAyLi5IUEFHRV9QTURfT1JERVItMS4gKi9cXG4rXFx0aWYgKHZhbCAhPSAwIFxcdTAwMjZcXHUwMDI2ICh2YWwgXFx1MDAzYyAyIHx8IHZhbCBcXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rI2Vsc2VcXG4rXFx0aWYgKHZhbCAhPSAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rI2VuZGlmXFxuK1xcbitcXHRzY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciA9IHZhbDtcXG4rXFx0cmV0dXJuIGNvdW50O1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG4ge1xcbiBcXHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpO1xcbkBAIC0yNjU5LDEwICsyNzAxLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIgPVxcbiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxcbiBcXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTtcXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cXG4rXFx0XFx0X19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTtcXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxcbiBcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcXG4rXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ci5hdHRyLFxcbiBcXHROVUxMLFxcbiB9O1xcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XFxuQEAgLTMwMTEsNiArMzA1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcXG4gXFx0aWYgKCFzY2hlbWUpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4rXFx0c2NoZW1lLVxcdTAwM2VvcmRlciA9IHN5c2ZzX3NjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyO1xcbitcXG4gXFx0ZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy1cXHUwMDNlZ29hbHMsIFxcdTAwMjZzY2hlbWUtXFx1MDAzZXF1b3RhKTtcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRkYW1vbl9kZXN0cm95X3NjaGVtZShzY2hlbWUpO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xcbmluZGV4IGQxMGI4MDQyYWRiNWJhLi5hODYwNzQ0ODU4NGQ1NSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi92YWRkci5jXFxuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xcbkBAIC02LDYgKzYsNyBAQFxcbiAjZGVmaW5lIHByX2ZtdChmbXQpIFxcXCJkYW1vbi12YTogXFxcIiBmbXRcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9oaWdobWVtLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9odWdlX21tLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9odWdldGxiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWFuLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbXVfbm90aWZpZXIuaFxcdTAwM2VcXG5AQCAtODk2LDYgKzg5NywxMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbisvKlxcbisgKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxcbisgKiB1c2luZyB0aGUgZXhpc3Rpbmcgc3BsaXRfZm9saW9fdG9fb3JkZXIoKS5cXG4rICpcXG4rICogTG9ja2luZzogZm9saW9fd2Fsa19zdGFydCgpIHJldHVybnMgdGhlIGZvbGlvIHdpdGggdGhlIHBhZ2UgdGFibGUgbG9ja1xcbisgKiBoZWxkLiAgc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBtdXN0IG5vdCBydW4gdW5kZXIgdGhlIHBhZ2UgdGFibGUgbG9jayxcXG4rICogc28gd2UgcGluIHRoZSBmb2xpbyAocmVmZXJlbmNlICsgbG9jayksIGVuZCB0aGUgd2FsayB0byBkcm9wIHRoZSBwYWdlXFxuKyAqIHRhYmxlIGxvY2ssIGFuZCBzcGxpdCB3aGlsZSBob2xkaW5nIG9ubHkgbW1hcF9yZWFkX2xvY2suXFxuKyAqIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgcmV0dXJucyAtRUJVU1kgZm9yIGEgcmFjZWQgb3IgcGlubmVkIGZvbGlvO1xcbisgKiB3ZSBza2lwIHN1Y2ggZm9saW9zLlxcbisgKi9cXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbitcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXFx1MDAzZW9yZGVyO1xcbitcXHR1bnNpZ25lZCBsb25nIGFkZHIgPSBBTElHTl9ET1dOKHItXFx1MDAzZWFyLnN0YXJ0LCBQQUdFX1NJWkUpO1xcbitcXHR1bnNpZ25lZCBsb25nIGVuZCA9IHItXFx1MDAzZWFyLmVuZDtcXG4rXFx0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcXG4rXFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XFxuK1xcbitcXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xcbitcXHRpZiAoIW1tKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHdoaWxlIChhZGRyIFxcdTAwM2MgZW5kKSB7XFxuK1xcdFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbitcXHRcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbitcXHRcXHRzdHJ1Y3QgZm9saW9fd2FsayBmdztcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBmb2xpb19zeiA9IDA7XFxuK1xcbitcXHRcXHRpZiAobW1hcF9yZWFkX2xvY2tfa2lsbGFibGUobW0pKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHZtYSA9IHZtYV9sb29rdXAobW0sIGFkZHIpO1xcbitcXHRcXHRpZiAoIXZtYSkge1xcbitcXHRcXHRcXHQvKiBTa2lwIHRoZSBnYXAgdG8gdGhlIG5leHQgVk1BLCBpZiBhbnkuICovXFxuK1xcdFxcdFxcdHZtYSA9IGZpbmRfdm1hKG1tLCBhZGRyKTtcXG4rXFx0XFx0XFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XFxuK1xcdFxcdFxcdGlmICghdm1hIHx8IHZtYS1cXHUwMDNldm1fc3RhcnQgXFx1MDAzZT0gZW5kKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0YWRkciA9IHZtYS1cXHUwMDNldm1fc3RhcnQ7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBGb2xpb3MgaW4gdGhlc2UgVk1BcyBhcmUgbm90IG91ciBidXNpbmVzcy4gKi9cXG4rXFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiAoVk1fSFVHRVRMQiB8IFZNX01JWEVETUFQKSkge1xcbitcXHRcXHRcXHRhZGRyID0gdm1hLVxcdTAwM2V2bV9lbmQ7XFxuK1xcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Zm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KFxcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcXG4rXFx0XFx0aWYgKCFmb2xpbykge1xcbitcXHRcXHRcXHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcXG4rXFx0XFx0XFx0YWRkciArPSBQQUdFX1NJWkU7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRmb2xpb19zeiA9IGZvbGlvX3NpemUoZm9saW8pO1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogRm9yIGZpbGUtYmFja2VkIGZvbGlvcywgQHRhcmdldF9vcmRlciBtYXkgYmUgYmVsb3cgdGhlXFxuK1xcdFxcdCAqIGZpbGVzeXN0ZW0ncyBtaW5pbXVtIGZvbGlvIG9yZGVyIChtYXBwaW5nX21pbl9mb2xpb19vcmRlcigpKS5cXG4rXFx0XFx0ICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSB3aWxsIHNpbXBseSBmYWlsIGluIHRoYXQgY2FzZSBhbmRcXG4rXFx0XFx0ICogd2Ugc2tpcCB0aGUgZm9saW8uICBUaGlzIGlzIGEgc2FmZSBuby1vcDsgZnV0dXJlIHdvcmsgY2FuXFxuK1xcdFxcdCAqIGFkanVzdCB0YXJnZXRfb3JkZXIgdXB3YXJkIGxpa2Ugc3BsaXRfaHVnZV9wYWdlc19pbl9waWQoKVxcbitcXHRcXHQgKiBkb2VzIHdoZW4gYSBzcGVjaWZpYyBmaWxlc3lzdGVtIG5lZWRzIGl0LlxcbitcXHRcXHQgKi9cXG4rXFxuK1xcdFxcdC8qIEhvbm91ciB0aGUgc2NoZW1lJ3Mgb3BlcmF0aW9ucy1sYXllciBmaWx0ZXJzLiAqL1xcbitcXHRcXHRpZiAoZGFtb3Nfb3BzX2hhc19maWx0ZXIocykpIHtcXG4rXFx0XFx0XFx0aWYgKGRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkcixcXG4rXFx0XFx0XFx0XFx0XFx0ZncubGV2ZWwgPT0gRldfTEVWRUxfUFRFID8gZncucHRlcCA6IE5VTEwsXFxuK1xcdFxcdFxcdFxcdFxcdGZ3LmxldmVsID09IEZXX0xFVkVMX1BNRCA/IGZ3LnBtZHAgOiBOVUxMKSkge1xcbitcXHRcXHRcXHRcXHRmb2xpb193YWxrX2VuZChcXHUwMDI2ZncsIHZtYSk7XFxuK1xcdFxcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbitcXHRcXHRcXHRcXHRnb3RvIG5leHQ7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc3o7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmIChmb2xpb19vcmRlcihmb2xpbykgXFx1MDAzZSB0YXJnZXRfb3JkZXIgXFx1MDAyNlxcdTAwMjYgZm9saW9fdHJ5bG9jayhmb2xpbykpIHtcXG4rXFx0XFx0XFx0Zm9saW9fZ2V0KGZvbGlvKTtcXG4rXFx0XFx0XFx0LyogRHJvcCB0aGUgcGFnZSB0YWJsZSBsb2NrIGJlZm9yZSBzcGxpdHRpbmcuICovXFxuK1xcdFxcdFxcdGZvbGlvX3dhbGtfZW5kKFxcdTAwMjZmdywgdm1hKTtcXG4rXFxuK1xcdFxcdFxcdGlmICghc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIHRhcmdldF9vcmRlcikpXFxuK1xcdFxcdFxcdFxcdGFwcGxpZWQgKz0gZm9saW9fc3o7XFxuK1xcbitcXHRcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbitcXHRcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRmb2xpb193YWxrX2VuZChcXHUwMDI2ZncsIHZtYSk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XFxuK25leHQ6XFxuK1xcdFxcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIGZvbGlvX3N6KSArIGZvbGlvX3N6O1xcbitcXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4rXFx0fVxcbitcXG4rXFx0bW1wdXQobW0pO1xcbitcXHRyZXR1cm4gYXBwbGllZDtcXG4rfVxcbitcXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFx0XFx0c3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuQEAgLTkyNiw2ICsxMDMyLDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gXFx0XFx0cmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gXFx0Y2FzZSBEQU1PU19TVEFUOlxcbiBcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbitcXHRjYXNlIERBTU9TX1NQTElUOlxcbitcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogREFNT1MgYWN0aW9ucyB0aGF0IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBieSAndmFkZHInLlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXFxuaW5kZXggZWNlMjQ0ZTVjNWI5NWMuLmE2MjNjMjcxMzU1ZmZlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGVcXG5AQCAtMTIsNiArMTIsNyBAQCBURVNUX1BST0dTICs9IHN5c2ZzLnNoXFxuIFRFU1RfUFJPR1MgKz0gc3lzZnMucHlcXG4gVEVTVF9QUk9HUyArPSBzeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zX3dzc19lc3RpbWF0aW9uLnB5XFxuIFRFU1RfUFJPR1MgKz0gZGFtb3NfcXVvdGEucHkgZGFtb3NfcXVvdGFfZ29hbC5weSBkYW1vc19hcHBseV9pbnRlcnZhbC5weVxcbitURVNUX1BST0dTICs9IGRhbW9zX3NwbGl0LnB5XFxuIFRFU1RfUFJPR1MgKz0gZGFtb3NfdHJpZWRfcmVnaW9ucy5weSBkYW1vbl9ucl9yZWdpb25zLnB5XFxuIFRFU1RfUFJPR1MgKz0gc3lzZnNfcmVmcmVzaC5weVxcbiBURVNUX1BST0dTICs9IHJlY2xhaW0uc2ggbHJ1X3NvcnQuc2hcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5XFxuaW5kZXggZTZhMjI2NWQ3MjFlOGIuLjVhMDFmMzFhZDlmMjZkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxcbkBAIC00MTksNiArNDE5LDcgQEAgY2xhc3MgRGFtb3M6XFxuICAgICBmaWx0ZXJzID0gTm9uZVxcbiAgICAgYXBwbHlfaW50ZXJ2YWxfdXMgPSBOb25lXFxuICAgICB0YXJnZXRfbmlkID0gTm9uZVxcbisgICAgdGFyZ2V0X29yZGVyID0gTm9uZVxcbiAgICAgZGVzdHMgPSBOb25lXFxuICAgICBpZHggPSBOb25lXFxuICAgICBjb250ZXh0ID0gTm9uZVxcbkBAIC00MjksNyArNDMwLDcgQEAgY2xhc3MgRGFtb3M6XFxuICAgICBkZWYgX19pbml0X18oc2VsZiwgYWN0aW9uPSdzdGF0JywgYWNjZXNzX3BhdHRlcm49RGFtb3NBY2Nlc3NQYXR0ZXJuKCksXFxuICAgICAgICAgICAgICAgICAgcXVvdGE9RGFtb3NRdW90YSgpLCB3YXRlcm1hcmtzPURhbW9zV2F0ZXJtYXJrcygpLFxcbiAgICAgICAgICAgICAgICAgIGNvcmVfZmlsdGVycz1bXSwgb3BzX2ZpbHRlcnM9W10sIGZpbHRlcnM9W10sIHRhcmdldF9uaWQ9MCxcXG4tICAgICAgICAgICAgICAgICBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxcbisgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLCBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxcbiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uXFxuICAgICAgICAgc2VsZi5hY2Nlc3NfcGF0dGVybiA9IGFjY2Vzc19wYXR0ZXJuXFxuICAgICAgICAgc2VsZi5hY2Nlc3NfcGF0dGVybi5zY2hlbWUgPSBzZWxmXFxuQEAgLTQ0OCw2ICs0NDksNyBAQCBjbGFzcyBEYW1vczpcXG4gICAgICAgICBzZWxmLmZpbHRlcnMuc2NoZW1lID0gc2VsZlxcbiBcXG4gICAgICAgICBzZWxmLnRhcmdldF9uaWQgPSB0YXJnZXRfbmlkXFxuKyAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIgPSB0YXJnZXRfb3JkZXJcXG4gICAgICAgICBzZWxmLmRlc3RzID0gZGVzdHNcXG4gICAgICAgICBzZWxmLmRlc3RzLnNjaGVtZSA9IHNlbGZcXG4gXFxuQEAgLTQ5Miw2ICs0OTQsMTEgQEAgY2xhc3MgRGFtb3M6XFxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxcbiAgICAgICAgICAgICByZXR1cm4gZXJyXFxuIFxcbisgICAgICAgIGVyciA9IHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3lzZnNfZGlyKCksICd0YXJnZXRfb3JkZXInKSwgJyVkJyAlXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldF9vcmRlcilcXG4rICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XFxuKyAgICAgICAgICAgIHJldHVybiBlcnJcXG4rXFxuICAgICAgICAgZXJyID0gc2VsZi5kZXN0cy5zdGFnZSgpXFxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxcbiAgICAgICAgICAgICByZXR1cm4gZXJyXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vZGFtb3Nfc3BsaXQucHlcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wODlmYmUwZjBkNGQzYlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weVxcbkBAIC0wLDAgKzEsMTI1IEBAXFxuKyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgRnVuY3Rpb25hbCB0ZXN0IGZvciB0aGUgREFNT1NfU1BMSVQgYWN0aW9uLlxcbisjXFxuKyMgQSBjaGlsZCBwcm9jZXNzIGFsbG9jYXRlcyBhIE1BRFZfSFVHRVBBR0UtYmFja2VkIGFub255bW91cyByZWdpb24gYW5kXFxuKyMgZmF1bHRzIGl0IGluIHNvIHRoYXQgaXQgaXMgYmFja2VkIGJ5IChtKVRIUHMuICBUaGUgcGFyZW50IHRoZW4gcnVucyBhXFxuKyMgREFNT04vREFNT1Mgc2NoZW1lIHdpdGggYWN0aW9uICdzcGxpdCcgYW5kIHRhcmdldF9vcmRlciAwIGFnYWluc3QgdGhlXFxuKyMgY2hpbGQgYW5kIGNoZWNrcyB0aGF0IHRoZSBodWdlIHBhZ2VzIGFyZSBzcGxpdCBpbnRvIGJhc2UgcGFnZXMsIGkuZS4gdGhlXFxuKyMgY2hpbGQncyBBbm9uSHVnZVBhZ2VzIChhcyByZXBvcnRlZCBieSAvcHJvYy9cXHUwMDNjcGlkXFx1MDAzZS9zbWFwcykgZHJvcHMuXFxuK1xcbitpbXBvcnQgY3R5cGVzXFxuK2ltcG9ydCBvc1xcbitpbXBvcnQgc2lnbmFsXFxuK2ltcG9ydCBzeXNcXG4raW1wb3J0IHRpbWVcXG4rXFxuK2ltcG9ydCBfZGFtb25fc3lzZnNcXG4rXFxuK1BNRF9TSVpFID0gMiAqIDEwMjQgKiAxMDI0XFxuK01BRFZfSFVHRVBBR0UgPSAxNFxcbitQUk9UX1JFQURfV1JJVEUgPSAweDEgfCAweDJcXG4rTUFQX1BSSVZBVEVfQU5PTiA9IDB4MiB8IDB4MjBcXG4rUkVHSU9OX1NJWkUgPSAzMiAqIFBNRF9TSVpFXFxuK1xcbitkZWYgY2hpbGRfd29ya2xvYWQoKTpcXG4rICAgICcnJ0FsbG9jYXRlIGEgUE1ELWFsaWduZWQsIFRIUC1iYWNrZWQgcmVnaW9uLCBmYXVsdCBpdCBpbiwgdGhlbiBpZGxlLicnJ1xcbisgICAgbGliYyA9IGN0eXBlcy5DRExMKCdsaWJjLnNvLjYnLCB1c2VfZXJybm89VHJ1ZSlcXG4rICAgIGxpYmMubW1hcC5yZXN0eXBlID0gY3R5cGVzLmNfdm9pZF9wXFxuKyAgICBsaWJjLm1tYXAuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBjdHlwZXMuY19zaXplX3QsIGN0eXBlcy5jX2ludCxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfbG9uZ11cXG4rICAgIGxpYmMubWFkdmlzZS5hcmd0eXBlcyA9IFtjdHlwZXMuY192b2lkX3AsIGN0eXBlcy5jX3NpemVfdCwgY3R5cGVzLmNfaW50XVxcbitcXG4rICAgICMgT3Zlci1hbGxvY2F0ZSBzbyB0aGF0IGEgUE1ELWFsaWduZWQgd2luZG93IGlzIGF2YWlsYWJsZS5cXG4rICAgIHJhdyA9IGxpYmMubW1hcChOb25lLCBSRUdJT05fU0laRSArIFBNRF9TSVpFLCBQUk9UX1JFQURfV1JJVEUsXFxuKyAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEVfQU5PTiwgLTEsIDApXFxuKyAgICBpZiByYXcgaXMgTm9uZSBvciByYXcgPT0gY3R5cGVzLmNfdm9pZF9wKC0xKS52YWx1ZTpcXG4rICAgICAgICBvcy5fZXhpdCgyKVxcbisgICAgYmFzZSA9IChyYXcgKyBQTURfU0laRSAtIDEpIFxcdTAwMjYgfihQTURfU0laRSAtIDEpXFxuKyAgICBsaWJjLm1hZHZpc2UoY3R5cGVzLmNfdm9pZF9wKGJhc2UpLCBSRUdJT05fU0laRSwgTUFEVl9IVUdFUEFHRSlcXG4rXFxuKyAgICBidWYgPSAoY3R5cGVzLmNfY2hhciAqIFJFR0lPTl9TSVpFKS5mcm9tX2FkZHJlc3MoYmFzZSlcXG4rICAgIGZvciBvZmYgaW4gcmFuZ2UoMCwgUkVHSU9OX1NJWkUsIDQwOTYpOlxcbisgICAgICAgIGJ1ZltvZmZdID0gMVxcbitcXG4rICAgICMgUmVhZHk7IGlkbGUgdW50aWwgdGhlIHBhcmVudCB0ZWFycyB1cyBkb3duLlxcbisgICAgc2lnbmFsLnBhdXNlKClcXG4rXFxuK2RlZiBhbm9uX2h1Z2Vfa2IocGlkKTpcXG4rICAgIHRvdGFsID0gMFxcbisgICAgdHJ5OlxcbisgICAgICAgIHdpdGggb3BlbignL3Byb2MvJWQvc21hcHMnICUgcGlkKSBhcyBmOlxcbisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOlxcbisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdBbm9uSHVnZVBhZ2VzOicpOlxcbisgICAgICAgICAgICAgICAgICAgIHRvdGFsICs9IGludChsaW5lLnNwbGl0KClbMV0pXFxuKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6XFxuKyAgICAgICAgcmV0dXJuIC0xXFxuKyAgICByZXR1cm4gdG90YWxcXG4rXFxuK2RlZiBtYWluKCk6XFxuKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2VuYWJsZWQnKTpcXG4rICAgICAgICBwcmludCgnU0tJUDogdHJhbnNwYXJlbnQgaHVnZXBhZ2UgaXMgbm90IGF2YWlsYWJsZScpXFxuKyAgICAgICAgZXhpdCgwKVxcbitcXG4rICAgIHBpZCA9IG9zLmZvcmsoKVxcbisgICAgaWYgcGlkID09IDA6XFxuKyAgICAgICAgY2hpbGRfd29ya2xvYWQoKVxcbisgICAgICAgIG9zLl9leGl0KDApXFxuK1xcbisgICAgdHJ5OlxcbisgICAgICAgICMgR2l2ZSB0aGUgY2hpbGQgdGltZSB0byBmYXVsdCBpbiBpdHMgaHVnZSBwYWdlcy5cXG4rICAgICAgICB0aW1lLnNsZWVwKDIpXFxuKyAgICAgICAgYmVmb3JlID0gYW5vbl9odWdlX2tiKHBpZClcXG4rICAgICAgICBpZiBiZWZvcmUgXFx1MDAzYz0gMDpcXG4rICAgICAgICAgICAgcHJpbnQoJ1NLSVA6IHdvcmtsb2FkIGRpZCBub3QgZ2V0IGFueSBUSFAgKEFub25IdWdlUGFnZXM9JWQpJ1xcbisgICAgICAgICAgICAgICAgICAlIGJlZm9yZSlcXG4rICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKVxcbisgICAgICAgICAgICBleGl0KDApXFxuK1xcbisgICAgICAgICMgU3BsaXQgZXZlcnkgbGFyZ2UgZm9saW8gaW4gdGhlIHRhcmdldCBkb3duIHRvIG9yZGVyLTAgYmFzZSBwYWdlcy5cXG4rICAgICAgICBrZGFtb25kcyA9IF9kYW1vbl9zeXNmcy5LZGFtb25kcyhbX2RhbW9uX3N5c2ZzLktkYW1vbmQoXFxuKyAgICAgICAgICAgIGNvbnRleHRzPVtfZGFtb25fc3lzZnMuRGFtb25DdHgoXFxuKyAgICAgICAgICAgICAgICBvcHM9J3ZhZGRyJyxcXG4rICAgICAgICAgICAgICAgIHRhcmdldHM9W19kYW1vbl9zeXNmcy5EYW1vblRhcmdldChwaWQ9cGlkKV0sXFxuKyAgICAgICAgICAgICAgICBzY2hlbWVzPVtfZGFtb25fc3lzZnMuRGFtb3MoXFxuKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzcGxpdCcsXFxuKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X29yZGVyPTAsXFxuKyAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBldmVyeSByZWdpb24gcmVnYXJkbGVzcyBvZiBhY2Nlc3MvYWdlL3NpemUsIHNvXFxuKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgQVJNNjQgc3RhbGUtVExCIGJsaW5kIHNwb3QgY2Fubm90IG1hc2sgdGhlIHRhcmdldFxcbisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19wYXR0ZXJuPV9kYW1vbl9zeXNmcy5EYW1vc0FjY2Vzc1BhdHRlcm4oXFxuKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9WzAsIDIqKjY0IC0gMV0sXFxuKyAgICAgICAgICAgICAgICAgICAgICAgIG5yX2FjY2Vzc2VzPVswLCAyKio2NCAtIDFdLFxcbisgICAgICAgICAgICAgICAgICAgICAgICBhZ2U9WzAsIDIqKjY0IC0gMV0pLFxcbisgICAgICAgICAgICAgICAgICAgIGFwcGx5X2ludGVydmFsX3VzPTApXSldKV0pXFxuKyAgICAgICAgZXJyID0ga2RhbW9uZHMuc3RhcnQoKVxcbisgICAgICAgIGlmIGVyciBpcyBub3QgTm9uZTpcXG4rICAgICAgICAgICAgcHJpbnQoJ2tkYW1vbmRzIHN0YXJ0IGZhaWxlZDogJXMnICUgZXJyKVxcbisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXFxuKyAgICAgICAgICAgIGV4aXQoMSlcXG4rXFxuKyAgICAgICAgIyBMZXQgdGhlIHNjaGVtZSBmaW5kIGFuZCBzcGxpdCB0aGUgcmVnaW9ucy5cXG4rICAgICAgICBhZnRlciA9IGJlZm9yZVxcbisgICAgICAgIGZvciBfIGluIHJhbmdlKDUwKTpcXG4rICAgICAgICAgICAgdGltZS5zbGVlcCgwLjIpXFxuKyAgICAgICAgICAgIGFmdGVyID0gYW5vbl9odWdlX2tiKHBpZClcXG4rICAgICAgICAgICAgaWYgYWZ0ZXIgPT0gMDpcXG4rICAgICAgICAgICAgICAgIGJyZWFrXFxuK1xcbisgICAgICAgIGtkYW1vbmRzLnN0b3AoKVxcbisgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcXG4rXFxuKyAgICAgICAgaWYgYWZ0ZXIgXFx1MDAzZT0gYmVmb3JlOlxcbisgICAgICAgICAgICBwcmludCgnRkFJTDogQW5vbkh1Z2VQYWdlcyBkaWQgbm90IHNocmluazogYmVmb3JlPSVkIEtpQiAnXFxuKyAgICAgICAgICAgICAgICAgICdhZnRlcj0lZCBLaUInICUgKGJlZm9yZSwgYWZ0ZXIpKVxcbisgICAgICAgICAgICBleGl0KDEpXFxuKyAgICAgICAgcHJpbnQoJ1BBU1M6IEFub25IdWdlUGFnZXMgJWQgS2lCIC1cXHUwMDNlICVkIEtpQiBhZnRlciBEQU1PU19TUExJVCdcXG4rICAgICAgICAgICAgICAlIChiZWZvcmUsIGFmdGVyKSlcXG4rICAgIGZpbmFsbHk6XFxuKyAgICAgICAgdHJ5OlxcbisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXFxuKyAgICAgICAgZXhjZXB0IFByb2Nlc3NMb29rdXBFcnJvcjpcXG4rICAgICAgICAgICAgcGFzc1xcbitcXG4raWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcXG4rICAgIG1haW4oKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XFxuaW5kZXggM2ZmYTA1NGI2Mzg2N2QuLjQ5ZDNjMzE5ZGZkODk4IDEwMDc1NVxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHlcXG5AQCAtMTMxLDExICsxMzEsMTIgQEAgZGVmIGFzc2VydF9zY2hlbWVfY29tbWl0dGVkKHNjaGVtZSwgZHVtcCk6XFxuICAgICAgICAgICAgICdodWdlcGFnZSc6IDMsXFxuICAgICAgICAgICAgICdub2h1Z2VwYWdlJzogNCxcXG4gICAgICAgICAgICAgJ2NvbGxhcHNlJzogNSxcXG4tICAgICAgICAgICAgJ2xydV9wcmlvJzogNixcXG4tICAgICAgICAgICAgJ2xydV9kZXByaW8nOiA3LFxcbi0gICAgICAgICAgICAnbWlncmF0ZV9ob3QnOiA4LFxcbi0gICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogOSxcXG4tICAgICAgICAgICAgJ3N0YXQnOiAxMCxcXG4rICAgICAgICAgICAgJ3NwbGl0JzogNixcXG4rICAgICAgICAgICAgJ2xydV9wcmlvJzogNyxcXG4rICAgICAgICAgICAgJ2xydV9kZXByaW8nOiA4LFxcbisgICAgICAgICAgICAnbWlncmF0ZV9ob3QnOiA5LFxcbisgICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogMTAsXFxuKyAgICAgICAgICAgICdzdGF0JzogMTEsXFxuICAgICAgICAgICAgIH1cXG4gICAgIGFzc2VydF90cnVlKGR1bXBbJ2FjdGlvbiddID09IGFjdGlvbl92YWxbc2NoZW1lLmFjdGlvbl0sICdhY3Rpb24nLCBkdW1wKVxcbiAgICAgYXNzZXJ0X3RydWUoZHVtcFsnYXBwbHlfaW50ZXJ2YWxfdXMnXSA9PSBzY2hlbWUuIGFwcGx5X2ludGVydmFsX3VzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODoxMS41NTMyMjc2NzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NjU5OTY5MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcInRhcmdldF9vcmRlcl9zdG9yZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3Nob3dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IERBTU9OIGFjdGlvbiBgREFNT1NfU1BMSVRgIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIGEgc3BlY2lmaWVkIG9yZGVyLiBJdCBhZGRzIHN5c2ZzIGludGVyZmFjZXMgdG8gY29uZmlndXJlIHRoZSB0YXJnZXQgb3JkZXIgYW5kIGltcGxlbWVudHMgdGhlIHNwbGl0dGluZyBsb2dpYyBpbiBgZGFtb3NfdmFfc3BsaXRgIHVzaW5nIGBzcGxpdF9mb2xpb190b19vcmRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIGFuZCBzeXNmcyBpbnRlcmZhY2UgaGFuZGxlIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdhZGY4ODQ0MTE0OTJlMmQ3MDIwMGExZDRhNWIyYWU1NzFhNTRkYjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAwMzozODowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbmluZGV4IDkwN2E1MDRmYjY0YzU0Li5lZThlMjYwYTYzMWNmMiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG4rKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuQEAgLTI2NSw2ICsyNjUsMTMgQEAgQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuIERlc2NyaXB0aW9uOlx0QWN0aW9uJ3MgdGFyZ2V0IE5VTUEgbm9kZSBpZC4gIFN1cHBvcnRlZCBieSBvbmx5IHJlbGV2YW50XG4gXHRcdGFjdGlvbnMuXG4gXG4rV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL3NjaGVtZXMvXHUwMDNjU1x1MDAzZS90YXJnZXRfb3JkZXJcbitEYXRlOlx0XHRKdWwgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFRhcmdldCBmb2xpbyBvcmRlciBmb3IgdGhlIGBgc3BsaXRgYCBhY3Rpb24uICBMYXJnZSBmb2xpb3MgaW5cbitcdFx0dGhlIHRhcmdldCByZWdpb24gYXJlIHNwbGl0IGRvd24gdG8gdGhpcyBvcmRlci4gIFZhbGlkIHZhbHVlc1xuK1x0XHRhcmUgMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBhbmQgMi4uSFBBR0VfUE1EX09SREVSLTEuXG4rXG4gV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL3NjaGVtZXMvXHUwMDNjU1x1MDAzZS9hcHBseV9pbnRlcnZhbF91c1xuIERhdGU6XHRcdFNlcCAyMDIzXG4gQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuaW5kZXggYWVkNmNiMWNmNDgzMTAuLjg3YTgwMTk1NGIxYjMwIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbkBAIC01NDksNiArNTQ5LDExIEBAIHRoYXQgc3VwcG9ydHMgZWFjaCBhY3Rpb24gYXJlIGFzIGJlbG93LlxuICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW5cbiAgICBUUkFOU1BBUkVOVF9IVUdFUEFHRSBpcyBkaXNhYmxlZCwgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBhY3Rpb24gd2lsbCBqdXN0XG4gICAgZmFpbC5cbisgLSBgYHNwbGl0YGA6IFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiBkb3duIHRvIHRoZSBvcmRlciBzcGVjaWZpZWRcbisgICBieSB0aGUgc2NoZW1lJ3MgYGB0YXJnZXRfb3JkZXJgYCAoYGAwYGAgZm9yIG9yZGVyLTAgYmFzZSBwYWdlcywgb3JcbisgICBgYDIuLkhQQUdFX1BNRF9PUkRFUi0xYGApLiAgU3VwcG9ydGVkIGJ5IGBgdmFkZHJgYCBhbmQgYGBmdmFkZHJgYCBvcGVyYXRpb25zXG4rICAgc2V0LiBXaGVuIFRSQU5TUEFSRU5UX0hVR0VQQUdFIGlzIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gb2YgdGhlIGFjdGlvblxuKyAgIHdpbGwganVzdCBmYWlsLlxuICAtIGBgbHJ1X3ByaW9gYDogUHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC5cbiAgLSBgYGxydV9kZXByaW9gYDogRGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTEwLDYgKzExMCw3IEBAIHN0cnVjdCBkYW1vbl90YXJnZXQge1xuICAqIEBEQU1PU19IVUdFUEFHRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfSFVHRVBBR0UuXG4gICogQERBTU9TX05PSFVHRVBBR0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX05PSFVHRVBBR0UuXG4gICogQERBTU9TX0NPTExBUFNFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9DT0xMQVBTRS5cbisgKiBAREFNT1NfU1BMSVQ6XHRTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gdG8gYSBzbWFsbGVyIG9yZGVyLlxuICAqIEBEQU1PU19MUlVfUFJJTzpcdFByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19MUlVfREVQUklPOlx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbiAgKiBAREFNT1NfTUlHUkFURV9IT1Q6ICBNaWdyYXRlIHRoZSByZWdpb25zIHByaW9yaXRpemluZyB3YXJtZXIgcmVnaW9ucy5cbkBAIC0xMzAsNiArMTMxLDcgQEAgZW51bSBkYW1vc19hY3Rpb24ge1xuIFx0REFNT1NfSFVHRVBBR0UsXG4gXHREQU1PU19OT0hVR0VQQUdFLFxuIFx0REFNT1NfQ09MTEFQU0UsXG4rXHREQU1PU19TUExJVCxcbiBcdERBTU9TX0xSVV9QUklPLFxuIFx0REFNT1NfTFJVX0RFUFJJTyxcbiBcdERBTU9TX01JR1JBVEVfSE9ULFxuQEAgLTU4MiwxMCArNTg0LDE1IEBAIHN0cnVjdCBkYW1vcyB7XG4gXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgcXVvdGE7XG4gXHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyB3bWFya3M7XG4gXHR1bmlvbiB7XG4tXHRcdHN0cnVjdCB7XG4tXHRcdFx0aW50IHRhcmdldF9uaWQ7XG4tXHRcdFx0c3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgbWlncmF0ZV9kZXN0cztcbi1cdFx0fTtcbitcdFx0aW50IHRhcmdldF9uaWQ7XG4rXHRcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7XG4rXHRcdC8qXG4rXHRcdCAqIEBvcmRlcjogdGFyZ2V0IGZvbGlvIG9yZGVyIGZvciBEQU1PU19TUExJVC5cbitcdFx0ICogU3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gdGhpcyBvcmRlci4gIDAgZm9yXG4rXHRcdCAqIG9yZGVyLTAgYmFzZSBwYWdlcywgMi4uSFBBR0VfUE1EX09SREVSLTEgZm9yXG4rXHRcdCAqIHNtYWxsZXIgbVRIUC4gIE9yZGVyLTEgaXMgcmVqZWN0ZWQuXG4rXHRcdCAqL1xuK1x0XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4gXHR9O1xuIFx0c3RydWN0IGxpc3RfaGVhZCBjb3JlX2ZpbHRlcnM7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIG9wc19maWx0ZXJzO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggODA2YTY3ZDAyYTZlOTAuLjM5NGM2MjQ1NWFkNTZiIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC02OTMsNiArNjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHRzY2hlbWUtXHUwMDNlcGF0dGVybiA9ICpwYXR0ZXJuO1xuIFx0c2NoZW1lLVx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcbitcdHNjaGVtZS1cdTAwM2VvcmRlciA9IDA7XG4gXHRzY2hlbWUtXHUwMDNlYXBwbHlfaW50ZXJ2YWxfdXMgPSBhcHBseV9pbnRlcnZhbF91cztcbiBcdC8qXG4gXHQgKiBuZXh0X2FwcGx5X3NpcyB3aWxsIGJlIHNldCB3aGVuIGtkYW1vbmQgc3RhcnRzLiAgV2hpbGUga2RhbW9uZCBpc1xuQEAgLTE0NDYsNiArMTQ0Nyw3IEBAIHN0YXRpYyBpbnQgZGFtb3NfY29tbWl0KHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbiBcbiBcdGRzdC1cdTAwM2VwYXR0ZXJuID0gc3JjLVx1MDAzZXBhdHRlcm47XG4gXHRkc3QtXHUwMDNlYWN0aW9uID0gc3JjLVx1MDAzZWFjdGlvbjtcbitcdGRzdC1cdTAwM2VvcmRlciA9IHNyYy1cdTAwM2VvcmRlcjtcbiBcdGRzdC1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IHNyYy1cdTAwM2VhcHBseV9pbnRlcnZhbF91cztcbiBcbiBcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YShcdTAwMjZkc3QtXHUwMDNlcXVvdGEsIFx1MDAyNnNyYy1cdTAwM2VxdW90YSk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG5pbmRleCAzMmY0OTVhOTZiMTdhOC4uNzI1ZWQ4MWNjZjZjYWMgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuQEAgLTQsNyArNCw5IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L251bWEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwic3lzZnMtY29tbW9uLmhcIlxuIFxuQEAgLTIyNjAsNiArMjI2Miw3IEBAIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xuIFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcbiBcdGludCB0YXJnZXRfbmlkO1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHN0cnVjdCBkYW1vc19zeXNmc19kZXN0cyAqZGVzdHM7XG4gfTtcbiBcbkBAIC0yMjkzLDYgKzIyOTYsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxuIFx0XHQubmFtZSA9IFwiY29sbGFwc2VcIixcbiBcdH0sXG4rXHR7XG4rXHRcdC5hY3Rpb24gPSBEQU1PU19TUExJVCxcbitcdFx0Lm5hbWUgPSBcInNwbGl0XCIsXG4rXHR9LFxuIFx0e1xuIFx0XHQuYWN0aW9uID0gREFNT1NfTFJVX1BSSU8sXG4gXHRcdC5uYW1lID0gXCJscnVfcHJpb1wiLFxuQEAgLTIzMjYsNiArMjMzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpkYW1vbl9zeXNmc19zY2hlbWVfYWxsb2MoXG4gXHRzY2hlbWUtXHUwMDNlYWN0aW9uID0gYWN0aW9uO1xuIFx0c2NoZW1lLVx1MDAzZWFwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7XG4gXHRzY2hlbWUtXHUwMDNldGFyZ2V0X25pZCA9IE5VTUFfTk9fTk9ERTtcbitcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSAwO1xuIFx0cmV0dXJuIHNjaGVtZTtcbiB9XG4gXG5AQCAtMjY0NSw2ICsyNjUzLDQwIEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXHRyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7XG4gfVxuIFxuK3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuK1x0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbit7XG4rXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaixcbitcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbitcbitcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCIldVxcblwiLCBzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyKTtcbit9XG4rXG4rc3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuK1x0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuK3tcbitcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxuK1x0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xuK1x0dW5zaWduZWQgaW50IHZhbDtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBrc3RydG91aW50KGJ1ZiwgMCwgXHUwMDI2dmFsKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuK1x0LyogVmFsaWQgc3BsaXQgdGFyZ2V0czogMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBvciAyLi5IUEFHRV9QTURfT1JERVItMS4gKi9cbitcdGlmICh2YWwgIT0gMCBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwM2MgMiB8fCB2YWwgXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbisjZWxzZVxuK1x0aWYgKHZhbCAhPSAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbisjZW5kaWZcbitcbitcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSB2YWw7XG4rXHRyZXR1cm4gY291bnQ7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuIHtcbiBcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7XG5AQCAtMjY1OSwxMCArMjcwMSwxNCBAQCBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9hcHBseV9pbnRlcnZhbF91c19hdHRyID1cbiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxuIFx0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTtcbiBcbitzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ciA9XG4rXHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XG4rXG4gc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9hdHRyc1tdID0ge1xuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FjdGlvbl9hdHRyLmF0dHIsXG4gXHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9uaWRfYXR0ci5hdHRyLFxuK1x0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyLmF0dHIsXG4gXHROVUxMLFxuIH07XG4gQVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zY2hlbWUpO1xuQEAgLTMwMTEsNiArMzA1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcbiBcdGlmICghc2NoZW1lKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbitcdHNjaGVtZS1cdTAwM2VvcmRlciA9IHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXI7XG4rXG4gXHRlcnIgPSBkYW1vc19zeXNmc19hZGRfcXVvdGFfc2NvcmUoc3lzZnNfcXVvdGFzLVx1MDAzZWdvYWxzLCBcdTAwMjZzY2hlbWUtXHUwMDNlcXVvdGEpO1xuIFx0aWYgKGVycikge1xuIFx0XHRkYW1vbl9kZXN0cm95X3NjaGVtZShzY2hlbWUpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jXG5pbmRleCBkMTBiODA0MmFkYjViYS4uYTg2MDc0NDg1ODRkNTUgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi92YWRkci5jXG4rKysgYi9tbS9kYW1vbi92YWRkci5jXG5AQCAtNiw2ICs2LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIFwiZGFtb24tdmE6IFwiIGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2hpZ2htZW0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2V0bGIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tdV9ub3RpZmllci5oXHUwMDNlXG5AQCAtODk2LDYgKzg5NywxMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLypcbisgKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxuKyAqIHVzaW5nIHRoZSBleGlzdGluZyBzcGxpdF9mb2xpb190b19vcmRlcigpLlxuKyAqXG4rICogTG9ja2luZzogZm9saW9fd2Fsa19zdGFydCgpIHJldHVybnMgdGhlIGZvbGlvIHdpdGggdGhlIHBhZ2UgdGFibGUgbG9ja1xuKyAqIGhlbGQuICBzcGxpdF9mb2xpb190b19vcmRlcigpIG11c3Qgbm90IHJ1biB1bmRlciB0aGUgcGFnZSB0YWJsZSBsb2NrLFxuKyAqIHNvIHdlIHBpbiB0aGUgZm9saW8gKHJlZmVyZW5jZSArIGxvY2spLCBlbmQgdGhlIHdhbGsgdG8gZHJvcCB0aGUgcGFnZVxuKyAqIHRhYmxlIGxvY2ssIGFuZCBzcGxpdCB3aGlsZSBob2xkaW5nIG9ubHkgbW1hcF9yZWFkX2xvY2suXG4rICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSByZXR1cm5zIC1FQlVTWSBmb3IgYSByYWNlZCBvciBwaW5uZWQgZm9saW87XG4rICogd2Ugc2tpcCBzdWNoIGZvbGlvcy5cbisgKi9cbitzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zcGxpdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4rXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbitcdFx0dW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcbit7XG4rXHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy1cdTAwM2VvcmRlcjtcbitcdHVuc2lnbmVkIGxvbmcgYWRkciA9IEFMSUdOX0RPV04oci1cdTAwM2Vhci5zdGFydCwgUEFHRV9TSVpFKTtcbitcdHVuc2lnbmVkIGxvbmcgZW5kID0gci1cdTAwM2Vhci5lbmQ7XG4rXHR1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwO1xuK1x0c3RydWN0IG1tX3N0cnVjdCAqbW07XG4rXG4rXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuK1x0aWYgKCFtbSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR3aGlsZSAoYWRkciBcdTAwM2MgZW5kKSB7XG4rXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuK1x0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuK1x0XHRzdHJ1Y3QgZm9saW9fd2FsayBmdztcbitcdFx0dW5zaWduZWQgbG9uZyBmb2xpb19zeiA9IDA7XG4rXG4rXHRcdGlmIChtbWFwX3JlYWRfbG9ja19raWxsYWJsZShtbSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHZtYSA9IHZtYV9sb29rdXAobW0sIGFkZHIpO1xuK1x0XHRpZiAoIXZtYSkge1xuK1x0XHRcdC8qIFNraXAgdGhlIGdhcCB0byB0aGUgbmV4dCBWTUEsIGlmIGFueS4gKi9cbitcdFx0XHR2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7XG4rXHRcdFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XG4rXHRcdFx0aWYgKCF2bWEgfHwgdm1hLVx1MDAzZXZtX3N0YXJ0IFx1MDAzZT0gZW5kKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0YWRkciA9IHZtYS1cdTAwM2V2bV9zdGFydDtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHQvKiBGb2xpb3MgaW4gdGhlc2UgVk1BcyBhcmUgbm90IG91ciBidXNpbmVzcy4gKi9cbitcdFx0aWYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX0hVR0VUTEIgfCBWTV9NSVhFRE1BUCkpIHtcbitcdFx0XHRhZGRyID0gdm1hLVx1MDAzZXZtX2VuZDtcbitcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHRmb2xpbyA9IGZvbGlvX3dhbGtfc3RhcnQoXHUwMDI2ZncsIHZtYSwgYWRkciwgMCk7XG4rXHRcdGlmICghZm9saW8pIHtcbitcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0XHRhZGRyICs9IFBBR0VfU0laRTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHRmb2xpb19zeiA9IGZvbGlvX3NpemUoZm9saW8pO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBGb3IgZmlsZS1iYWNrZWQgZm9saW9zLCBAdGFyZ2V0X29yZGVyIG1heSBiZSBiZWxvdyB0aGVcbitcdFx0ICogZmlsZXN5c3RlbSdzIG1pbmltdW0gZm9saW8gb3JkZXIgKG1hcHBpbmdfbWluX2ZvbGlvX29yZGVyKCkpLlxuK1x0XHQgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHdpbGwgc2ltcGx5IGZhaWwgaW4gdGhhdCBjYXNlIGFuZFxuK1x0XHQgKiB3ZSBza2lwIHRoZSBmb2xpby4gIFRoaXMgaXMgYSBzYWZlIG5vLW9wOyBmdXR1cmUgd29yayBjYW5cbitcdFx0ICogYWRqdXN0IHRhcmdldF9vcmRlciB1cHdhcmQgbGlrZSBzcGxpdF9odWdlX3BhZ2VzX2luX3BpZCgpXG4rXHRcdCAqIGRvZXMgd2hlbiBhIHNwZWNpZmljIGZpbGVzeXN0ZW0gbmVlZHMgaXQuXG4rXHRcdCAqL1xuK1xuK1x0XHQvKiBIb25vdXIgdGhlIHNjaGVtZSdzIG9wZXJhdGlvbnMtbGF5ZXIgZmlsdGVycy4gKi9cbitcdFx0aWYgKGRhbW9zX29wc19oYXNfZmlsdGVyKHMpKSB7XG4rXHRcdFx0aWYgKGRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkcixcbitcdFx0XHRcdFx0ZncubGV2ZWwgPT0gRldfTEVWRUxfUFRFID8gZncucHRlcCA6IE5VTEwsXG4rXHRcdFx0XHRcdGZ3LmxldmVsID09IEZXX0xFVkVMX1BNRCA/IGZ3LnBtZHAgOiBOVUxMKSkge1xuK1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXHRcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0XHRcdGdvdG8gbmV4dDtcbitcdFx0XHR9XG4rXHRcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc3o7XG4rXHRcdH1cbitcbitcdFx0aWYgKGZvbGlvX29yZGVyKGZvbGlvKSBcdTAwM2UgdGFyZ2V0X29yZGVyIFx1MDAyNlx1MDAyNiBmb2xpb190cnlsb2NrKGZvbGlvKSkge1xuK1x0XHRcdGZvbGlvX2dldChmb2xpbyk7XG4rXHRcdFx0LyogRHJvcCB0aGUgcGFnZSB0YWJsZSBsb2NrIGJlZm9yZSBzcGxpdHRpbmcuICovXG4rXHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXG4rXHRcdFx0aWYgKCFzcGxpdF9mb2xpb190b19vcmRlcihmb2xpbywgdGFyZ2V0X29yZGVyKSlcbitcdFx0XHRcdGFwcGxpZWQgKz0gZm9saW9fc3o7XG4rXG4rXHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbitcdFx0XHRmb2xpb19wdXQoZm9saW8pO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGZvbGlvX3dhbGtfZW5kKFx1MDAyNmZ3LCB2bWEpO1xuK1x0XHR9XG4rXHRcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xuK25leHQ6XG4rXHRcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIGZvbGlvX3N6KSArIGZvbGlvX3N6O1xuK1x0XHRjb25kX3Jlc2NoZWQoKTtcbitcdH1cbitcbitcdG1tcHV0KG1tKTtcbitcdHJldHVybiBhcHBsaWVkO1xuK31cbitcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0XHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZSwgdW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcbkBAIC05MjYsNiArMTAzMiw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gXHRjYXNlIERBTU9TX1NUQVQ6XG4gXHRcdHJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4rXHRjYXNlIERBTU9TX1NQTElUOlxuK1x0XHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qXG4gXHRcdCAqIERBTU9TIGFjdGlvbnMgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgJ3ZhZGRyJy5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXG5pbmRleCBlY2UyNDRlNWM1Yjk1Yy4uYTYyM2MyNzEzNTVmZmUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGVcbkBAIC0xMiw2ICsxMiw3IEBAIFRFU1RfUFJPR1MgKz0gc3lzZnMuc2hcbiBURVNUX1BST0dTICs9IHN5c2ZzLnB5XG4gVEVTVF9QUk9HUyArPSBzeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zX3dzc19lc3RpbWF0aW9uLnB5XG4gVEVTVF9QUk9HUyArPSBkYW1vc19xdW90YS5weSBkYW1vc19xdW90YV9nb2FsLnB5IGRhbW9zX2FwcGx5X2ludGVydmFsLnB5XG4rVEVTVF9QUk9HUyArPSBkYW1vc19zcGxpdC5weVxuIFRFU1RfUFJPR1MgKz0gZGFtb3NfdHJpZWRfcmVnaW9ucy5weSBkYW1vbl9ucl9yZWdpb25zLnB5XG4gVEVTVF9QUk9HUyArPSBzeXNmc19yZWZyZXNoLnB5XG4gVEVTVF9QUk9HUyArPSByZWNsYWltLnNoIGxydV9zb3J0LnNoXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5XG5pbmRleCBlNmEyMjY1ZDcyMWU4Yi4uNWEwMWYzMWFkOWYyNmQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9fZGFtb25fc3lzZnMucHlcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxuQEAgLTQxOSw2ICs0MTksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgZmlsdGVycyA9IE5vbmVcbiAgICAgYXBwbHlfaW50ZXJ2YWxfdXMgPSBOb25lXG4gICAgIHRhcmdldF9uaWQgPSBOb25lXG4rICAgIHRhcmdldF9vcmRlciA9IE5vbmVcbiAgICAgZGVzdHMgPSBOb25lXG4gICAgIGlkeCA9IE5vbmVcbiAgICAgY29udGV4dCA9IE5vbmVcbkBAIC00MjksNyArNDMwLDcgQEAgY2xhc3MgRGFtb3M6XG4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3Rpb249J3N0YXQnLCBhY2Nlc3NfcGF0dGVybj1EYW1vc0FjY2Vzc1BhdHRlcm4oKSxcbiAgICAgICAgICAgICAgICAgIHF1b3RhPURhbW9zUXVvdGEoKSwgd2F0ZXJtYXJrcz1EYW1vc1dhdGVybWFya3MoKSxcbiAgICAgICAgICAgICAgICAgIGNvcmVfZmlsdGVycz1bXSwgb3BzX2ZpbHRlcnM9W10sIGZpbHRlcnM9W10sIHRhcmdldF9uaWQ9MCxcbi0gICAgICAgICAgICAgICAgIGRlc3RzPURhbW9zRGVzdHMoKSwgYXBwbHlfaW50ZXJ2YWxfdXM9MCk6XG4rICAgICAgICAgICAgICAgICB0YXJnZXRfb3JkZXI9MCwgZGVzdHM9RGFtb3NEZXN0cygpLCBhcHBseV9pbnRlcnZhbF91cz0wKTpcbiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uXG4gICAgICAgICBzZWxmLmFjY2Vzc19wYXR0ZXJuID0gYWNjZXNzX3BhdHRlcm5cbiAgICAgICAgIHNlbGYuYWNjZXNzX3BhdHRlcm4uc2NoZW1lID0gc2VsZlxuQEAgLTQ0OCw2ICs0NDksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgICAgIHNlbGYuZmlsdGVycy5zY2hlbWUgPSBzZWxmXG4gXG4gICAgICAgICBzZWxmLnRhcmdldF9uaWQgPSB0YXJnZXRfbmlkXG4rICAgICAgICBzZWxmLnRhcmdldF9vcmRlciA9IHRhcmdldF9vcmRlclxuICAgICAgICAgc2VsZi5kZXN0cyA9IGRlc3RzXG4gICAgICAgICBzZWxmLmRlc3RzLnNjaGVtZSA9IHNlbGZcbiBcbkBAIC00OTIsNiArNDk0LDExIEBAIGNsYXNzIERhbW9zOlxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgIHJldHVybiBlcnJcbiBcbisgICAgICAgIGVyciA9IHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3lzZnNfZGlyKCksICd0YXJnZXRfb3JkZXInKSwgJyVkJyAlXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0X29yZGVyKVxuKyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuKyAgICAgICAgICAgIHJldHVybiBlcnJcbitcbiAgICAgICAgIGVyciA9IHNlbGYuZGVzdHMuc3RhZ2UoKVxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgIHJldHVybiBlcnJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjA4OWZiZTBmMGQ0ZDNiXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weVxuQEAgLTAsMCArMSwxMjUgQEBcbisjIS91c3IvYmluL2VudiBweXRob24zXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNcbisjIEZ1bmN0aW9uYWwgdGVzdCBmb3IgdGhlIERBTU9TX1NQTElUIGFjdGlvbi5cbisjXG4rIyBBIGNoaWxkIHByb2Nlc3MgYWxsb2NhdGVzIGEgTUFEVl9IVUdFUEFHRS1iYWNrZWQgYW5vbnltb3VzIHJlZ2lvbiBhbmRcbisjIGZhdWx0cyBpdCBpbiBzbyB0aGF0IGl0IGlzIGJhY2tlZCBieSAobSlUSFBzLiAgVGhlIHBhcmVudCB0aGVuIHJ1bnMgYVxuKyMgREFNT04vREFNT1Mgc2NoZW1lIHdpdGggYWN0aW9uICdzcGxpdCcgYW5kIHRhcmdldF9vcmRlciAwIGFnYWluc3QgdGhlXG4rIyBjaGlsZCBhbmQgY2hlY2tzIHRoYXQgdGhlIGh1Z2UgcGFnZXMgYXJlIHNwbGl0IGludG8gYmFzZSBwYWdlcywgaS5lLiB0aGVcbisjIGNoaWxkJ3MgQW5vbkh1Z2VQYWdlcyAoYXMgcmVwb3J0ZWQgYnkgL3Byb2MvXHUwMDNjcGlkXHUwMDNlL3NtYXBzKSBkcm9wcy5cbitcbitpbXBvcnQgY3R5cGVzXG4raW1wb3J0IG9zXG4raW1wb3J0IHNpZ25hbFxuK2ltcG9ydCBzeXNcbitpbXBvcnQgdGltZVxuK1xuK2ltcG9ydCBfZGFtb25fc3lzZnNcbitcbitQTURfU0laRSA9IDIgKiAxMDI0ICogMTAyNFxuK01BRFZfSFVHRVBBR0UgPSAxNFxuK1BST1RfUkVBRF9XUklURSA9IDB4MSB8IDB4MlxuK01BUF9QUklWQVRFX0FOT04gPSAweDIgfCAweDIwXG4rUkVHSU9OX1NJWkUgPSAzMiAqIFBNRF9TSVpFXG4rXG4rZGVmIGNoaWxkX3dvcmtsb2FkKCk6XG4rICAgICcnJ0FsbG9jYXRlIGEgUE1ELWFsaWduZWQsIFRIUC1iYWNrZWQgcmVnaW9uLCBmYXVsdCBpdCBpbiwgdGhlbiBpZGxlLicnJ1xuKyAgICBsaWJjID0gY3R5cGVzLkNETEwoJ2xpYmMuc28uNicsIHVzZV9lcnJubz1UcnVlKVxuKyAgICBsaWJjLm1tYXAucmVzdHlwZSA9IGN0eXBlcy5jX3ZvaWRfcFxuKyAgICBsaWJjLm1tYXAuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBjdHlwZXMuY19zaXplX3QsIGN0eXBlcy5jX2ludCxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50LCBjdHlwZXMuY19sb25nXVxuKyAgICBsaWJjLm1hZHZpc2UuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBjdHlwZXMuY19zaXplX3QsIGN0eXBlcy5jX2ludF1cbitcbisgICAgIyBPdmVyLWFsbG9jYXRlIHNvIHRoYXQgYSBQTUQtYWxpZ25lZCB3aW5kb3cgaXMgYXZhaWxhYmxlLlxuKyAgICByYXcgPSBsaWJjLm1tYXAoTm9uZSwgUkVHSU9OX1NJWkUgKyBQTURfU0laRSwgUFJPVF9SRUFEX1dSSVRFLFxuKyAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEVfQU5PTiwgLTEsIDApXG4rICAgIGlmIHJhdyBpcyBOb25lIG9yIHJhdyA9PSBjdHlwZXMuY192b2lkX3AoLTEpLnZhbHVlOlxuKyAgICAgICAgb3MuX2V4aXQoMilcbisgICAgYmFzZSA9IChyYXcgKyBQTURfU0laRSAtIDEpIFx1MDAyNiB+KFBNRF9TSVpFIC0gMSlcbisgICAgbGliYy5tYWR2aXNlKGN0eXBlcy5jX3ZvaWRfcChiYXNlKSwgUkVHSU9OX1NJWkUsIE1BRFZfSFVHRVBBR0UpXG4rXG4rICAgIGJ1ZiA9IChjdHlwZXMuY19jaGFyICogUkVHSU9OX1NJWkUpLmZyb21fYWRkcmVzcyhiYXNlKVxuKyAgICBmb3Igb2ZmIGluIHJhbmdlKDAsIFJFR0lPTl9TSVpFLCA0MDk2KTpcbisgICAgICAgIGJ1ZltvZmZdID0gMVxuK1xuKyAgICAjIFJlYWR5OyBpZGxlIHVudGlsIHRoZSBwYXJlbnQgdGVhcnMgdXMgZG93bi5cbisgICAgc2lnbmFsLnBhdXNlKClcbitcbitkZWYgYW5vbl9odWdlX2tiKHBpZCk6XG4rICAgIHRvdGFsID0gMFxuKyAgICB0cnk6XG4rICAgICAgICB3aXRoIG9wZW4oJy9wcm9jLyVkL3NtYXBzJyAlIHBpZCkgYXMgZjpcbisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOlxuKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0Fub25IdWdlUGFnZXM6Jyk6XG4rICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSBpbnQobGluZS5zcGxpdCgpWzFdKVxuKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6XG4rICAgICAgICByZXR1cm4gLTFcbisgICAgcmV0dXJuIHRvdGFsXG4rXG4rZGVmIG1haW4oKTpcbisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCcvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9lbmFibGVkJyk6XG4rICAgICAgICBwcmludCgnU0tJUDogdHJhbnNwYXJlbnQgaHVnZXBhZ2UgaXMgbm90IGF2YWlsYWJsZScpXG4rICAgICAgICBleGl0KDApXG4rXG4rICAgIHBpZCA9IG9zLmZvcmsoKVxuKyAgICBpZiBwaWQgPT0gMDpcbisgICAgICAgIGNoaWxkX3dvcmtsb2FkKClcbisgICAgICAgIG9zLl9leGl0KDApXG4rXG4rICAgIHRyeTpcbisgICAgICAgICMgR2l2ZSB0aGUgY2hpbGQgdGltZSB0byBmYXVsdCBpbiBpdHMgaHVnZSBwYWdlcy5cbisgICAgICAgIHRpbWUuc2xlZXAoMilcbisgICAgICAgIGJlZm9yZSA9IGFub25faHVnZV9rYihwaWQpXG4rICAgICAgICBpZiBiZWZvcmUgXHUwMDNjPSAwOlxuKyAgICAgICAgICAgIHByaW50KCdTS0lQOiB3b3JrbG9hZCBkaWQgbm90IGdldCBhbnkgVEhQIChBbm9uSHVnZVBhZ2VzPSVkKSdcbisgICAgICAgICAgICAgICAgICAlIGJlZm9yZSlcbisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXG4rICAgICAgICAgICAgZXhpdCgwKVxuK1xuKyAgICAgICAgIyBTcGxpdCBldmVyeSBsYXJnZSBmb2xpbyBpbiB0aGUgdGFyZ2V0IGRvd24gdG8gb3JkZXItMCBiYXNlIHBhZ2VzLlxuKyAgICAgICAga2RhbW9uZHMgPSBfZGFtb25fc3lzZnMuS2RhbW9uZHMoW19kYW1vbl9zeXNmcy5LZGFtb25kKFxuKyAgICAgICAgICAgIGNvbnRleHRzPVtfZGFtb25fc3lzZnMuRGFtb25DdHgoXG4rICAgICAgICAgICAgICAgIG9wcz0ndmFkZHInLFxuKyAgICAgICAgICAgICAgICB0YXJnZXRzPVtfZGFtb25fc3lzZnMuRGFtb25UYXJnZXQocGlkPXBpZCldLFxuKyAgICAgICAgICAgICAgICBzY2hlbWVzPVtfZGFtb25fc3lzZnMuRGFtb3MoXG4rICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3NwbGl0JyxcbisgICAgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLFxuKyAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBldmVyeSByZWdpb24gcmVnYXJkbGVzcyBvZiBhY2Nlc3MvYWdlL3NpemUsIHNvXG4rICAgICAgICAgICAgICAgICAgICAjIHRoZSBBUk02NCBzdGFsZS1UTEIgYmxpbmQgc3BvdCBjYW5ub3QgbWFzayB0aGUgdGFyZ2V0XG4rICAgICAgICAgICAgICAgICAgICBhY2Nlc3NfcGF0dGVybj1fZGFtb25fc3lzZnMuRGFtb3NBY2Nlc3NQYXR0ZXJuKFxuKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9WzAsIDIqKjY0IC0gMV0sXG4rICAgICAgICAgICAgICAgICAgICAgICAgbnJfYWNjZXNzZXM9WzAsIDIqKjY0IC0gMV0sXG4rICAgICAgICAgICAgICAgICAgICAgICAgYWdlPVswLCAyKio2NCAtIDFdKSxcbisgICAgICAgICAgICAgICAgICAgIGFwcGx5X2ludGVydmFsX3VzPTApXSldKV0pXG4rICAgICAgICBlcnIgPSBrZGFtb25kcy5zdGFydCgpXG4rICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XG4rICAgICAgICAgICAgcHJpbnQoJ2tkYW1vbmRzIHN0YXJ0IGZhaWxlZDogJXMnICUgZXJyKVxuKyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbisgICAgICAgICAgICBleGl0KDEpXG4rXG4rICAgICAgICAjIExldCB0aGUgc2NoZW1lIGZpbmQgYW5kIHNwbGl0IHRoZSByZWdpb25zLlxuKyAgICAgICAgYWZ0ZXIgPSBiZWZvcmVcbisgICAgICAgIGZvciBfIGluIHJhbmdlKDUwKTpcbisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMilcbisgICAgICAgICAgICBhZnRlciA9IGFub25faHVnZV9rYihwaWQpXG4rICAgICAgICAgICAgaWYgYWZ0ZXIgPT0gMDpcbisgICAgICAgICAgICAgICAgYnJlYWtcbitcbisgICAgICAgIGtkYW1vbmRzLnN0b3AoKVxuKyAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKVxuK1xuKyAgICAgICAgaWYgYWZ0ZXIgXHUwMDNlPSBiZWZvcmU6XG4rICAgICAgICAgICAgcHJpbnQoJ0ZBSUw6IEFub25IdWdlUGFnZXMgZGlkIG5vdCBzaHJpbms6IGJlZm9yZT0lZCBLaUIgJ1xuKyAgICAgICAgICAgICAgICAgICdhZnRlcj0lZCBLaUInICUgKGJlZm9yZSwgYWZ0ZXIpKVxuKyAgICAgICAgICAgIGV4aXQoMSlcbisgICAgICAgIHByaW50KCdQQVNTOiBBbm9uSHVnZVBhZ2VzICVkIEtpQiAtXHUwMDNlICVkIEtpQiBhZnRlciBEQU1PU19TUExJVCdcbisgICAgICAgICAgICAgICUgKGJlZm9yZSwgYWZ0ZXIpKVxuKyAgICBmaW5hbGx5OlxuKyAgICAgICAgdHJ5OlxuKyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbisgICAgICAgIGV4Y2VwdCBQcm9jZXNzTG9va3VwRXJyb3I6XG4rICAgICAgICAgICAgcGFzc1xuK1xuK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4rICAgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHlcbmluZGV4IDNmZmEwNTRiNjM4NjdkLi40OWQzYzMxOWRmZDg5OCAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weVxuQEAgLTEzMSwxMSArMTMxLDEyIEBAIGRlZiBhc3NlcnRfc2NoZW1lX2NvbW1pdHRlZChzY2hlbWUsIGR1bXApOlxuICAgICAgICAgICAgICdodWdlcGFnZSc6IDMsXG4gICAgICAgICAgICAgJ25vaHVnZXBhZ2UnOiA0LFxuICAgICAgICAgICAgICdjb2xsYXBzZSc6IDUsXG4tICAgICAgICAgICAgJ2xydV9wcmlvJzogNixcbi0gICAgICAgICAgICAnbHJ1X2RlcHJpbyc6IDcsXG4tICAgICAgICAgICAgJ21pZ3JhdGVfaG90JzogOCxcbi0gICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogOSxcbi0gICAgICAgICAgICAnc3RhdCc6IDEwLFxuKyAgICAgICAgICAgICdzcGxpdCc6IDYsXG4rICAgICAgICAgICAgJ2xydV9wcmlvJzogNyxcbisgICAgICAgICAgICAnbHJ1X2RlcHJpbyc6IDgsXG4rICAgICAgICAgICAgJ21pZ3JhdGVfaG90JzogOSxcbisgICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogMTAsXG4rICAgICAgICAgICAgJ3N0YXQnOiAxMSxcbiAgICAgICAgICAgICB9XG4gICAgIGFzc2VydF90cnVlKGR1bXBbJ2FjdGlvbiddID09IGFjdGlvbl92YWxbc2NoZW1lLmFjdGlvbl0sICdhY3Rpb24nLCBkdW1wKVxuICAgICBhc3NlcnRfdHJ1ZShkdW1wWydhcHBseV9pbnRlcnZhbF91cyddID09IHNjaGVtZS4gYXBwbHlfaW50ZXJ2YWxfdXMsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODoxMS41NTMyMzAyOTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDgzMzQ2NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIFNwbGl0IEFjdGlvbjogRm9jdXNlZCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gd2UndmUgZ290IHRoaXMgbmV3IHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBhIGBEQU1PU19TUExJVGAgYWN0aW9uIGZvciBEQU1PTi4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyBnb2luZyB0byBiZSBzcGxpdHRpbmcgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBkZWZpbmVkIG9yZGVyLCB3aGljaCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhpcy5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUuIFRoZSBwYXRjaCB0b3VjaGVzIGRvY3VtZW50YXRpb24sIGBkYW1vbi5oYCwgY29yZSBEQU1PTiBmaWxlcywgc3lzZnMgaW50ZXJhY3Rpb24sIHZpcnR1YWwgYWRkcmVzcyBoYW5kbGluZywgYW5kIHNlbGZ0ZXN0cy4gU2VlbXMgcHJldHR5IHNwcmVhZCBvdXQuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBgbW0vZGFtb24vdmFkZHIuY2AgZmlsZTsgc3BlY2lmaWNhbGx5LCB0aGUgbmV3IGBkYW1vc192YV9zcGxpdGAgZnVuY3Rpb24gd2hpY2ggcHJlc3VtYWJseSBpcyB0aGUgY29yZSBvZiB0aGlzLiBJdCBsb29rcyBsaWtlIGl0IHVzZXMgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYCAtIHRoaXMgd2lsbCBuZWVkIHRvIGJlIHdlbGwtZnV6emVkLlxuXG5JJ20gdGhpbmtpbmcgdGhlIGtleSBhcmVhcyB0byBhbmFseXplIHdpbGwgYmUgYGRhbW9zX3ZhX3NwbGl0YCwgdGhlbiB0aGUgc3lzZnMgaW50ZXJmYWNlIGhhbmRsZXJzIGZvciB0aGUgc3BsaXQgZnVuY3Rpb25hbGl0eTogYHRhcmdldF9vcmRlcl9zdG9yZWAgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuXG5cbkNvbmZpZ3VyYXRpb24gaXMga2V5IGhlcmUuIERBTU9OIGl0c2VsZiBpcyBlbmFibGVkIGJ5IGBDT05GSUdfREFNT05gLCB0aGUgc3lzZnMgaW50ZXJmYWNlIGJ5IGBDT05GSUdfREFNT05fU1lTRlNgLCBhbmQgdGhlIHZpcnR1YWwgYWRkcmVzcyBvcGVyYXRpb25zIGJ5IGBDT05GSUdfREFNT05fVkFERFJgLiAgSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYCBpbnRlcmFjdHMgd2l0aCB0cmFuc3BhcmVudCBodWdlcGFnZXMsIHNvIEkgc2hvdWxkIGxvb2sgaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuXG5cbkFoYSEgTG9va3MgbGlrZSBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LiBUaGUgY29kZSBjaGVja3MgZm9yIGl0LiBTbyB0aGlzIGlzIGEgcGFyYW1ldGVyIG9mIHRoZSBzcGxpdCBvcGVyYXRpb24gaXRzZWxmOiBgdmFsYCBjYW4gYmUgMCBvciBiZXR3ZWVuIDIgYW5kIGBIUEFHRV9QTURfT1JERVItMWAgaWYgaHVnZXBhZ2VzIGFyZSBlbmFibGVkLiBJZiBub3QsIG9ubHkgMCBpcyBhbGxvd2VkLlxuXG5SaWdodCwgSSdsbCBuZWVkIHRvIHJ1biBhIGBnaXQgZ3JlcGAgb24gdGhpcyB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3MgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZSBmdXp6ZXIncyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc2OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjE4LjYzNjU3OTUwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTY3MzQ0ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRBTU9OX1NZU0ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0PTM3PXN5c2ZzIEludGVyZmFjZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3QtMzktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3Q6NDA6REFNT04gc3lzZnMgaW50ZXJmYWNlIGlzIGJ1aWx0IHdoZW4gYGBDT05GSUdfREFNT05fU1lTRlNgYCBpcyBkZWZpbmVkLiAgSXRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC00MS1jcmVhdGVzIG11bHRpcGxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyB1bmRlciBpdHMgc3lzZnMgZGlyZWN0b3J5LFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0PTM1PXN5c2Zz5o6l5Y+jXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0LTM2LT09PT09PT09PVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdDozNzpEQU1PTueahHN5c2Zz5o6l5Y+j5piv5Zyo5a6a5LmJIGBgQ09ORklHX0RBTU9OX1NZU0ZTYGAg5pe25bu656uL55qE44CC5a6D5Zyo5YW2c3lzZnPnm67lvZXkuIvliJvlu7rlpJpcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3QtMzgt5Liq55uu5b2V5ZKM5paH5Lu277yMIGBgXFx1MDAzY3N5c2ZzXFx1MDAzZS9rZXJuZWwvbW0vZGFtb24vYGAg44CC5L2g5Y+v5Lul6YCa6L+H5a+56K+l55uu5b2V5LiL55qE5paH5Lu26L+b6KGM5YaZ5YWl5ZKMXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3Q9MzU9c3lzZnPmjqXlj6NcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3QtMzYtPT09PT09PT09XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfVFcvYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0OjM3OkRBTU9O55qEc3lzZnPmjqXlj6PmmK/lnKjlrprnvqkgYGBDT05GSUdfREFNT05fU1lTRlNgYCDmmYLlu7rnq4vnmoTjgILlroPlnKjlhbZzeXNmc+ebrumMhOS4i+WJteW7uuWkmlxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zOC3lgIvnm67pjITlkozmlofku7bvvIwgYGBcXHUwMDNjc3lzZnNcXHUwMDNlL2tlcm5lbC9tbS9kYW1vbi9gYCDjgILkvaDlj6/ku6XpgJrpgY7lsI3oqbLnm67pjITkuIvnmoTmlofku7bpgLLooYzlr6vlhaXlkoxcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubW0vZGFtb24vS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIERBTU9OX1NZU0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG5tbS9kYW1vbi9LY29uZmlnLTc5LVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9NYWtlZmlsZT01PW9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcbm1tL2RhbW9uL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVxcdCs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXFxubW0vZGFtb24vTWFrZWZpbGUtNy1vYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xODI5PWVudW0gZGFtb25fc3lzZnNfY21kIHtcXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzA6XFx0LyogQERBTU9OX1NZU0ZTX0NNRF9PTjogVHVybiB0aGUga2RhbW9uZCBvbi4gKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzE6XFx0REFNT05fU1lTRlNfQ01EX09OLFxcbm1tL2RhbW9uL3N5c2ZzLmM6MTgzMjpcXHQvKiBAREFNT05fU1lTRlNfQ01EX09GRjogVHVybiB0aGUga2RhbW9uZCBvZmYuICovXFxubW0vZGFtb24vc3lzZnMuYzoxODMzOlxcdERBTU9OX1NZU0ZTX0NNRF9PRkYsXFxubW0vZGFtb24vc3lzZnMuYzoxODM0OlxcdC8qIEBEQU1PTl9TWVNGU19DTURfQ09NTUlUOiBVcGRhdGUga2RhbW9uZCBpbnB1dHMuICovXFxubW0vZGFtb24vc3lzZnMuYzoxODM1OlxcdERBTU9OX1NZU0ZTX0NNRF9DT01NSVQsXFxubW0vZGFtb24vc3lzZnMuYy0xODM2LVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODM3OlxcdCAqIEBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6IENvbW1pdCB0aGUgcXVvdGEgZ29hbHNcXG5tbS9kYW1vbi9zeXNmcy5jLTE4MzgtXFx0ICogdG8gREFNT04uXFxubW0vZGFtb24vc3lzZnMuYy0xODM5LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg0MDpcXHREQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFMsXFxubW0vZGFtb24vc3lzZnMuYy0xODQxLVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODQyOlxcdCAqIEBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfU1RBVFM6IFVwZGF0ZSBzY2hlbWUgc3RhdHMgc3lzZnNcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDMtXFx0ICogZmlsZXMuXFxubW0vZGFtb24vc3lzZnMuYy0xODQ0LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg0NTpcXHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfU1RBVFMsXFxubW0vZGFtb24vc3lzZnMuYy0xODQ2LVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODQ3OlxcdCAqIEBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfVFJJRURfQllURVM6IFVwZGF0ZVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg0OC1cXHQgKiB0cmllZF9yZWdpb25zL3RvdGFsX2J5dGVzIHN5c2ZzIGZpbGVzIGZvciBlYWNoIHNjaGVtZS5cXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDktXFx0ICovXFxubW0vZGFtb24vc3lzZnMuYzoxODUwOlxcdERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTEtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4NTI6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9SRUdJT05TOiBVcGRhdGUgc2NoZW1lcyB0cmllZFxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg1My1cXHQgKiByZWdpb25zXFxubW0vZGFtb24vc3lzZnMuYy0xODU0LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg1NTpcXHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfVFJJRURfUkVHSU9OUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTYtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4NTc6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9DTEVBUl9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6IENsZWFyIHNjaGVtZXMgdHJpZWRcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTgtXFx0ICogcmVnaW9uc1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTg1OS1cXHQgKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjE4NjA6XFx0REFNT05fU1lTRlNfQ01EX0NMRUFSX1NDSEVNRVNfVFJJRURfUkVHSU9OUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjEtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4NjI6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOiBVcGRhdGUgdGhlXFxubW0vZGFtb24vc3lzZnMuYy0xODYzLVxcdCAqIGVmZmVjdGl2ZSBzaXplIHF1b3RhIG9mIHRoZSBzY2hlbWUgaW4gYnl0ZXMuXFxubW0vZGFtb24vc3lzZnMuYy0xODY0LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg2NTpcXHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjYtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4Njc6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfVFVORURfSU5URVJWQUxTOiBVcGRhdGUgdGhlIHR1bmVkIG1vbml0b3JpbmdcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjgtXFx0ICogaW50ZXJ2YWxzLlxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg2OS1cXHQgKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzA6XFx0REFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFMsXFxubW0vZGFtb24vc3lzZnMuYy0xODcxLVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODcyOlxcdCAqIEBOUl9EQU1PTl9TWVNGU19DTURTOiBUb3RhbCBudW1iZXIgb2YgREFNT04gc3lzZnMgY29tbWFuZHMuXFxubW0vZGFtb24vc3lzZnMuYy0xODczLVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg3NDpcXHROUl9EQU1PTl9TWVNGU19DTURTLFxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg3NS19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xODkxPXN0YXRpYyBzc2l6ZV90IHN0YXRlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwOC1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlc1xcXFxuXFxcIiwgcnVubmluZyA/XFxubW0vZGFtb24vc3lzZnMuYzoxOTA5OlxcdFxcdFxcdGRhbW9uX3N5c2ZzX2NtZF9zdHJzW0RBTU9OX1NZU0ZTX0NNRF9PTl0gOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkxMDpcXHRcXHRcXHRkYW1vbl9zeXNmc19jbWRfc3Ryc1tEQU1PTl9TWVNGU19DTURfT0ZGXSk7XFxubW0vZGFtb24vc3lzZnMuYy0xOTExLX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjM2Mj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMzY0LXtcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNjU6XFx0aWYgKGNtZCAhPSBEQU1PTl9TWVNGU19DTURfT0ZGIFxcdTAwMjZcXHUwMDI2IGtkYW1vbmQtXFx1MDAzZWNvbnRleHRzLVxcdTAwM2VuciAhPSAxKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2OC1cXHRzd2l0Y2ggKGNtZCkge1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2OTpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9PTjpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzAtXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oa2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzcxOlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX09GRjpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzItXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKGtkYW1vbmQpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MzpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVQ6XFxubW0vZGFtb24vc3lzZnMuYy0yMzc0LVxcdFxcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3NS1cXHRcXHRcXHRcXHRkYW1vbl9zeXNmc19jb21taXRfaW5wdXQsIGtkYW1vbmQpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3NjpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzctXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzktXFx0XFx0XFx0XFx0a2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzgwOlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1NUQVRTOlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4MS1cXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzODItXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfdXBkX3NjaGVtZXNfc3RhdHMsIGtkYW1vbmQpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM4MzpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUzpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzODQtXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoa2RhbW9uZCwgdHJ1ZSk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzg1OlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6XFxubW0vZGFtb24vc3lzZnMuYy0yMzg2LVxcdFxcdHJldHVybiBkYW1vbl9zeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zKGtkYW1vbmQsIGZhbHNlKTtcXG5tbS9kYW1vbi9zeXNmcy5jOjIzODc6XFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ0xFQVJfU0NIRU1FU19UUklFRF9SRUdJT05TOlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4OC1cXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4OS1cXHRcXHRcXHRrZGFtb25kLVxcdTAwM2Vjb250ZXh0cy1cXHUwMDNlY29udGV4dHNfYXJyWzBdLVxcdTAwM2VzY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy5jOjIzOTA6XFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUzpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzOTEtXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzOTMtXFx0XFx0XFx0XFx0a2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzk0OlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6XFxubW0vZGFtb24vc3lzZnMuYy0yMzk1LVxcdFxcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yNDAyPXN0YXRpYyBzc2l6ZV90IHN0YXRlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTI0MTEtXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG5tbS9kYW1vbi9zeXNmcy5jOjI0MTI6XFx0Zm9yIChjbWQgPSAwOyBjbWQgXFx1MDAzYyBOUl9EQU1PTl9TWVNGU19DTURTOyBjbWQrKykge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjQxMy1cXHRcXHRpZiAoc3lzZnNfc3RyZXEoYnVmLCBkYW1vbl9zeXNmc19jbWRfc3Ryc1tjbWRdKSkge1xcbi0tXFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnPTEzPUNPTkZJR19TWVNGUz15XFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnOjE0OkNPTkZJR19EQU1PTl9TWVNGUz15XFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnOjE1OkNPTkZJR19EQU1PTl9TWVNGU19LVU5JVF9URVNUPXlcXG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWctMTYtXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTUtXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtNy1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjg6I2lmbmRlZiBfREFNT05fU1lTRlNfVEVTVF9IXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo5OiNkZWZpbmUgX0RBTU9OX1NZU0ZTX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtMTAtXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oPTEwNj1rdW5pdF90ZXN0X3N1aXRlKGRhbW9uX3N5c2ZzX3Rlc3Rfc3VpdGUpO1xcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtMTA3LVxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0Lmg6MTA4OiNlbmRpZiAvKiBfREFNT05fU1lTRlNfVEVTVF9IICovXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMDktXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDoxMTA6I2VuZGlmIC8qIENPTkZJR19EQU1PTl9TWVNGU19LVU5JVF9URVNUICovXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9MT1DT05GSUdfREFNT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZzoyOkNPTkZJR19EQU1PTl9TWVNGUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnLTMtQ09ORklHX0RBTU9OX1BBRERSPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzg6MjQuODAzOTMwNTcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1MjIzOTc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkNvbmZpZyBDaGVja3MgYW5kIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHNldCBvZiBjb25maWd1cmF0aW9ucyDigJMgYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuIFNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgc2V0IG9mIERBTU9OLXJlbGF0ZWQgZmVhdHVyZXMuIEJlZm9yZSBJIGdvIHRvbyBmYXIsIGxldCdzIGp1c3QgbWFrZSBzdXJlIGBEQU1PTl9WQUREUmAgaXMgYWN0dWFsbHkgYSB2YWxpZCBjb25maWcgb3B0aW9uLiBHb3R0YSB2ZXJpZnkgdGhlc2UgdGhpbmdzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvbXBsZXggZGVwZW5kZW5jaWVzLiBBIHF1aWNrIHNhbml0eSBjaGVjayBub3cgY2FuIHNhdmUgYSBsb3Qgb2YgaGVhZGFjaGVzIGxhdGVyIG9uIGRvd24gdGhlIGxpbmUuIFdlIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSBkb3duIGEgcmFiYml0IGhvbGUgZm9yIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IGV4aXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ3NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjI4LjI1NjE3MjQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDY0NDM2NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05fVkFERFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz00Nz1jb25maWcgREFNT05fUEFERFJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbm1tL2RhbW9uL0tjb25maWc6NTg6XFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxubW0vZGFtb24vS2NvbmZpZy01OS1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vTWFrZWZpbGU9Mz1vYmoteVxcdFxcdFxcdFxcdDo9IGNvcmUub1xcbm1tL2RhbW9uL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0RBTU9OX1ZBRERSKVxcdCs9IG9wcy1jb21tb24ubyB2YWRkci5vXFxubW0vZGFtb24vTWFrZWZpbGUtNS1vYmotJChDT05GSUdfREFNT05fUEFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cXG4tLVxcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZz04PUNPTkZJR19QQUdFX0lETEVfRkxBRz15XFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnOjk6Q09ORklHX0RBTU9OX1ZBRERSPXlcXG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWc6MTA6Q09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1Q9eVxcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZy0xMS1cXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD00MDM9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00MTEtXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQxMjpcXHQvKiBEQU1PTl9PUFNfVkFERFIgaXMgcmVnaXN0ZXJlZCBvbmx5IGlmIENPTkZJR19EQU1PTl9WQUREUiBpcyBzZXQgKi9cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDEzLVxcdGlmICghZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoREFNT05fT1BTX1ZBRERSKSkge1xcbi0tXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC01LVxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTctXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1ZBRERSX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6OTojZGVmaW5lIF9EQU1PTl9WQUREUl9URVNUX0hcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTEwLVxcbi0tXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaD0yNzc9a3VuaXRfdGVzdF9zdWl0ZShkYW1vbl90ZXN0X3N1aXRlKTtcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTI3OC1cXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oOjI3OTojZW5kaWYgLyogX0RBTU9OX1ZBRERSX1RFU1RfSCAqL1xcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMjgwLVxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6MjgxOiNlbmRpZlxcdC8qIENPTkZJR19EQU1PTl9WQUREUl9LVU5JVF9URVNUICovXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTIwLVxcbm1tL2RhbW9uL3ZhZGRyLmM6MjE6I2lmZGVmIENPTkZJR19EQU1PTl9WQUREUl9LVU5JVF9URVNUXFxubW0vZGFtb24vdmFkZHIuYy0yMi0jdW5kZWYgREFNT05fTUlOX1JFR0lPTl9TWlxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTU9Y29uZmlnIFNBTVBMRV9EQU1PTl9XU1NFXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3Igd29ya2luZyBzZXQgc2l6ZSBlc3RpbWF0aW9uXFxcIlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgREFNT05fVkFERFJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctOC1cXHRoZWxwXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIGFjY2Vzcy1hd2FyZSBwcm9hY3RpdmUgcmVjbGFtYXRpb25cXFwiXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgREFNT05fVkFERFJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjAtXFx0aGVscFxcbi0tXFxudG9vbHMvdGVzdGluZy9rdW5pdC9jb25maWdzL2FsbF90ZXN0cy5jb25maWc9Mzk9Q09ORklHX0RBTU9OPXlcXG50b29scy90ZXN0aW5nL2t1bml0L2NvbmZpZ3MvYWxsX3Rlc3RzLmNvbmZpZzo0MDpDT05GSUdfREFNT05fVkFERFI9eVxcbnRvb2xzL3Rlc3Rpbmcva3VuaXQvY29uZmlncy9hbGxfdGVzdHMuY29uZmlnLTQxLUNPTkZJR19EQU1PTl9QQUREUj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9Mz1DT05GSUdfREFNT05fUEFERFI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZzo0OkNPTkZJR19EQU1PTl9WQUREUj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnLTUtQ09ORklHX0RBTU9OX1JFQ0xBSU09eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODozMy40MDI2MjIwMjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTIzOTAzNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gY29uZmlybWluZyB0aGF0IGBEQU1PTl9WQUREUmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHRoYXQncyBnb29kIHRvIGtub3cuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBhcmUgYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGFsc28gdGhlIGV2ZXItcHJlc2VudCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIGFsd2F5cyBuZWVkIHRvIGNvbnNpZGVyIFRIUCBpbiB0aGVzZSBzY2VuYXJpb3MuXG5cbk5vdywgbGV0J3MgdHJhY2UgdGhlIHBhdGggdG8gYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGFjY2Vzc2libGUuIFJpZ2h0LCBzbyBgZGFtb3NfdmFfc3BsaXRgIGdldHMgY2FsbGVkIGZyb20gYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgd2hlbiB0aGUgYWN0aW9uIGlzIGBEQU1PU19TUExJVGAuIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIGlzIHN1YnNlcXVlbnRseSBjYWxsZWQgYnkgYGRhbW9uX3ZhX2FwcGx5X3RocmVlX3JlZ2lvbnNgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBkYW1vbl92YV9hcHBseV9zY2hlbWVzYCwgdGhlbiBieSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgYW5kIGZpbmFsbHksIHRoYXTigJlzIGludm9rZWQgYnkgYGtkYW1vbmRfZm5gLiBBbmQgZnJvbSB0aGVyZSwgaXQgYXBwZWFycyB0aGlzIGVudGlyZSBzZXF1ZW5jZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBFeGNlbGxlbnQsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuXG5cblRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGFyZTogYGRhbW9zX3ZhX3NwbGl0YCwgYHRhcmdldF9vcmRlcl9zdG9yZWAsIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLiBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHkgdGhlIGB0YXJnZXRfb3JkZXJgIGZ1bmN0aW9ucywgdG8gY29uZmlybSB0aGVpciBiZWhhdmlvci4gSSdsbCBmaW5kIHRoZW0gaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTE4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjM4LjMyNjUyNzk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDk0MTM4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFyZ2V0X29yZGVyX3N0b3JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNjU2PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NjU6c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjQzLjMzNTk0ODQ5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzA1OTQwNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBhIERBTU9TIFZpcnR1YWwgQWRkcmVzcyBTcGxpdCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BsaXQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgREFNT1MgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgZGFtb3NfdmFfc3BsaXRgIHdpdGhpbiBgbW0vZGFtb24vdmFkZHIuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgbG9naWMgZm9yIGhvdyB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGlzIHNlZ21lbnRlZCBhbmQgaGFuZGxlZCB0aGVyZS4gSSdsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIGNvZGUgZGV0ZXJtaW5lcyB0aGUgc3BsaXR0aW5nIHBvaW50cyBhbmQgdGhlIGltcGxpY2F0aW9ucyBpdCBoYXMgb24gbWVtb3J5IG1hbmFnZW1lbnQuIFRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiBmb3IgREFNT04ncyBvcGVyYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXQgY29tcGxldGVseSBpcyBwYXJhbW91bnQuIExldCdzIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Njc3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzg6NDYuMzY2NTQ1NTYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ4MjM0ODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3ZhX3NwbGl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3ZhZGRyLmM9ODc1PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05MDAtLypcXG5tbS9kYW1vbi92YWRkci5jOjkwMTogKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxcbm1tL2RhbW9uL3ZhZGRyLmMtOTAyLSAqIHVzaW5nIHRoZSBleGlzdGluZyBzcGxpdF9mb2xpb190b19vcmRlcigpLlxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05MTAtICovXFxubW0vZGFtb24vdmFkZHIuYzo5MTE6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbm1tL2RhbW9uL3ZhZGRyLmMtOTEyLVxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9MTAwNT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy0xMDM1LVxcdGNhc2UgREFNT1NfU1BMSVQ6XFxubW0vZGFtb24vdmFkZHIuYzoxMDM2OlxcdFxcdHJldHVybiBkYW1vc192YV9zcGxpdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbm1tL2RhbW9uL3ZhZGRyLmMtMTAzNy1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODo1MS4wMTQ3ODcwNzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5Mjg5MTQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY291cGxlIG9mIGtleSBhZGRpdGlvbnM6IGEgbmV3IHN5c2ZzIGZpbGUgY2FsbGVkIGB0YXJnZXRfb3JkZXJgLCBhbmQgYSBuZXcgYWN0aW9uLCBgc3BsaXRgLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGRhbW9zX3ZhX3NwbGl0YCBmdW5jdGlvbiwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIFZNQXMgYW5kIHNwbGl0dGluZyBmb2xpb3MuIEZyb20gYSBjdXJzb3J5IGdsYW5jZSwgaXQgYXBwZWFycyBmdW5jdGlvbmFsbHkgc291bmQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZ1enppbmc7IGl0J3MgdGhlIGtpbmQgb2YgY29kZSB0aGF0J3MgcmlwZSBmb3IgZmluZGluZyBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5JIHNob3VsZCBhbHNvIG5vdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHdpbGwgYmUgbmVlZGVkOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fVkFERFJgLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSdsbCBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZCBmb3IgbXkgdGVzdGluZyBlbnZpcm9ubWVudCBzZXR1cC5cblxuVGhlIG1vc3QgaW1wb3J0YW50IHN5bWJvbHMgZm9yIG1lIHRvIGZvY3VzIG9uIGhlcmUgYXJlIGBkYW1vc192YV9zcGxpdGAsIG9idmlvdXNseSwgYW5kIHRoZW4gdGhlIHN5c2ZzIGZpbGUgaGFuZGxlcnMgYHRhcmdldF9vcmRlcl9zdG9yZWAgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuIFRob3NlIHdpbGwgcHJvdmlkZSBjcnVjaWFsIGNvbnRyb2wgb3ZlciB0aGUgbmV3IGJlaGF2aW9yLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBxdWlja2x5IHNjYW4gdGhlIGNvZGUgdG8gdmVyaWZ5IHRoYXQgYGRhbW9zX3ZhX3NwbGl0YCBpcyB0aGUgb25seSBhZGRlZCBmdW5jdGlvbi4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTkyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjU1LjIwNzY4MDc4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ5NzQ4NTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljLipkYW1vc192YV9zcGxpdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTg3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtOTEwLSAqL1xcbm1tL2RhbW9uL3ZhZGRyLmM6OTExOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG5tbS9kYW1vbi92YWRkci5jLTkxMi1cXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM5OjAyLjcwNTE3MTAyMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY1MDQzMjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEknbSBhYm91dCB0byBkbzpcblxuKipDaGVja2luZyBmb3IgUmVsYXRlZCBGdW5jdGlvbmFsaXR5IGluIHRoZSBLZXJuZWwncyBzeXNmcyBTY2hlbWVzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZyBpbiB0aGlzIGtlcm5lbCBtb2R1bGUsIHNwZWNpZmljYWxseSBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IGlmIGFueSBhZGRpdGlvbmFsIGZ1bmN0aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhhdCBmaWxlLlwiIEkga25vdyB0aGUgY29kZWJhc2UgcmVhc29uYWJseSB3ZWxsLCBidXQgaXQncyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGRvdWJsZS1jaGVjaywgZXNwZWNpYWxseSBhZnRlciBhIHBlcmlvZCBhd2F5LCBvciBpZiBzaWduaWZpY2FudCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHJlY2VudGx5LiBJdCdzIGFib3V0IGVuc3VyaW5nIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgb3IgZ29pbmcgZGVlcGVyIGludG8gYW55IG9uZSBhcmVhLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBpbmZsdWVuY2UgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3Mgb3ZlcmFsbCBiZWhhdmlvciBvciByZWxhdGUgdG8gd2hhdCBJJ20gd29ya2luZyBvbiByaWdodCBub3cuIEEgcXVpY2sgc2NhbiB3aWxsIHByZXZlbnQgc3VycHJpc2VzIGRvd24gdGhlIHJvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzM3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzk6MDUuNzcwMjE3MjQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjM1OTA4OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMuKnRhcmdldF9vcmRlcl9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NDQ9c3RhdGljIHNzaXplX3QgdGFyZ2V0X25pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjU1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjU2OnN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjU3LVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NjU6c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjcwMT1zdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3MDMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MDQ6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzA1LVxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM5OjEzLjAwNjEzNTA1N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTU1MzEwNTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIEZvbGlvIFNwbGl0dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgc29tZSBpbnRlcmVzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gREFNT04sIHNwZWNpZmljYWxseSB0aGUgYWJpbGl0eSB0byBzcGxpdCBsYXJnZSBmb2xpb3MgZG93biB0byBhIHNwZWNpZmllZCBvcmRlciB2aWEgYSBuZXcgYERBTU9TX1NQTElUYCBhY3Rpb24uIEkgc2VlIHRocmVlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBkYW1vc192YV9zcGxpdGAsIGB0YXJnZXRfb3JkZXJfc3RvcmVgLCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC4gRnJvbSBhIGhpZ2gtbGV2ZWwgcGVyc3BlY3RpdmUsIEkgdW5kZXJzdGFuZCB0aGlzIG1lYW5zIHdlJ3JlIGFkZGluZyBib3RoIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAqYW5kKiBhIG5ldyBzeXNmcyBpbnRlcmZhY2UgdG8gY29udHJvbCBpdC4gVGhlIGNvcmUgbG9naWMgZm9yIHRoZSBzcGxpdCBpdHNlbGYgc2VlbXMgdG8gYmUgd2l0aGluIGBkYW1vc192YV9zcGxpdGAsIGxldmVyYWdpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC5cblxuR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogKipGVVpaSU5HISoqIFRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gcmlnb3JvdXNseSB0ZXN0IHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMsIHBhcnRpY3VsYXJseSBpbiBgZGFtb3NfdmFfc3BsaXRgLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIG5ldyBzeXNmcyBpbnRlcmZhY2UsIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLiBFZGdlIGNhc2VzIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBoZXJlOiB3aGF0IGhhcHBlbnMgd2l0aCB2ZXJ5IGxhcmdlIGZvbGlvcywgbWluaW1hbCB0YXJnZXQgb3JkZXJzLCBvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBUaGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25zIG9mIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFsbCBtYWtlIHNlbnNlIGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCBzaG91bGQgYmUgY29uc2lkZXJlZCBkdXJpbmcgdGVzdGluZywgdG8gZXN0YWJsaXNoIHRoZSBjb25kaXRpb25zIGluIHdoaWNoIHRoaXMgZmVhdHVyZSB3aWxsIGJlIHVzZWQgYW5kIGhvdyB0aGV5IG1heSBlZmZlY3QgdGhlIHRlc3RpbmcgcHJvY2Vzcy4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdGhhdCBJIHdpbGwgZm9jdXMgb24gZHVyaW5nIGludmVzdGlnYXRpb24gYXJlOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC5cblxuSSdtIHJlYWR5IHRvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcCwgc28gSSB3aWxsIG5vdyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzQxLCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozOToyMC45NjE0NDk1MjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE3MzkxOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcInRhcmdldF9vcmRlcl9zdG9yZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3Nob3dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IERBTU9OIGFjdGlvbiBgREFNT1NfU1BMSVRgIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIGEgc3BlY2lmaWVkIG9yZGVyLiBJdCBhZGRzIHN5c2ZzIGludGVyZmFjZXMgdG8gY29uZmlndXJlIHRoZSB0YXJnZXQgb3JkZXIgYW5kIGltcGxlbWVudHMgdGhlIHNwbGl0dGluZyBsb2dpYyBpbiBgZGFtb3NfdmFfc3BsaXRgIHVzaW5nIGBzcGxpdF9mb2xpb190b19vcmRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIGFuZCBzeXNmcyBpbnRlcmZhY2UgaGFuZGxlIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcInRhcmdldF9vcmRlcl9zdG9yZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3Nob3dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IERBTU9OIGFjdGlvbiBgREFNT1NfU1BMSVRgIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIGEgc3BlY2lmaWVkIG9yZGVyLiBJdCBhZGRzIHN5c2ZzIGludGVyZmFjZXMgdG8gY29uZmlndXJlIHRoZSB0YXJnZXQgb3JkZXIgYW5kIGltcGxlbWVudHMgdGhlIHNwbGl0dGluZyBsb2dpYyBpbiBgZGFtb3NfdmFfc3BsaXRgIHVzaW5nIGBzcGxpdF9mb2xpb190b19vcmRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIGFuZCBzeXNmcyBpbnRlcmZhY2UgaGFuZGxlIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowb4bgp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-20 03:08:14 +0000 UTC FinishedAt: 2026-07-20 03:39:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "96b0655ca9aabdd99e7c8cdedfb315c6b5c91180", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "96b0655ca9aabdd99e7c8cdedfb315c6b5c91180", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DAMON", "DAMON_SYSFS", "DAMON_VADDR", "TRANSPARENT_HUGEPAGE" ], "series_id": "b4eaa51a-d262-4f96-b606-22c96707c768" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "damos_va_split", "target_order_store", "target_order_show" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zaG93JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgREFNT04gYWN0aW9uIGBEQU1PU19TUExJVGAgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIuIEl0IGFkZHMgc3lzZnMgaW50ZXJmYWNlcyB0byBjb25maWd1cmUgdGhlIHRhcmdldCBvcmRlciBhbmQgaW1wbGVtZW50cyB0aGUgc3BsaXR0aW5nIGxvZ2ljIGluIGBkYW1vc192YV9zcGxpdGAgdXNpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZSBoYW5kbGUgZWRnZSBjYXNlcyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3YWRmODg0NDExNDkyZTJkNzAyMDBhMWQ0YTViMmFlNTcxYTU0ZGI4XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjAgMDM6Mzg6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuaW5kZXggOTA3YTUwNGZiNjRjNTQuLmVlOGUyNjBhNjMxY2YyIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG5AQCAtMjY1LDYgJiM0MzsyNjUsMTMgQEAgQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuIERlc2NyaXB0aW9uOlx0QWN0aW9uJiMzOTtzIHRhcmdldCBOVU1BIG5vZGUgaWQuICBTdXBwb3J0ZWQgYnkgb25seSByZWxldmFudFxuIFx0XHRhY3Rpb25zLlxuIFxuJiM0MztXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2Uvc2NoZW1lcy9cdTAwM2NTXHUwMDNlL3RhcmdldF9vcmRlclxuJiM0MztEYXRlOlx0XHRKdWwgMjAyNlxuJiM0MztDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG4mIzQzO0Rlc2NyaXB0aW9uOlx0VGFyZ2V0IGZvbGlvIG9yZGVyIGZvciB0aGUgYGBzcGxpdGBgIGFjdGlvbi4gIExhcmdlIGZvbGlvcyBpblxuJiM0MztcdFx0dGhlIHRhcmdldCByZWdpb24gYXJlIHNwbGl0IGRvd24gdG8gdGhpcyBvcmRlci4gIFZhbGlkIHZhbHVlc1xuJiM0MztcdFx0YXJlIDAgKG9yZGVyLTAgYmFzZSBwYWdlcykgYW5kIDIuLkhQQUdFX1BNRF9PUkRFUi0xLlxuJiM0MztcbiBXaGF0Olx0XHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cdTAwM2NLXHUwMDNlL2NvbnRleHRzL1x1MDAzY0NcdTAwM2Uvc2NoZW1lcy9cdTAwM2NTXHUwMDNlL2FwcGx5X2ludGVydmFsX3VzXG4gRGF0ZTpcdFx0U2VwIDIwMjNcbiBDb250YWN0Olx0U0ogUGFyayBcdTAwM2NzakBrZXJuZWwub3JnXHUwMDNlXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG5pbmRleCBhZWQ2Y2IxY2Y0ODMxMC4uODdhODAxOTU0YjFiMzAgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuQEAgLTU0OSw2ICYjNDM7NTQ5LDExIEBAIHRoYXQgc3VwcG9ydHMgZWFjaCBhY3Rpb24gYXJlIGFzIGJlbG93LlxuICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW5cbiAgICBUUkFOU1BBUkVOVF9IVUdFUEFHRSBpcyBkaXNhYmxlZCwgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBhY3Rpb24gd2lsbCBqdXN0XG4gICAgZmFpbC5cbiYjNDM7IC0gYGBzcGxpdGBgOiBTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gZG93biB0byB0aGUgb3JkZXIgc3BlY2lmaWVkXG4mIzQzOyAgIGJ5IHRoZSBzY2hlbWUmIzM5O3MgYGB0YXJnZXRfb3JkZXJgYCAoYGAwYGAgZm9yIG9yZGVyLTAgYmFzZSBwYWdlcywgb3JcbiYjNDM7ICAgYGAyLi5IUEFHRV9QTURfT1JERVItMWBgKS4gIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9uc1xuJiM0MzsgICBzZXQuIFdoZW4gVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgYWN0aW9uXG4mIzQzOyAgIHdpbGwganVzdCBmYWlsLlxuICAtIGBgbHJ1X3ByaW9gYDogUHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC5cbiAgLSBgYGxydV9kZXByaW9gYDogRGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTEwLDYgJiM0MzsxMTAsNyBAQCBzdHJ1Y3QgZGFtb25fdGFyZ2V0IHtcbiAgKiBAREFNT1NfSFVHRVBBR0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX0hVR0VQQUdFLlxuICAqIEBEQU1PU19OT0hVR0VQQUdFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLlxuICAqIEBEQU1PU19DT0xMQVBTRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfQ09MTEFQU0UuXG4mIzQzOyAqIEBEQU1PU19TUExJVDpcdFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiB0byBhIHNtYWxsZXIgb3JkZXIuXG4gICogQERBTU9TX0xSVV9QUklPOlx0UHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICogQERBTU9TX0xSVV9ERVBSSU86XHREZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19NSUdSQVRFX0hPVDogIE1pZ3JhdGUgdGhlIHJlZ2lvbnMgcHJpb3JpdGl6aW5nIHdhcm1lciByZWdpb25zLlxuQEAgLTEzMCw2ICYjNDM7MTMxLDcgQEAgZW51bSBkYW1vc19hY3Rpb24ge1xuIFx0REFNT1NfSFVHRVBBR0UsXG4gXHREQU1PU19OT0hVR0VQQUdFLFxuIFx0REFNT1NfQ09MTEFQU0UsXG4mIzQzO1x0REFNT1NfU1BMSVQsXG4gXHREQU1PU19MUlVfUFJJTyxcbiBcdERBTU9TX0xSVV9ERVBSSU8sXG4gXHREQU1PU19NSUdSQVRFX0hPVCxcbkBAIC01ODIsMTAgJiM0Mzs1ODQsMTUgQEAgc3RydWN0IGRhbW9zIHtcbiBcdHN0cnVjdCBkYW1vc19xdW90YSBxdW90YTtcbiBcdHN0cnVjdCBkYW1vc193YXRlcm1hcmtzIHdtYXJrcztcbiBcdHVuaW9uIHtcbi1cdFx0c3RydWN0IHtcbi1cdFx0XHRpbnQgdGFyZ2V0X25pZDtcbi1cdFx0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyBtaWdyYXRlX2Rlc3RzO1xuLVx0XHR9O1xuJiM0MztcdFx0aW50IHRhcmdldF9uaWQ7XG4mIzQzO1x0XHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyBtaWdyYXRlX2Rlc3RzO1xuJiM0MztcdFx0LypcbiYjNDM7XHRcdCAqIEBvcmRlcjogdGFyZ2V0IGZvbGlvIG9yZGVyIGZvciBEQU1PU19TUExJVC5cbiYjNDM7XHRcdCAqIFNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIHRoaXMgb3JkZXIuICAwIGZvclxuJiM0MztcdFx0ICogb3JkZXItMCBiYXNlIHBhZ2VzLCAyLi5IUEFHRV9QTURfT1JERVItMSBmb3JcbiYjNDM7XHRcdCAqIHNtYWxsZXIgbVRIUC4gIE9yZGVyLTEgaXMgcmVqZWN0ZWQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHVuc2lnbmVkIGludCBvcmRlcjtcbiBcdH07XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIGNvcmVfZmlsdGVycztcbiBcdHN0cnVjdCBsaXN0X2hlYWQgb3BzX2ZpbHRlcnM7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXG5pbmRleCA4MDZhNjdkMDJhNmU5MC4uMzk0YzYyNDU1YWQ1NmIgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL2NvcmUuY1xuQEAgLTY5Myw2ICYjNDM7NjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHRzY2hlbWUtXHUwMDNlcGF0dGVybiA9ICpwYXR0ZXJuO1xuIFx0c2NoZW1lLVx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcbiYjNDM7XHRzY2hlbWUtXHUwMDNlb3JkZXIgPSAwO1xuIFx0c2NoZW1lLVx1MDAzZWFwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7XG4gXHQvKlxuIFx0ICogbmV4dF9hcHBseV9zaXMgd2lsbCBiZSBzZXQgd2hlbiBrZGFtb25kIHN0YXJ0cy4gIFdoaWxlIGtkYW1vbmQgaXNcbkBAIC0xNDQ2LDYgJiM0MzsxNDQ3LDcgQEAgc3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxuIFxuIFx0ZHN0LVx1MDAzZXBhdHRlcm4gPSBzcmMtXHUwMDNlcGF0dGVybjtcbiBcdGRzdC1cdTAwM2VhY3Rpb24gPSBzcmMtXHUwMDNlYWN0aW9uO1xuJiM0MztcdGRzdC1cdTAwM2VvcmRlciA9IHNyYy1cdTAwM2VvcmRlcjtcbiBcdGRzdC1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IHNyYy1cdTAwM2VhcHBseV9pbnRlcnZhbF91cztcbiBcbiBcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YShcdTAwMjZkc3QtXHUwMDNlcXVvdGEsIFx1MDAyNnNyYy1cdTAwM2VxdW90YSk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG5pbmRleCAzMmY0OTVhOTZiMTdhOC4uNzI1ZWQ4MWNjZjZjYWMgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuQEAgLTQsNyAmIzQzOzQsOSBAQFxuICAqL1xuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9tbS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbnVtYS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N5c2ZzLWNvbW1vbi5oXCYjMzQ7XG4gXG5AQCAtMjI2MCw2ICYjNDM7MjI2Miw3IEBAIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xuIFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcbiBcdGludCB0YXJnZXRfbmlkO1xuJiM0MztcdHVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7XG4gXHRzdHJ1Y3QgZGFtb3Nfc3lzZnNfZGVzdHMgKmRlc3RzO1xuIH07XG4gXG5AQCAtMjI5Myw2ICYjNDM7MjI5NiwxMCBAQCBzdGF0aWMgc3RydWN0IGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lIGRhbW9zX3N5c2ZzX2FjdGlvbl9uYW1lc1tdID0ge1xuIFx0XHQuYWN0aW9uID0gREFNT1NfQ09MTEFQU0UsXG4gXHRcdC5uYW1lID0gXCYjMzQ7Y29sbGFwc2VcJiMzNDssXG4gXHR9LFxuJiM0MztcdHtcbiYjNDM7XHRcdC5hY3Rpb24gPSBEQU1PU19TUExJVCxcbiYjNDM7XHRcdC5uYW1lID0gXCYjMzQ7c3BsaXRcJiMzNDssXG4mIzQzO1x0fSxcbiBcdHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0xSVV9QUklPLFxuIFx0XHQubmFtZSA9IFwmIzM0O2xydV9wcmlvXCYjMzQ7LFxuQEAgLTIzMjYsNiAmIzQzOzIzMzMsNyBAQCBzdGF0aWMgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqZGFtb25fc3lzZnNfc2NoZW1lX2FsbG9jKFxuIFx0c2NoZW1lLVx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcbiBcdHNjaGVtZS1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IGFwcGx5X2ludGVydmFsX3VzO1xuIFx0c2NoZW1lLVx1MDAzZXRhcmdldF9uaWQgPSBOVU1BX05PX05PREU7XG4mIzQzO1x0c2NoZW1lLVx1MDAzZXRhcmdldF9vcmRlciA9IDA7XG4gXHRyZXR1cm4gc2NoZW1lO1xuIH1cbiBcbkBAIC0yNjQ1LDYgJiM0MzsyNjUzLDQwIEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXHRyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7XG4gfVxuIFxuJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbiYjNDM7XHRcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXG4mIzQzO1x0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyKTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuJiM0MztcdFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxuJiM0MztcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdmFsO1xuJiM0MztcdGludCBlcnI7XG4mIzQzO1xuJiM0MztcdGVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcdTAwMjZ2YWwpO1xuJiM0MztcdGlmIChlcnIpXG4mIzQzO1x0XHRyZXR1cm4gZXJyO1xuJiM0MztcbiYjNDM7I2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuJiM0MztcdC8qIFZhbGlkIHNwbGl0IHRhcmdldHM6IDAgKG9yZGVyLTAgYmFzZSBwYWdlcykgb3IgMi4uSFBBR0VfUE1EX09SREVSLTEuICovXG4mIzQzO1x0aWYgKHZhbCAhPSAwIFx1MDAyNlx1MDAyNiAodmFsIFx1MDAzYyAyIHx8IHZhbCBcdTAwM2U9IEhQQUdFX1BNRF9PUkRFUikpXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7I2Vsc2VcbiYjNDM7XHRpZiAodmFsICE9IDApXG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7I2VuZGlmXG4mIzQzO1xuJiM0MztcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSB2YWw7XG4mIzQzO1x0cmV0dXJuIGNvdW50O1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuIHtcbiBcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7XG5AQCAtMjY1OSwxMCAmIzQzOzI3MDEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9XG4gc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyID1cbiBcdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X25pZCwgMDYwMCk7XG4gXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cbiYjNDM7XHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XG4mIzQzO1xuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcbiBcdFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcbiYjNDM7XHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIuYXR0cixcbiBcdE5VTEwsXG4gfTtcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XG5AQCAtMzAxMSw2ICYjNDM7MzA1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcbiBcdGlmICghc2NoZW1lKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbiYjNDM7XHRzY2hlbWUtXHUwMDNlb3JkZXIgPSBzeXNmc19zY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyO1xuJiM0MztcbiBcdGVyciA9IGRhbW9zX3N5c2ZzX2FkZF9xdW90YV9zY29yZShzeXNmc19xdW90YXMtXHUwMDNlZ29hbHMsIFx1MDAyNnNjaGVtZS1cdTAwM2VxdW90YSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdGRhbW9uX2Rlc3Ryb3lfc2NoZW1lKHNjaGVtZSk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmNcbmluZGV4IGQxMGI4MDQyYWRiNWJhLi5hODYwNzQ0ODU4NGQ1NSAxMDA2NDRcbi0tLSBhL21tL2RhbW9uL3ZhZGRyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmNcbkBAIC02LDYgJiM0Mzs2LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIFwmIzM0O2RhbW9uLXZhOiBcJiMzNDsgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaGlnaG1lbS5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2V0bGIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tdV9ub3RpZmllci5oXHUwMDNlXG5AQCAtODk2LDYgJiM0Mzs4OTcsMTExIEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxuIFx0cmV0dXJuIDA7XG4gfVxuIFxuJiM0MzsvKlxuJiM0MzsgKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxuJiM0MzsgKiB1c2luZyB0aGUgZXhpc3Rpbmcgc3BsaXRfZm9saW9fdG9fb3JkZXIoKS5cbiYjNDM7ICpcbiYjNDM7ICogTG9ja2luZzogZm9saW9fd2Fsa19zdGFydCgpIHJldHVybnMgdGhlIGZvbGlvIHdpdGggdGhlIHBhZ2UgdGFibGUgbG9ja1xuJiM0MzsgKiBoZWxkLiAgc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBtdXN0IG5vdCBydW4gdW5kZXIgdGhlIHBhZ2UgdGFibGUgbG9jayxcbiYjNDM7ICogc28gd2UgcGluIHRoZSBmb2xpbyAocmVmZXJlbmNlICYjNDM7IGxvY2spLCBlbmQgdGhlIHdhbGsgdG8gZHJvcCB0aGUgcGFnZVxuJiM0MzsgKiB0YWJsZSBsb2NrLCBhbmQgc3BsaXQgd2hpbGUgaG9sZGluZyBvbmx5IG1tYXBfcmVhZF9sb2NrLlxuJiM0MzsgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHJldHVybnMgLUVCVVNZIGZvciBhIHJhY2VkIG9yIHBpbm5lZCBmb2xpbztcbiYjNDM7ICogd2Ugc2tpcCBzdWNoIGZvbGlvcy5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbiYjNDM7XHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbiYjNDM7XHRcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy1cdTAwM2VvcmRlcjtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFkZHIgPSBBTElHTl9ET1dOKHItXHUwMDNlYXIuc3RhcnQsIFBBR0VfU0laRSk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBlbmQgPSByLVx1MDAzZWFyLmVuZDtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwO1xuJiM0MztcdHN0cnVjdCBtbV9zdHJ1Y3QgKm1tO1xuJiM0MztcbiYjNDM7XHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuJiM0MztcdGlmICghbW0pXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XG4mIzQzO1x0d2hpbGUgKGFkZHIgXHUwMDNjIGVuZCkge1xuJiM0MztcdFx0c3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWE7XG4mIzQzO1x0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuJiM0MztcdFx0c3RydWN0IGZvbGlvX3dhbGsgZnc7XG4mIzQzO1x0XHR1bnNpZ25lZCBsb25nIGZvbGlvX3N6ID0gMDtcbiYjNDM7XG4mIzQzO1x0XHRpZiAobW1hcF9yZWFkX2xvY2tfa2lsbGFibGUobW0pKVxuJiM0MztcdFx0XHRicmVhaztcbiYjNDM7XG4mIzQzO1x0XHR2bWEgPSB2bWFfbG9va3VwKG1tLCBhZGRyKTtcbiYjNDM7XHRcdGlmICghdm1hKSB7XG4mIzQzO1x0XHRcdC8qIFNraXAgdGhlIGdhcCB0byB0aGUgbmV4dCBWTUEsIGlmIGFueS4gKi9cbiYjNDM7XHRcdFx0dm1hID0gZmluZF92bWEobW0sIGFkZHIpO1xuJiM0MztcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdFx0aWYgKCF2bWEgfHwgdm1hLVx1MDAzZXZtX3N0YXJ0IFx1MDAzZT0gZW5kKVxuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRhZGRyID0gdm1hLVx1MDAzZXZtX3N0YXJ0O1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQvKiBGb2xpb3MgaW4gdGhlc2UgVk1BcyBhcmUgbm90IG91ciBidXNpbmVzcy4gKi9cbiYjNDM7XHRcdGlmICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IChWTV9IVUdFVExCIHwgVk1fTUlYRURNQVApKSB7XG4mIzQzO1x0XHRcdGFkZHIgPSB2bWEtXHUwMDNldm1fZW5kO1xuJiM0MztcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdFx0Y29udGludWU7XG4mIzQzO1x0XHR9XG4mIzQzO1xuJiM0MztcdFx0Zm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KFx1MDAyNmZ3LCB2bWEsIGFkZHIsIDApO1xuJiM0MztcdFx0aWYgKCFmb2xpbykge1xuJiM0MztcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7XHRcdFx0YWRkciAmIzQzOz0gUEFHRV9TSVpFO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRmb2xpb19zeiA9IGZvbGlvX3NpemUoZm9saW8pO1xuJiM0MztcbiYjNDM7XHRcdC8qXG4mIzQzO1x0XHQgKiBGb3IgZmlsZS1iYWNrZWQgZm9saW9zLCBAdGFyZ2V0X29yZGVyIG1heSBiZSBiZWxvdyB0aGVcbiYjNDM7XHRcdCAqIGZpbGVzeXN0ZW0mIzM5O3MgbWluaW11bSBmb2xpbyBvcmRlciAobWFwcGluZ19taW5fZm9saW9fb3JkZXIoKSkuXG4mIzQzO1x0XHQgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHdpbGwgc2ltcGx5IGZhaWwgaW4gdGhhdCBjYXNlIGFuZFxuJiM0MztcdFx0ICogd2Ugc2tpcCB0aGUgZm9saW8uICBUaGlzIGlzIGEgc2FmZSBuby1vcDsgZnV0dXJlIHdvcmsgY2FuXG4mIzQzO1x0XHQgKiBhZGp1c3QgdGFyZ2V0X29yZGVyIHVwd2FyZCBsaWtlIHNwbGl0X2h1Z2VfcGFnZXNfaW5fcGlkKClcbiYjNDM7XHRcdCAqIGRvZXMgd2hlbiBhIHNwZWNpZmljIGZpbGVzeXN0ZW0gbmVlZHMgaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XG4mIzQzO1x0XHQvKiBIb25vdXIgdGhlIHNjaGVtZSYjMzk7cyBvcGVyYXRpb25zLWxheWVyIGZpbHRlcnMuICovXG4mIzQzO1x0XHRpZiAoZGFtb3Nfb3BzX2hhc19maWx0ZXIocykpIHtcbiYjNDM7XHRcdFx0aWYgKGRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkcixcbiYjNDM7XHRcdFx0XHRcdGZ3LmxldmVsID09IEZXX0xFVkVMX1BURSA/IGZ3LnB0ZXAgOiBOVUxMLFxuJiM0MztcdFx0XHRcdFx0ZncubGV2ZWwgPT0gRldfTEVWRUxfUE1EID8gZncucG1kcCA6IE5VTEwpKSB7XG4mIzQzO1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1x0XHRcdFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XG4mIzQzO1x0XHRcdFx0Z290byBuZXh0O1xuJiM0MztcdFx0XHR9XG4mIzQzO1x0XHRcdCpzel9maWx0ZXJfcGFzc2VkICYjNDM7PSBmb2xpb19zejtcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRpZiAoZm9saW9fb3JkZXIoZm9saW8pIFx1MDAzZSB0YXJnZXRfb3JkZXIgXHUwMDI2XHUwMDI2IGZvbGlvX3RyeWxvY2soZm9saW8pKSB7XG4mIzQzO1x0XHRcdGZvbGlvX2dldChmb2xpbyk7XG4mIzQzO1x0XHRcdC8qIERyb3AgdGhlIHBhZ2UgdGFibGUgbG9jayBiZWZvcmUgc3BsaXR0aW5nLiAqL1xuJiM0MztcdFx0XHRmb2xpb193YWxrX2VuZChcdTAwMjZmdywgdm1hKTtcbiYjNDM7XG4mIzQzO1x0XHRcdGlmICghc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIHRhcmdldF9vcmRlcikpXG4mIzQzO1x0XHRcdFx0YXBwbGllZCAmIzQzOz0gZm9saW9fc3o7XG4mIzQzO1xuJiM0MztcdFx0XHRmb2xpb191bmxvY2soZm9saW8pO1xuJiM0MztcdFx0XHRmb2xpb19wdXQoZm9saW8pO1xuJiM0MztcdFx0fSBlbHNlIHtcbiYjNDM7XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbiYjNDM7bmV4dDpcbiYjNDM7XHRcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIGZvbGlvX3N6KSAmIzQzOyBmb2xpb19zejtcbiYjNDM7XHRcdGNvbmRfcmVzY2hlZCgpO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bW1wdXQobW0pO1xuJiM0MztcdHJldHVybiBhcHBsaWVkO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsXG4gXHRcdHN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKVxuQEAgLTkyNiw2ICYjNDM7MTAzMiw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gXHRjYXNlIERBTU9TX1NUQVQ6XG4gXHRcdHJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4mIzQzO1x0Y2FzZSBEQU1PU19TUExJVDpcbiYjNDM7XHRcdHJldHVybiBkYW1vc192YV9zcGxpdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xuIFx0ZGVmYXVsdDpcbiBcdFx0LypcbiBcdFx0ICogREFNT1MgYWN0aW9ucyB0aGF0IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBieSAmIzM5O3ZhZGRyJiMzOTsuXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZVxuaW5kZXggZWNlMjQ0ZTVjNWI5NWMuLmE2MjNjMjcxMzU1ZmZlIDEwMDY0NFxuLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGVcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXG5AQCAtMTIsNiAmIzQzOzEyLDcgQEAgVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnMuc2hcbiBURVNUX1BST0dTICYjNDM7PSBzeXNmcy5weVxuIFRFU1RfUFJPR1MgJiM0Mzs9IHN5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnNfd3NzX2VzdGltYXRpb24ucHlcbiBURVNUX1BST0dTICYjNDM7PSBkYW1vc19xdW90YS5weSBkYW1vc19xdW90YV9nb2FsLnB5IGRhbW9zX2FwcGx5X2ludGVydmFsLnB5XG4mIzQzO1RFU1RfUFJPR1MgJiM0Mzs9IGRhbW9zX3NwbGl0LnB5XG4gVEVTVF9QUk9HUyAmIzQzOz0gZGFtb3NfdHJpZWRfcmVnaW9ucy5weSBkYW1vbl9ucl9yZWdpb25zLnB5XG4gVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnNfcmVmcmVzaC5weVxuIFRFU1RfUFJPR1MgJiM0Mzs9IHJlY2xhaW0uc2ggbHJ1X3NvcnQuc2hcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9fZGFtb25fc3lzZnMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9fZGFtb25fc3lzZnMucHlcbmluZGV4IGU2YTIyNjVkNzIxZThiLi41YTAxZjMxYWQ5ZjI2ZCAxMDA2NDRcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5XG5AQCAtNDE5LDYgJiM0Mzs0MTksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgZmlsdGVycyA9IE5vbmVcbiAgICAgYXBwbHlfaW50ZXJ2YWxfdXMgPSBOb25lXG4gICAgIHRhcmdldF9uaWQgPSBOb25lXG4mIzQzOyAgICB0YXJnZXRfb3JkZXIgPSBOb25lXG4gICAgIGRlc3RzID0gTm9uZVxuICAgICBpZHggPSBOb25lXG4gICAgIGNvbnRleHQgPSBOb25lXG5AQCAtNDI5LDcgJiM0Mzs0MzAsNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjdGlvbj0mIzM5O3N0YXQmIzM5OywgYWNjZXNzX3BhdHRlcm49RGFtb3NBY2Nlc3NQYXR0ZXJuKCksXG4gICAgICAgICAgICAgICAgICBxdW90YT1EYW1vc1F1b3RhKCksIHdhdGVybWFya3M9RGFtb3NXYXRlcm1hcmtzKCksXG4gICAgICAgICAgICAgICAgICBjb3JlX2ZpbHRlcnM9W10sIG9wc19maWx0ZXJzPVtdLCBmaWx0ZXJzPVtdLCB0YXJnZXRfbmlkPTAsXG4tICAgICAgICAgICAgICAgICBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxuJiM0MzsgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLCBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxuICAgICAgICAgc2VsZi5hY3Rpb24gPSBhY3Rpb25cbiAgICAgICAgIHNlbGYuYWNjZXNzX3BhdHRlcm4gPSBhY2Nlc3NfcGF0dGVyblxuICAgICAgICAgc2VsZi5hY2Nlc3NfcGF0dGVybi5zY2hlbWUgPSBzZWxmXG5AQCAtNDQ4LDYgJiM0Mzs0NDksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgICAgIHNlbGYuZmlsdGVycy5zY2hlbWUgPSBzZWxmXG4gXG4gICAgICAgICBzZWxmLnRhcmdldF9uaWQgPSB0YXJnZXRfbmlkXG4mIzQzOyAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIgPSB0YXJnZXRfb3JkZXJcbiAgICAgICAgIHNlbGYuZGVzdHMgPSBkZXN0c1xuICAgICAgICAgc2VsZi5kZXN0cy5zY2hlbWUgPSBzZWxmXG4gXG5AQCAtNDkyLDYgJiM0Mzs0OTQsMTEgQEAgY2xhc3MgRGFtb3M6XG4gICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XG4gICAgICAgICAgICAgcmV0dXJuIGVyclxuIFxuJiM0MzsgICAgICAgIGVyciA9IHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3lzZnNfZGlyKCksICYjMzk7dGFyZ2V0X29yZGVyJiMzOTspLCAmIzM5OyVkJiMzOTsgJVxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIpXG4mIzQzOyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuJiM0MzsgICAgICAgICAgICByZXR1cm4gZXJyXG4mIzQzO1xuICAgICAgICAgZXJyID0gc2VsZi5kZXN0cy5zdGFnZSgpXG4gICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XG4gICAgICAgICAgICAgcmV0dXJuIGVyclxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vZGFtb3Nfc3BsaXQucHlcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uMDg5ZmJlMGYwZDRkM2Jcbi0tLSAvZGV2L251bGxcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5XG5AQCAtMCwwICYjNDM7MSwxMjUgQEBcbiYjNDM7IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM1xuJiM0MzsjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzOyNcbiYjNDM7IyBGdW5jdGlvbmFsIHRlc3QgZm9yIHRoZSBEQU1PU19TUExJVCBhY3Rpb24uXG4mIzQzOyNcbiYjNDM7IyBBIGNoaWxkIHByb2Nlc3MgYWxsb2NhdGVzIGEgTUFEVl9IVUdFUEFHRS1iYWNrZWQgYW5vbnltb3VzIHJlZ2lvbiBhbmRcbiYjNDM7IyBmYXVsdHMgaXQgaW4gc28gdGhhdCBpdCBpcyBiYWNrZWQgYnkgKG0pVEhQcy4gIFRoZSBwYXJlbnQgdGhlbiBydW5zIGFcbiYjNDM7IyBEQU1PTi9EQU1PUyBzY2hlbWUgd2l0aCBhY3Rpb24gJiMzOTtzcGxpdCYjMzk7IGFuZCB0YXJnZXRfb3JkZXIgMCBhZ2FpbnN0IHRoZVxuJiM0MzsjIGNoaWxkIGFuZCBjaGVja3MgdGhhdCB0aGUgaHVnZSBwYWdlcyBhcmUgc3BsaXQgaW50byBiYXNlIHBhZ2VzLCBpLmUuIHRoZVxuJiM0MzsjIGNoaWxkJiMzOTtzIEFub25IdWdlUGFnZXMgKGFzIHJlcG9ydGVkIGJ5IC9wcm9jL1x1MDAzY3BpZFx1MDAzZS9zbWFwcykgZHJvcHMuXG4mIzQzO1xuJiM0MztpbXBvcnQgY3R5cGVzXG4mIzQzO2ltcG9ydCBvc1xuJiM0MztpbXBvcnQgc2lnbmFsXG4mIzQzO2ltcG9ydCBzeXNcbiYjNDM7aW1wb3J0IHRpbWVcbiYjNDM7XG4mIzQzO2ltcG9ydCBfZGFtb25fc3lzZnNcbiYjNDM7XG4mIzQzO1BNRF9TSVpFID0gMiAqIDEwMjQgKiAxMDI0XG4mIzQzO01BRFZfSFVHRVBBR0UgPSAxNFxuJiM0MztQUk9UX1JFQURfV1JJVEUgPSAweDEgfCAweDJcbiYjNDM7TUFQX1BSSVZBVEVfQU5PTiA9IDB4MiB8IDB4MjBcbiYjNDM7UkVHSU9OX1NJWkUgPSAzMiAqIFBNRF9TSVpFXG4mIzQzO1xuJiM0MztkZWYgY2hpbGRfd29ya2xvYWQoKTpcbiYjNDM7ICAgICYjMzk7JiMzOTsmIzM5O0FsbG9jYXRlIGEgUE1ELWFsaWduZWQsIFRIUC1iYWNrZWQgcmVnaW9uLCBmYXVsdCBpdCBpbiwgdGhlbiBpZGxlLiYjMzk7JiMzOTsmIzM5O1xuJiM0MzsgICAgbGliYyA9IGN0eXBlcy5DRExMKCYjMzk7bGliYy5zby42JiMzOTssIHVzZV9lcnJubz1UcnVlKVxuJiM0MzsgICAgbGliYy5tbWFwLnJlc3R5cGUgPSBjdHlwZXMuY192b2lkX3BcbiYjNDM7ICAgIGxpYmMubW1hcC5hcmd0eXBlcyA9IFtjdHlwZXMuY192b2lkX3AsIGN0eXBlcy5jX3NpemVfdCwgY3R5cGVzLmNfaW50LFxuJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50LCBjdHlwZXMuY19sb25nXVxuJiM0MzsgICAgbGliYy5tYWR2aXNlLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3ZvaWRfcCwgY3R5cGVzLmNfc2l6ZV90LCBjdHlwZXMuY19pbnRdXG4mIzQzO1xuJiM0MzsgICAgIyBPdmVyLWFsbG9jYXRlIHNvIHRoYXQgYSBQTUQtYWxpZ25lZCB3aW5kb3cgaXMgYXZhaWxhYmxlLlxuJiM0MzsgICAgcmF3ID0gbGliYy5tbWFwKE5vbmUsIFJFR0lPTl9TSVpFICYjNDM7IFBNRF9TSVpFLCBQUk9UX1JFQURfV1JJVEUsXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEVfQU5PTiwgLTEsIDApXG4mIzQzOyAgICBpZiByYXcgaXMgTm9uZSBvciByYXcgPT0gY3R5cGVzLmNfdm9pZF9wKC0xKS52YWx1ZTpcbiYjNDM7ICAgICAgICBvcy5fZXhpdCgyKVxuJiM0MzsgICAgYmFzZSA9IChyYXcgJiM0MzsgUE1EX1NJWkUgLSAxKSBcdTAwMjYgfihQTURfU0laRSAtIDEpXG4mIzQzOyAgICBsaWJjLm1hZHZpc2UoY3R5cGVzLmNfdm9pZF9wKGJhc2UpLCBSRUdJT05fU0laRSwgTUFEVl9IVUdFUEFHRSlcbiYjNDM7XG4mIzQzOyAgICBidWYgPSAoY3R5cGVzLmNfY2hhciAqIFJFR0lPTl9TSVpFKS5mcm9tX2FkZHJlc3MoYmFzZSlcbiYjNDM7ICAgIGZvciBvZmYgaW4gcmFuZ2UoMCwgUkVHSU9OX1NJWkUsIDQwOTYpOlxuJiM0MzsgICAgICAgIGJ1ZltvZmZdID0gMVxuJiM0MztcbiYjNDM7ICAgICMgUmVhZHk7IGlkbGUgdW50aWwgdGhlIHBhcmVudCB0ZWFycyB1cyBkb3duLlxuJiM0MzsgICAgc2lnbmFsLnBhdXNlKClcbiYjNDM7XG4mIzQzO2RlZiBhbm9uX2h1Z2Vfa2IocGlkKTpcbiYjNDM7ICAgIHRvdGFsID0gMFxuJiM0MzsgICAgdHJ5OlxuJiM0MzsgICAgICAgIHdpdGggb3BlbigmIzM5Oy9wcm9jLyVkL3NtYXBzJiMzOTsgJSBwaWQpIGFzIGY6XG4mIzQzOyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6XG4mIzQzOyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJiMzOTtBbm9uSHVnZVBhZ2VzOiYjMzk7KTpcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0b3RhbCAmIzQzOz0gaW50KGxpbmUuc3BsaXQoKVsxXSlcbiYjNDM7ICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjpcbiYjNDM7ICAgICAgICByZXR1cm4gLTFcbiYjNDM7ICAgIHJldHVybiB0b3RhbFxuJiM0MztcbiYjNDM7ZGVmIG1haW4oKTpcbiYjNDM7ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygmIzM5Oy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2VuYWJsZWQmIzM5Oyk6XG4mIzQzOyAgICAgICAgcHJpbnQoJiMzOTtTS0lQOiB0cmFuc3BhcmVudCBodWdlcGFnZSBpcyBub3QgYXZhaWxhYmxlJiMzOTspXG4mIzQzOyAgICAgICAgZXhpdCgwKVxuJiM0MztcbiYjNDM7ICAgIHBpZCA9IG9zLmZvcmsoKVxuJiM0MzsgICAgaWYgcGlkID09IDA6XG4mIzQzOyAgICAgICAgY2hpbGRfd29ya2xvYWQoKVxuJiM0MzsgICAgICAgIG9zLl9leGl0KDApXG4mIzQzO1xuJiM0MzsgICAgdHJ5OlxuJiM0MzsgICAgICAgICMgR2l2ZSB0aGUgY2hpbGQgdGltZSB0byBmYXVsdCBpbiBpdHMgaHVnZSBwYWdlcy5cbiYjNDM7ICAgICAgICB0aW1lLnNsZWVwKDIpXG4mIzQzOyAgICAgICAgYmVmb3JlID0gYW5vbl9odWdlX2tiKHBpZClcbiYjNDM7ICAgICAgICBpZiBiZWZvcmUgXHUwMDNjPSAwOlxuJiM0MzsgICAgICAgICAgICBwcmludCgmIzM5O1NLSVA6IHdvcmtsb2FkIGRpZCBub3QgZ2V0IGFueSBUSFAgKEFub25IdWdlUGFnZXM9JWQpJiMzOTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgJSBiZWZvcmUpXG4mIzQzOyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbiYjNDM7ICAgICAgICAgICAgZXhpdCgwKVxuJiM0MztcbiYjNDM7ICAgICAgICAjIFNwbGl0IGV2ZXJ5IGxhcmdlIGZvbGlvIGluIHRoZSB0YXJnZXQgZG93biB0byBvcmRlci0wIGJhc2UgcGFnZXMuXG4mIzQzOyAgICAgICAga2RhbW9uZHMgPSBfZGFtb25fc3lzZnMuS2RhbW9uZHMoW19kYW1vbl9zeXNmcy5LZGFtb25kKFxuJiM0MzsgICAgICAgICAgICBjb250ZXh0cz1bX2RhbW9uX3N5c2ZzLkRhbW9uQ3R4KFxuJiM0MzsgICAgICAgICAgICAgICAgb3BzPSYjMzk7dmFkZHImIzM5OyxcbiYjNDM7ICAgICAgICAgICAgICAgIHRhcmdldHM9W19kYW1vbl9zeXNmcy5EYW1vblRhcmdldChwaWQ9cGlkKV0sXG4mIzQzOyAgICAgICAgICAgICAgICBzY2hlbWVzPVtfZGFtb25fc3lzZnMuRGFtb3MoXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSYjMzk7c3BsaXQmIzM5OyxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfb3JkZXI9MCxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIG1hdGNoIGV2ZXJ5IHJlZ2lvbiByZWdhcmRsZXNzIG9mIGFjY2Vzcy9hZ2Uvc2l6ZSwgc29cbiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIHRoZSBBUk02NCBzdGFsZS1UTEIgYmxpbmQgc3BvdCBjYW5ub3QgbWFzayB0aGUgdGFyZ2V0XG4mIzQzOyAgICAgICAgICAgICAgICAgICAgYWNjZXNzX3BhdHRlcm49X2RhbW9uX3N5c2ZzLkRhbW9zQWNjZXNzUGF0dGVybihcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1bMCwgMioqNjQgLSAxXSxcbiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgbnJfYWNjZXNzZXM9WzAsIDIqKjY0IC0gMV0sXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgICAgIGFnZT1bMCwgMioqNjQgLSAxXSksXG4mIzQzOyAgICAgICAgICAgICAgICAgICAgYXBwbHlfaW50ZXJ2YWxfdXM9MCldKV0pXSlcbiYjNDM7ICAgICAgICBlcnIgPSBrZGFtb25kcy5zdGFydCgpXG4mIzQzOyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuJiM0MzsgICAgICAgICAgICBwcmludCgmIzM5O2tkYW1vbmRzIHN0YXJ0IGZhaWxlZDogJXMmIzM5OyAlIGVycilcbiYjNDM7ICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKVxuJiM0MzsgICAgICAgICAgICBleGl0KDEpXG4mIzQzO1xuJiM0MzsgICAgICAgICMgTGV0IHRoZSBzY2hlbWUgZmluZCBhbmQgc3BsaXQgdGhlIHJlZ2lvbnMuXG4mIzQzOyAgICAgICAgYWZ0ZXIgPSBiZWZvcmVcbiYjNDM7ICAgICAgICBmb3IgXyBpbiByYW5nZSg1MCk6XG4mIzQzOyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yKVxuJiM0MzsgICAgICAgICAgICBhZnRlciA9IGFub25faHVnZV9rYihwaWQpXG4mIzQzOyAgICAgICAgICAgIGlmIGFmdGVyID09IDA6XG4mIzQzOyAgICAgICAgICAgICAgICBicmVha1xuJiM0MztcbiYjNDM7ICAgICAgICBrZGFtb25kcy5zdG9wKClcbiYjNDM7ICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXG4mIzQzO1xuJiM0MzsgICAgICAgIGlmIGFmdGVyIFx1MDAzZT0gYmVmb3JlOlxuJiM0MzsgICAgICAgICAgICBwcmludCgmIzM5O0ZBSUw6IEFub25IdWdlUGFnZXMgZGlkIG5vdCBzaHJpbms6IGJlZm9yZT0lZCBLaUIgJiMzOTtcbiYjNDM7ICAgICAgICAgICAgICAgICAgJiMzOTthZnRlcj0lZCBLaUImIzM5OyAlIChiZWZvcmUsIGFmdGVyKSlcbiYjNDM7ICAgICAgICAgICAgZXhpdCgxKVxuJiM0MzsgICAgICAgIHByaW50KCYjMzk7UEFTUzogQW5vbkh1Z2VQYWdlcyAlZCBLaUIgLVx1MDAzZSAlZCBLaUIgYWZ0ZXIgREFNT1NfU1BMSVQmIzM5O1xuJiM0MzsgICAgICAgICAgICAgICUgKGJlZm9yZSwgYWZ0ZXIpKVxuJiM0MzsgICAgZmluYWxseTpcbiYjNDM7ICAgICAgICB0cnk6XG4mIzQzOyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbiYjNDM7ICAgICAgICBleGNlcHQgUHJvY2Vzc0xvb2t1cEVycm9yOlxuJiM0MzsgICAgICAgICAgICBwYXNzXG4mIzQzO1xuJiM0MztpZiBfX25hbWVfXyA9PSAmIzM5O19fbWFpbl9fJiMzOTs6XG4mIzQzOyAgICBtYWluKClcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XG5pbmRleCAzZmZhMDU0YjYzODY3ZC4uNDlkM2MzMTlkZmQ4OTggMTAwNzU1XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weVxuJiM0MzsmIzQzOyYjNDM7IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHlcbkBAIC0xMzEsMTEgJiM0MzsxMzEsMTIgQEAgZGVmIGFzc2VydF9zY2hlbWVfY29tbWl0dGVkKHNjaGVtZSwgZHVtcCk6XG4gICAgICAgICAgICAgJiMzOTtodWdlcGFnZSYjMzk7OiAzLFxuICAgICAgICAgICAgICYjMzk7bm9odWdlcGFnZSYjMzk7OiA0LFxuICAgICAgICAgICAgICYjMzk7Y29sbGFwc2UmIzM5OzogNSxcbi0gICAgICAgICAgICAmIzM5O2xydV9wcmlvJiMzOTs6IDYsXG4tICAgICAgICAgICAgJiMzOTtscnVfZGVwcmlvJiMzOTs6IDcsXG4tICAgICAgICAgICAgJiMzOTttaWdyYXRlX2hvdCYjMzk7OiA4LFxuLSAgICAgICAgICAgICYjMzk7bWlncmF0ZV9jb2xkJiMzOTs6IDksXG4tICAgICAgICAgICAgJiMzOTtzdGF0JiMzOTs6IDEwLFxuJiM0MzsgICAgICAgICAgICAmIzM5O3NwbGl0JiMzOTs6IDYsXG4mIzQzOyAgICAgICAgICAgICYjMzk7bHJ1X3ByaW8mIzM5OzogNyxcbiYjNDM7ICAgICAgICAgICAgJiMzOTtscnVfZGVwcmlvJiMzOTs6IDgsXG4mIzQzOyAgICAgICAgICAgICYjMzk7bWlncmF0ZV9ob3QmIzM5OzogOSxcbiYjNDM7ICAgICAgICAgICAgJiMzOTttaWdyYXRlX2NvbGQmIzM5OzogMTAsXG4mIzQzOyAgICAgICAgICAgICYjMzk7c3RhdCYjMzk7OiAxMSxcbiAgICAgICAgICAgICB9XG4gICAgIGFzc2VydF90cnVlKGR1bXBbJiMzOTthY3Rpb24mIzM5O10gPT0gYWN0aW9uX3ZhbFtzY2hlbWUuYWN0aW9uXSwgJiMzOTthY3Rpb24mIzM5OywgZHVtcClcbiAgICAgYXNzZXJ0X3RydWUoZHVtcFsmIzM5O2FwcGx5X2ludGVydmFsX3VzJiMzOTtdID09IHNjaGVtZS4gYXBwbHlfaW50ZXJ2YWxfdXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7REFNT04mIzM0OywKICAgICYjMzQ7REFNT05fU1lTRlMmIzM0OywKICAgICYjMzQ7REFNT05fVkFERFImIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkYW1vc192YV9zcGxpdCYjMzQ7LAogICAgJiMzNDt0YXJnZXRfb3JkZXJfc3RvcmUmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3Nob3cmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBEQU1PTiBhY3Rpb24gYERBTU9TX1NQTElUYCB0byBzcGxpdCBsYXJnZSBmb2xpb3MgZG93biB0byBhIHNwZWNpZmllZCBvcmRlci4gSXQgYWRkcyBzeXNmcyBpbnRlcmZhY2VzIHRvIGNvbmZpZ3VyZSB0aGUgdGFyZ2V0IG9yZGVyIGFuZCBpbXBsZW1lbnRzIHRoZSBzcGxpdHRpbmcgbG9naWMgaW4gYGRhbW9zX3ZhX3NwbGl0YCB1c2luZyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyBhbmQgc3lzZnMgaW50ZXJmYWNlIGhhbmRsZSBlZGdlIGNhc2VzIGNvcnJlY3RseS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgN2FkZjg4NDQxMTQ5MmUyZDcwMjAwYTFkNGE1YjJhZTU3MWE1NGRiOApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDIwIDAzOjM4OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb24gYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vbgppbmRleCA5MDdhNTA0ZmI2NGM1NC4uZWU4ZTI2MGE2MzFjZjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCkBAIC0yNjUsNiAmIzQzOzI2NSwxMyBAQCBDb250YWN0OglTSiBQYXJrICZsdDtzakBrZXJuZWwub3JnJmd0OwogRGVzY3JpcHRpb246CUFjdGlvbiYjMzk7cyB0YXJnZXQgTlVNQSBub2RlIGlkLiAgU3VwcG9ydGVkIGJ5IG9ubHkgcmVsZXZhbnQKIAkJYWN0aW9ucy4KIAomIzQzO1doYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L3NjaGVtZXMvJmx0O1MmZ3Q7L3RhcmdldF9vcmRlcgomIzQzO0RhdGU6CQlKdWwgMjAyNgomIzQzO0NvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CiYjNDM7RGVzY3JpcHRpb246CVRhcmdldCBmb2xpbyBvcmRlciBmb3IgdGhlIGBgc3BsaXRgYCBhY3Rpb24uICBMYXJnZSBmb2xpb3MgaW4KJiM0MzsJCXRoZSB0YXJnZXQgcmVnaW9uIGFyZSBzcGxpdCBkb3duIHRvIHRoaXMgb3JkZXIuICBWYWxpZCB2YWx1ZXMKJiM0MzsJCWFyZSAwIChvcmRlci0wIGJhc2UgcGFnZXMpIGFuZCAyLi5IUEFHRV9QTURfT1JERVItMS4KJiM0MzsKIFdoYXQ6CQkvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy8mbHQ7SyZndDsvY29udGV4dHMvJmx0O0MmZ3Q7L3NjaGVtZXMvJmx0O1MmZ3Q7L2FwcGx5X2ludGVydmFsX3VzCiBEYXRlOgkJU2VwIDIwMjMKIENvbnRhY3Q6CVNKIFBhcmsgJmx0O3NqQGtlcm5lbC5vcmcmZ3Q7CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKaW5kZXggYWVkNmNiMWNmNDgzMTAuLjg3YTgwMTk1NGIxYjMwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0CkBAIC01NDksNiAmIzQzOzU0OSwxMSBAQCB0aGF0IHN1cHBvcnRzIGVhY2ggYWN0aW9uIGFyZSBhcyBiZWxvdy4KICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW4KICAgIFRSQU5TUEFSRU5UX0hVR0VQQUdFIGlzIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gb2YgdGhlIGFjdGlvbiB3aWxsIGp1c3QKICAgIGZhaWwuCiYjNDM7IC0gYGBzcGxpdGBgOiBTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gZG93biB0byB0aGUgb3JkZXIgc3BlY2lmaWVkCiYjNDM7ICAgYnkgdGhlIHNjaGVtZSYjMzk7cyBgYHRhcmdldF9vcmRlcmBgIChgYDBgYCBmb3Igb3JkZXItMCBiYXNlIHBhZ2VzLCBvcgomIzQzOyAgIGBgMi4uSFBBR0VfUE1EX09SREVSLTFgYCkuICBTdXBwb3J0ZWQgYnkgYGB2YWRkcmBgIGFuZCBgYGZ2YWRkcmBgIG9wZXJhdGlvbnMKJiM0MzsgICBzZXQuIFdoZW4gVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgYWN0aW9uCiYjNDM7ICAgd2lsbCBqdXN0IGZhaWwuCiAgLSBgYGxydV9wcmlvYGA6IFByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLgogICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC4KICAtIGBgbHJ1X2RlcHJpb2BgOiBEZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kYW1vbi5oIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oCmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kYW1vbi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGFtb24uaApAQCAtMTEwLDYgJiM0MzsxMTAsNyBAQCBzdHJ1Y3QgZGFtb25fdGFyZ2V0IHsKICAqIEBEQU1PU19IVUdFUEFHRToJQ2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS4KICAqIEBEQU1PU19OT0hVR0VQQUdFOglDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX05PSFVHRVBBR0UuCiAgKiBAREFNT1NfQ09MTEFQU0U6CUNhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfQ09MTEFQU0UuCiYjNDM7ICogQERBTU9TX1NQTElUOglTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gdG8gYSBzbWFsbGVyIG9yZGVyLgogICogQERBTU9TX0xSVV9QUklPOglQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy4KICAqIEBEQU1PU19MUlVfREVQUklPOglEZXByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLgogICogQERBTU9TX01JR1JBVEVfSE9UOiAgTWlncmF0ZSB0aGUgcmVnaW9ucyBwcmlvcml0aXppbmcgd2FybWVyIHJlZ2lvbnMuCkBAIC0xMzAsNiAmIzQzOzEzMSw3IEBAIGVudW0gZGFtb3NfYWN0aW9uIHsKIAlEQU1PU19IVUdFUEFHRSwKIAlEQU1PU19OT0hVR0VQQUdFLAogCURBTU9TX0NPTExBUFNFLAomIzQzOwlEQU1PU19TUExJVCwKIAlEQU1PU19MUlVfUFJJTywKIAlEQU1PU19MUlVfREVQUklPLAogCURBTU9TX01JR1JBVEVfSE9ULApAQCAtNTgyLDEwICYjNDM7NTg0LDE1IEBAIHN0cnVjdCBkYW1vcyB7CiAJc3RydWN0IGRhbW9zX3F1b3RhIHF1b3RhOwogCXN0cnVjdCBkYW1vc193YXRlcm1hcmtzIHdtYXJrczsKIAl1bmlvbiB7Ci0JCXN0cnVjdCB7Ci0JCQlpbnQgdGFyZ2V0X25pZDsKLQkJCXN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7Ci0JCX07CiYjNDM7CQlpbnQgdGFyZ2V0X25pZDsKJiM0MzsJCXN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7CiYjNDM7CQkvKgomIzQzOwkJICogQG9yZGVyOiB0YXJnZXQgZm9saW8gb3JkZXIgZm9yIERBTU9TX1NQTElULgomIzQzOwkJICogU3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gdGhpcyBvcmRlci4gIDAgZm9yCiYjNDM7CQkgKiBvcmRlci0wIGJhc2UgcGFnZXMsIDIuLkhQQUdFX1BNRF9PUkRFUi0xIGZvcgomIzQzOwkJICogc21hbGxlciBtVEhQLiAgT3JkZXItMSBpcyByZWplY3RlZC4KJiM0MzsJCSAqLwomIzQzOwkJdW5zaWduZWQgaW50IG9yZGVyOwogCX07CiAJc3RydWN0IGxpc3RfaGVhZCBjb3JlX2ZpbHRlcnM7CiAJc3RydWN0IGxpc3RfaGVhZCBvcHNfZmlsdGVyczsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuYwppbmRleCA4MDZhNjdkMDJhNmU5MC4uMzk0YzYyNDU1YWQ1NmIgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9jb3JlLmMKQEAgLTY5Myw2ICYjNDM7NjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybiwKIAkJcmV0dXJuIE5VTEw7CiAJc2NoZW1lLSZndDtwYXR0ZXJuID0gKnBhdHRlcm47CiAJc2NoZW1lLSZndDthY3Rpb24gPSBhY3Rpb247CiYjNDM7CXNjaGVtZS0mZ3Q7b3JkZXIgPSAwOwogCXNjaGVtZS0mZ3Q7YXBwbHlfaW50ZXJ2YWxfdXMgPSBhcHBseV9pbnRlcnZhbF91czsKIAkvKgogCSAqIG5leHRfYXBwbHlfc2lzIHdpbGwgYmUgc2V0IHdoZW4ga2RhbW9uZCBzdGFydHMuICBXaGlsZSBrZGFtb25kIGlzCkBAIC0xNDQ2LDYgJiM0MzsxNDQ3LDcgQEAgc3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKQogCiAJZHN0LSZndDtwYXR0ZXJuID0gc3JjLSZndDtwYXR0ZXJuOwogCWRzdC0mZ3Q7YWN0aW9uID0gc3JjLSZndDthY3Rpb247CiYjNDM7CWRzdC0mZ3Q7b3JkZXIgPSBzcmMtJmd0O29yZGVyOwogCWRzdC0mZ3Q7YXBwbHlfaW50ZXJ2YWxfdXMgPSBzcmMtJmd0O2FwcGx5X2ludGVydmFsX3VzOwogCiAJZXJyID0gZGFtb3NfY29tbWl0X3F1b3RhKCZhbXA7ZHN0LSZndDtxdW90YSwgJmFtcDtzcmMtJmd0O3F1b3RhKTsKZGlmZiAtLWdpdCBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYwppbmRleCAzMmY0OTVhOTZiMTdhOC4uNzI1ZWQ4MWNjZjZjYWMgMTAwNjQ0Ci0tLSBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMKQEAgLTQsNyAmIzQzOzQsOSBAQAogICovCiAKICNpbmNsdWRlICZsdDtsaW51eC9zbGFiLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L21tLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbnVtYS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9odWdlX21tLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7c3lzZnMtY29tbW9uLmgmIzM0OwogCkBAIC0yMjYwLDYgJiM0MzsyMjYyLDcgQEAgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSB7CiAJc3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0czsKIAlzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lX3JlZ2lvbnMgKnRyaWVkX3JlZ2lvbnM7CiAJaW50IHRhcmdldF9uaWQ7CiYjNDM7CXVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7CiAJc3RydWN0IGRhbW9zX3N5c2ZzX2Rlc3RzICpkZXN0czsKIH07CiAKQEAgLTIyOTMsNiAmIzQzOzIyOTYsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHsKIAkJLmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLAogCQkubmFtZSA9ICYjMzQ7Y29sbGFwc2UmIzM0OywKIAl9LAomIzQzOwl7CiYjNDM7CQkuYWN0aW9uID0gREFNT1NfU1BMSVQsCiYjNDM7CQkubmFtZSA9ICYjMzQ7c3BsaXQmIzM0OywKJiM0MzsJfSwKIAl7CiAJCS5hY3Rpb24gPSBEQU1PU19MUlVfUFJJTywKIAkJLm5hbWUgPSAmIzM0O2xydV9wcmlvJiMzNDssCkBAIC0yMzI2LDYgJiM0MzsyMzMzLDcgQEAgc3RhdGljIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9hbGxvYygKIAlzY2hlbWUtJmd0O2FjdGlvbiA9IGFjdGlvbjsKIAlzY2hlbWUtJmd0O2FwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7CiAJc2NoZW1lLSZndDt0YXJnZXRfbmlkID0gTlVNQV9OT19OT0RFOwomIzQzOwlzY2hlbWUtJmd0O3RhcmdldF9vcmRlciA9IDA7CiAJcmV0dXJuIHNjaGVtZTsKIH0KIApAQCAtMjY0NSw2ICYjNDM7MjY1Myw0MCBAQCBzdGF0aWMgc3NpemVfdCB0YXJnZXRfbmlkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAogCXJldHVybiBlcnIgPyBlcnIgOiBjb3VudDsKIH0KIAomIzQzO3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLAomIzQzOwkJc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaiwKJiM0MzsJCQlzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTsKJiM0MzsKJiM0MzsJcmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCAmIzM0OyV1XG4mIzM0Oywgc2NoZW1lLSZndDt0YXJnZXRfb3JkZXIpOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosCiYjNDM7CQlzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQomIzQzO3sKJiM0MzsJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosCiYjNDM7CQkJc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaik7CiYjNDM7CXVuc2lnbmVkIGludCB2YWw7CiYjNDM7CWludCBlcnI7CiYjNDM7CiYjNDM7CWVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCAmYW1wO3ZhbCk7CiYjNDM7CWlmIChlcnIpCiYjNDM7CQlyZXR1cm4gZXJyOwomIzQzOwomIzQzOyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0UKJiM0MzsJLyogVmFsaWQgc3BsaXQgdGFyZ2V0czogMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBvciAyLi5IUEFHRV9QTURfT1JERVItMS4gKi8KJiM0MzsJaWYgKHZhbCAhPSAwICZhbXA7JmFtcDsgKHZhbCAmbHQ7IDIgfHwgdmFsICZndDs9IEhQQUdFX1BNRF9PUkRFUikpCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsjZWxzZQomIzQzOwlpZiAodmFsICE9IDApCiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsjZW5kaWYKJiM0MzsKJiM0MzsJc2NoZW1lLSZndDt0YXJnZXRfb3JkZXIgPSB2YWw7CiYjNDM7CXJldHVybiBjb3VudDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iaikKIHsKIAlrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpOwpAQCAtMjY1OSwxMCAmIzQzOzI3MDEsMTQgQEAgc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ciA9CiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPQogCQlfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTsKIAomIzQzO3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID0KJiM0MzsJCV9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7CiYjNDM7CiBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZGFtb25fc3lzZnNfc2NoZW1lX2F0dHJzW10gPSB7CiAJJmFtcDtkYW1vbl9zeXNmc19zY2hlbWVfYWN0aW9uX2F0dHIuYXR0ciwKIAkmYW1wO2RhbW9uX3N5c2ZzX3NjaGVtZV9hcHBseV9pbnRlcnZhbF91c19hdHRyLmF0dHIsCiAJJmFtcDtkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X25pZF9hdHRyLmF0dHIsCiYjNDM7CSZhbXA7ZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyLmF0dHIsCiAJTlVMTCwKIH07CiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7CkBAIC0zMDExLDYgJiM0MzszMDU3LDggQEAgc3RhdGljIHN0cnVjdCBkYW1vcyAqZGFtb25fc3lzZnNfbWtfc2NoZW1lKAogCWlmICghc2NoZW1lKQogCQlyZXR1cm4gTlVMTDsKIAomIzQzOwlzY2hlbWUtJmd0O29yZGVyID0gc3lzZnNfc2NoZW1lLSZndDt0YXJnZXRfb3JkZXI7CiYjNDM7CiAJZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy0mZ3Q7Z29hbHMsICZhbXA7c2NoZW1lLSZndDtxdW90YSk7CiAJaWYgKGVycikgewogCQlkYW1vbl9kZXN0cm95X3NjaGVtZShzY2hlbWUpOwpkaWZmIC0tZ2l0IGEvbW0vZGFtb24vdmFkZHIuYyBiL21tL2RhbW9uL3ZhZGRyLmMKaW5kZXggZDEwYjgwNDJhZGI1YmEuLmE4NjA3NDQ4NTg0ZDU1IDEwMDY0NAotLS0gYS9tbS9kYW1vbi92YWRkci5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL2RhbW9uL3ZhZGRyLmMKQEAgLTYsNiAmIzQzOzYsNyBAQAogI2RlZmluZSBwcl9mbXQoZm10KSAmIzM0O2RhbW9uLXZhOiAmIzM0OyBmbXQKIAogI2luY2x1ZGUgJmx0O2xpbnV4L2hpZ2htZW0uaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvaHVnZV9tbS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2h1Z2V0bGIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tbWFuLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW11X25vdGlmaWVyLmgmZ3Q7CkBAIC04OTYsNiAmIzQzOzg5NywxMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsCiAJcmV0dXJuIDA7CiB9CiAKJiM0MzsvKgomIzQzOyAqIGRhbW9zX3ZhX3NwbGl0KCkgLSBTcGxpdCBsYXJnZSBmb2xpb3MgaW4gYSByZWdpb24gZG93biB0byBAdGFyZ2V0X29yZGVyCiYjNDM7ICogdXNpbmcgdGhlIGV4aXN0aW5nIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkuCiYjNDM7ICoKJiM0MzsgKiBMb2NraW5nOiBmb2xpb193YWxrX3N0YXJ0KCkgcmV0dXJucyB0aGUgZm9saW8gd2l0aCB0aGUgcGFnZSB0YWJsZSBsb2NrCiYjNDM7ICogaGVsZC4gIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgbXVzdCBub3QgcnVuIHVuZGVyIHRoZSBwYWdlIHRhYmxlIGxvY2ssCiYjNDM7ICogc28gd2UgcGluIHRoZSBmb2xpbyAocmVmZXJlbmNlICYjNDM7IGxvY2spLCBlbmQgdGhlIHdhbGsgdG8gZHJvcCB0aGUgcGFnZQomIzQzOyAqIHRhYmxlIGxvY2ssIGFuZCBzcGxpdCB3aGlsZSBob2xkaW5nIG9ubHkgbW1hcF9yZWFkX2xvY2suCiYjNDM7ICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSByZXR1cm5zIC1FQlVTWSBmb3IgYSByYWNlZCBvciBwaW5uZWQgZm9saW87CiYjNDM7ICogd2Ugc2tpcCBzdWNoIGZvbGlvcy4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zcGxpdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsCiYjNDM7CQlzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsCiYjNDM7CQl1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKQomIzQzO3sKJiM0MzsJdW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtJmd0O29yZGVyOwomIzQzOwl1bnNpZ25lZCBsb25nIGFkZHIgPSBBTElHTl9ET1dOKHItJmd0O2FyLnN0YXJ0LCBQQUdFX1NJWkUpOwomIzQzOwl1bnNpZ25lZCBsb25nIGVuZCA9IHItJmd0O2FyLmVuZDsKJiM0MzsJdW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDsKJiM0MzsJc3RydWN0IG1tX3N0cnVjdCAqbW07CiYjNDM7CiYjNDM7CW1tID0gZGFtb25fZ2V0X21tKHRhcmdldCk7CiYjNDM7CWlmICghbW0pCiYjNDM7CQlyZXR1cm4gMDsKJiM0MzsKJiM0MzsJd2hpbGUgKGFkZHIgJmx0OyBlbmQpIHsKJiM0MzsJCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hOwomIzQzOwkJc3RydWN0IGZvbGlvICpmb2xpbzsKJiM0MzsJCXN0cnVjdCBmb2xpb193YWxrIGZ3OwomIzQzOwkJdW5zaWduZWQgbG9uZyBmb2xpb19zeiA9IDA7CiYjNDM7CiYjNDM7CQlpZiAobW1hcF9yZWFkX2xvY2tfa2lsbGFibGUobW0pKQomIzQzOwkJCWJyZWFrOwomIzQzOwomIzQzOwkJdm1hID0gdm1hX2xvb2t1cChtbSwgYWRkcik7CiYjNDM7CQlpZiAoIXZtYSkgewomIzQzOwkJCS8qIFNraXAgdGhlIGdhcCB0byB0aGUgbmV4dCBWTUEsIGlmIGFueS4gKi8KJiM0MzsJCQl2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7CiYjNDM7CQkJbW1hcF9yZWFkX3VubG9jayhtbSk7CiYjNDM7CQkJaWYgKCF2bWEgfHwgdm1hLSZndDt2bV9zdGFydCAmZ3Q7PSBlbmQpCiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWFkZHIgPSB2bWEtJmd0O3ZtX3N0YXJ0OwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQomIzQzOwomIzQzOwkJLyogRm9saW9zIGluIHRoZXNlIFZNQXMgYXJlIG5vdCBvdXIgYnVzaW5lc3MuICovCiYjNDM7CQlpZiAodm1hLSZndDt2bV9mbGFncyAmYW1wOyAoVk1fSFVHRVRMQiB8IFZNX01JWEVETUFQKSkgewomIzQzOwkJCWFkZHIgPSB2bWEtJmd0O3ZtX2VuZDsKJiM0MzsJCQltbWFwX3JlYWRfdW5sb2NrKG1tKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWZvbGlvID0gZm9saW9fd2Fsa19zdGFydCgmYW1wO2Z3LCB2bWEsIGFkZHIsIDApOwomIzQzOwkJaWYgKCFmb2xpbykgewomIzQzOwkJCW1tYXBfcmVhZF91bmxvY2sobW0pOwomIzQzOwkJCWFkZHIgJiM0Mzs9IFBBR0VfU0laRTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWZvbGlvX3N6ID0gZm9saW9fc2l6ZShmb2xpbyk7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogRm9yIGZpbGUtYmFja2VkIGZvbGlvcywgQHRhcmdldF9vcmRlciBtYXkgYmUgYmVsb3cgdGhlCiYjNDM7CQkgKiBmaWxlc3lzdGVtJiMzOTtzIG1pbmltdW0gZm9saW8gb3JkZXIgKG1hcHBpbmdfbWluX2ZvbGlvX29yZGVyKCkpLgomIzQzOwkJICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSB3aWxsIHNpbXBseSBmYWlsIGluIHRoYXQgY2FzZSBhbmQKJiM0MzsJCSAqIHdlIHNraXAgdGhlIGZvbGlvLiAgVGhpcyBpcyBhIHNhZmUgbm8tb3A7IGZ1dHVyZSB3b3JrIGNhbgomIzQzOwkJICogYWRqdXN0IHRhcmdldF9vcmRlciB1cHdhcmQgbGlrZSBzcGxpdF9odWdlX3BhZ2VzX2luX3BpZCgpCiYjNDM7CQkgKiBkb2VzIHdoZW4gYSBzcGVjaWZpYyBmaWxlc3lzdGVtIG5lZWRzIGl0LgomIzQzOwkJICovCiYjNDM7CiYjNDM7CQkvKiBIb25vdXIgdGhlIHNjaGVtZSYjMzk7cyBvcGVyYXRpb25zLWxheWVyIGZpbHRlcnMuICovCiYjNDM7CQlpZiAoZGFtb3Nfb3BzX2hhc19maWx0ZXIocykpIHsKJiM0MzsJCQlpZiAoZGFtb3NfdmFfZmlsdGVyX291dChzLCBmb2xpbywgdm1hLCBhZGRyLAomIzQzOwkJCQkJZncubGV2ZWwgPT0gRldfTEVWRUxfUFRFID8gZncucHRlcCA6IE5VTEwsCiYjNDM7CQkJCQlmdy5sZXZlbCA9PSBGV19MRVZFTF9QTUQgPyBmdy5wbWRwIDogTlVMTCkpIHsKJiM0MzsJCQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsJCQkJbW1hcF9yZWFkX3VubG9jayhtbSk7CiYjNDM7CQkJCWdvdG8gbmV4dDsKJiM0MzsJCQl9CiYjNDM7CQkJKnN6X2ZpbHRlcl9wYXNzZWQgJiM0Mzs9IGZvbGlvX3N6OwomIzQzOwkJfQomIzQzOwomIzQzOwkJaWYgKGZvbGlvX29yZGVyKGZvbGlvKSAmZ3Q7IHRhcmdldF9vcmRlciAmYW1wOyZhbXA7IGZvbGlvX3RyeWxvY2soZm9saW8pKSB7CiYjNDM7CQkJZm9saW9fZ2V0KGZvbGlvKTsKJiM0MzsJCQkvKiBEcm9wIHRoZSBwYWdlIHRhYmxlIGxvY2sgYmVmb3JlIHNwbGl0dGluZy4gKi8KJiM0MzsJCQlmb2xpb193YWxrX2VuZCgmYW1wO2Z3LCB2bWEpOwomIzQzOwomIzQzOwkJCWlmICghc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIHRhcmdldF9vcmRlcikpCiYjNDM7CQkJCWFwcGxpZWQgJiM0Mzs9IGZvbGlvX3N6OwomIzQzOwomIzQzOwkJCWZvbGlvX3VubG9jayhmb2xpbyk7CiYjNDM7CQkJZm9saW9fcHV0KGZvbGlvKTsKJiM0MzsJCX0gZWxzZSB7CiYjNDM7CQkJZm9saW9fd2Fsa19lbmQoJmFtcDtmdywgdm1hKTsKJiM0MzsJCX0KJiM0MzsJCW1tYXBfcmVhZF91bmxvY2sobW0pOwomIzQzO25leHQ6CiYjNDM7CQlhZGRyID0gQUxJR05fRE9XTihhZGRyLCBmb2xpb19zeikgJiM0MzsgZm9saW9fc3o7CiYjNDM7CQljb25kX3Jlc2NoZWQoKTsKJiM0MzsJfQomIzQzOwomIzQzOwltbXB1dChtbSk7CiYjNDM7CXJldHVybiBhcHBsaWVkOwomIzQzO30KJiM0MzsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsCiAJCXN0cnVjdCBkYW1vbl90YXJnZXQgKnQsIHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsCiAJCXN0cnVjdCBkYW1vcyAqc2NoZW1lLCB1bnNpZ25lZCBsb25nICpzel9maWx0ZXJfcGFzc2VkKQpAQCAtOTI2LDYgJiM0MzsxMDMyLDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCwKIAkJcmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTsKIAljYXNlIERBTU9TX1NUQVQ6CiAJCXJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7CiYjNDM7CWNhc2UgREFNT1NfU1BMSVQ6CiYjNDM7CQlyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTsKIAlkZWZhdWx0OgogCQkvKgogCQkgKiBEQU1PUyBhY3Rpb25zIHRoYXQgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGJ5ICYjMzk7dmFkZHImIzM5Oy4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGUKaW5kZXggZWNlMjQ0ZTVjNWI5NWMuLmE2MjNjMjcxMzU1ZmZlIDEwMDY0NAotLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZQomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZQpAQCAtMTIsNiAmIzQzOzEyLDcgQEAgVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnMuc2gKIFRFU1RfUFJPR1MgJiM0Mzs9IHN5c2ZzLnB5CiBURVNUX1BST0dTICYjNDM7PSBzeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zX3dzc19lc3RpbWF0aW9uLnB5CiBURVNUX1BST0dTICYjNDM7PSBkYW1vc19xdW90YS5weSBkYW1vc19xdW90YV9nb2FsLnB5IGRhbW9zX2FwcGx5X2ludGVydmFsLnB5CiYjNDM7VEVTVF9QUk9HUyAmIzQzOz0gZGFtb3Nfc3BsaXQucHkKIFRFU1RfUFJPR1MgJiM0Mzs9IGRhbW9zX3RyaWVkX3JlZ2lvbnMucHkgZGFtb25fbnJfcmVnaW9ucy5weQogVEVTVF9QUk9HUyAmIzQzOz0gc3lzZnNfcmVmcmVzaC5weQogVEVTVF9QUk9HUyAmIzQzOz0gcmVjbGFpbS5zaCBscnVfc29ydC5zaApkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5CmluZGV4IGU2YTIyNjVkNzIxZThiLi41YTAxZjMxYWQ5ZjI2ZCAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weQpAQCAtNDE5LDYgJiM0Mzs0MTksNyBAQCBjbGFzcyBEYW1vczoKICAgICBmaWx0ZXJzID0gTm9uZQogICAgIGFwcGx5X2ludGVydmFsX3VzID0gTm9uZQogICAgIHRhcmdldF9uaWQgPSBOb25lCiYjNDM7ICAgIHRhcmdldF9vcmRlciA9IE5vbmUKICAgICBkZXN0cyA9IE5vbmUKICAgICBpZHggPSBOb25lCiAgICAgY29udGV4dCA9IE5vbmUKQEAgLTQyOSw3ICYjNDM7NDMwLDcgQEAgY2xhc3MgRGFtb3M6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFjdGlvbj0mIzM5O3N0YXQmIzM5OywgYWNjZXNzX3BhdHRlcm49RGFtb3NBY2Nlc3NQYXR0ZXJuKCksCiAgICAgICAgICAgICAgICAgIHF1b3RhPURhbW9zUXVvdGEoKSwgd2F0ZXJtYXJrcz1EYW1vc1dhdGVybWFya3MoKSwKICAgICAgICAgICAgICAgICAgY29yZV9maWx0ZXJzPVtdLCBvcHNfZmlsdGVycz1bXSwgZmlsdGVycz1bXSwgdGFyZ2V0X25pZD0wLAotICAgICAgICAgICAgICAgICBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOgomIzQzOyAgICAgICAgICAgICAgICAgdGFyZ2V0X29yZGVyPTAsIGRlc3RzPURhbW9zRGVzdHMoKSwgYXBwbHlfaW50ZXJ2YWxfdXM9MCk6CiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uCiAgICAgICAgIHNlbGYuYWNjZXNzX3BhdHRlcm4gPSBhY2Nlc3NfcGF0dGVybgogICAgICAgICBzZWxmLmFjY2Vzc19wYXR0ZXJuLnNjaGVtZSA9IHNlbGYKQEAgLTQ0OCw2ICYjNDM7NDQ5LDcgQEAgY2xhc3MgRGFtb3M6CiAgICAgICAgIHNlbGYuZmlsdGVycy5zY2hlbWUgPSBzZWxmCiAKICAgICAgICAgc2VsZi50YXJnZXRfbmlkID0gdGFyZ2V0X25pZAomIzQzOyAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIgPSB0YXJnZXRfb3JkZXIKICAgICAgICAgc2VsZi5kZXN0cyA9IGRlc3RzCiAgICAgICAgIHNlbGYuZGVzdHMuc2NoZW1lID0gc2VsZgogCkBAIC00OTIsNiAmIzQzOzQ5NCwxMSBAQCBjbGFzcyBEYW1vczoKICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVycgogCiYjNDM7ICAgICAgICBlcnIgPSB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN5c2ZzX2RpcigpLCAmIzM5O3RhcmdldF9vcmRlciYjMzk7KSwgJiMzOTslZCYjMzk7ICUKJiM0MzsgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIpCiYjNDM7ICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6CiYjNDM7ICAgICAgICAgICAgcmV0dXJuIGVycgomIzQzOwogICAgICAgICBlcnIgPSBzZWxmLmRlc3RzLnN0YWdlKCkKICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGVycgpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vZGFtb3Nfc3BsaXQucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMC4uMDg5ZmJlMGYwZDRkM2IKLS0tIC9kZXYvbnVsbAomIzQzOyYjNDM7JiM0MzsgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weQpAQCAtMCwwICYjNDM7MSwxMjUgQEAKJiM0MzsjIS91c3IvYmluL2VudiBweXRob24zCiYjNDM7IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAomIzQzOyMKJiM0MzsjIEZ1bmN0aW9uYWwgdGVzdCBmb3IgdGhlIERBTU9TX1NQTElUIGFjdGlvbi4KJiM0MzsjCiYjNDM7IyBBIGNoaWxkIHByb2Nlc3MgYWxsb2NhdGVzIGEgTUFEVl9IVUdFUEFHRS1iYWNrZWQgYW5vbnltb3VzIHJlZ2lvbiBhbmQKJiM0MzsjIGZhdWx0cyBpdCBpbiBzbyB0aGF0IGl0IGlzIGJhY2tlZCBieSAobSlUSFBzLiAgVGhlIHBhcmVudCB0aGVuIHJ1bnMgYQomIzQzOyMgREFNT04vREFNT1Mgc2NoZW1lIHdpdGggYWN0aW9uICYjMzk7c3BsaXQmIzM5OyBhbmQgdGFyZ2V0X29yZGVyIDAgYWdhaW5zdCB0aGUKJiM0MzsjIGNoaWxkIGFuZCBjaGVja3MgdGhhdCB0aGUgaHVnZSBwYWdlcyBhcmUgc3BsaXQgaW50byBiYXNlIHBhZ2VzLCBpLmUuIHRoZQomIzQzOyMgY2hpbGQmIzM5O3MgQW5vbkh1Z2VQYWdlcyAoYXMgcmVwb3J0ZWQgYnkgL3Byb2MvJmx0O3BpZCZndDsvc21hcHMpIGRyb3BzLgomIzQzOwomIzQzO2ltcG9ydCBjdHlwZXMKJiM0MztpbXBvcnQgb3MKJiM0MztpbXBvcnQgc2lnbmFsCiYjNDM7aW1wb3J0IHN5cwomIzQzO2ltcG9ydCB0aW1lCiYjNDM7CiYjNDM7aW1wb3J0IF9kYW1vbl9zeXNmcwomIzQzOwomIzQzO1BNRF9TSVpFID0gMiAqIDEwMjQgKiAxMDI0CiYjNDM7TUFEVl9IVUdFUEFHRSA9IDE0CiYjNDM7UFJPVF9SRUFEX1dSSVRFID0gMHgxIHwgMHgyCiYjNDM7TUFQX1BSSVZBVEVfQU5PTiA9IDB4MiB8IDB4MjAKJiM0MztSRUdJT05fU0laRSA9IDMyICogUE1EX1NJWkUKJiM0MzsKJiM0MztkZWYgY2hpbGRfd29ya2xvYWQoKToKJiM0MzsgICAgJiMzOTsmIzM5OyYjMzk7QWxsb2NhdGUgYSBQTUQtYWxpZ25lZCwgVEhQLWJhY2tlZCByZWdpb24sIGZhdWx0IGl0IGluLCB0aGVuIGlkbGUuJiMzOTsmIzM5OyYjMzk7CiYjNDM7ICAgIGxpYmMgPSBjdHlwZXMuQ0RMTCgmIzM5O2xpYmMuc28uNiYjMzk7LCB1c2VfZXJybm89VHJ1ZSkKJiM0MzsgICAgbGliYy5tbWFwLnJlc3R5cGUgPSBjdHlwZXMuY192b2lkX3AKJiM0MzsgICAgbGliYy5tbWFwLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3ZvaWRfcCwgY3R5cGVzLmNfc2l6ZV90LCBjdHlwZXMuY19pbnQsCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfbG9uZ10KJiM0MzsgICAgbGliYy5tYWR2aXNlLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3ZvaWRfcCwgY3R5cGVzLmNfc2l6ZV90LCBjdHlwZXMuY19pbnRdCiYjNDM7CiYjNDM7ICAgICMgT3Zlci1hbGxvY2F0ZSBzbyB0aGF0IGEgUE1ELWFsaWduZWQgd2luZG93IGlzIGF2YWlsYWJsZS4KJiM0MzsgICAgcmF3ID0gbGliYy5tbWFwKE5vbmUsIFJFR0lPTl9TSVpFICYjNDM7IFBNRF9TSVpFLCBQUk9UX1JFQURfV1JJVEUsCiYjNDM7ICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURV9BTk9OLCAtMSwgMCkKJiM0MzsgICAgaWYgcmF3IGlzIE5vbmUgb3IgcmF3ID09IGN0eXBlcy5jX3ZvaWRfcCgtMSkudmFsdWU6CiYjNDM7ICAgICAgICBvcy5fZXhpdCgyKQomIzQzOyAgICBiYXNlID0gKHJhdyAmIzQzOyBQTURfU0laRSAtIDEpICZhbXA7IH4oUE1EX1NJWkUgLSAxKQomIzQzOyAgICBsaWJjLm1hZHZpc2UoY3R5cGVzLmNfdm9pZF9wKGJhc2UpLCBSRUdJT05fU0laRSwgTUFEVl9IVUdFUEFHRSkKJiM0MzsKJiM0MzsgICAgYnVmID0gKGN0eXBlcy5jX2NoYXIgKiBSRUdJT05fU0laRSkuZnJvbV9hZGRyZXNzKGJhc2UpCiYjNDM7ICAgIGZvciBvZmYgaW4gcmFuZ2UoMCwgUkVHSU9OX1NJWkUsIDQwOTYpOgomIzQzOyAgICAgICAgYnVmW29mZl0gPSAxCiYjNDM7CiYjNDM7ICAgICMgUmVhZHk7IGlkbGUgdW50aWwgdGhlIHBhcmVudCB0ZWFycyB1cyBkb3duLgomIzQzOyAgICBzaWduYWwucGF1c2UoKQomIzQzOwomIzQzO2RlZiBhbm9uX2h1Z2Vfa2IocGlkKToKJiM0MzsgICAgdG90YWwgPSAwCiYjNDM7ICAgIHRyeToKJiM0MzsgICAgICAgIHdpdGggb3BlbigmIzM5Oy9wcm9jLyVkL3NtYXBzJiMzOTsgJSBwaWQpIGFzIGY6CiYjNDM7ICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKJiM0MzsgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCYjMzk7QW5vbkh1Z2VQYWdlczomIzM5Oyk6CiYjNDM7ICAgICAgICAgICAgICAgICAgICB0b3RhbCAmIzQzOz0gaW50KGxpbmUuc3BsaXQoKVsxXSkKJiM0MzsgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgomIzQzOyAgICAgICAgcmV0dXJuIC0xCiYjNDM7ICAgIHJldHVybiB0b3RhbAomIzQzOwomIzQzO2RlZiBtYWluKCk6CiYjNDM7ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygmIzM5Oy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2VuYWJsZWQmIzM5Oyk6CiYjNDM7ICAgICAgICBwcmludCgmIzM5O1NLSVA6IHRyYW5zcGFyZW50IGh1Z2VwYWdlIGlzIG5vdCBhdmFpbGFibGUmIzM5OykKJiM0MzsgICAgICAgIGV4aXQoMCkKJiM0MzsKJiM0MzsgICAgcGlkID0gb3MuZm9yaygpCiYjNDM7ICAgIGlmIHBpZCA9PSAwOgomIzQzOyAgICAgICAgY2hpbGRfd29ya2xvYWQoKQomIzQzOyAgICAgICAgb3MuX2V4aXQoMCkKJiM0MzsKJiM0MzsgICAgdHJ5OgomIzQzOyAgICAgICAgIyBHaXZlIHRoZSBjaGlsZCB0aW1lIHRvIGZhdWx0IGluIGl0cyBodWdlIHBhZ2VzLgomIzQzOyAgICAgICAgdGltZS5zbGVlcCgyKQomIzQzOyAgICAgICAgYmVmb3JlID0gYW5vbl9odWdlX2tiKHBpZCkKJiM0MzsgICAgICAgIGlmIGJlZm9yZSAmbHQ7PSAwOgomIzQzOyAgICAgICAgICAgIHByaW50KCYjMzk7U0tJUDogd29ya2xvYWQgZGlkIG5vdCBnZXQgYW55IFRIUCAoQW5vbkh1Z2VQYWdlcz0lZCkmIzM5OwomIzQzOyAgICAgICAgICAgICAgICAgICUgYmVmb3JlKQomIzQzOyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKJiM0MzsgICAgICAgICAgICBleGl0KDApCiYjNDM7CiYjNDM7ICAgICAgICAjIFNwbGl0IGV2ZXJ5IGxhcmdlIGZvbGlvIGluIHRoZSB0YXJnZXQgZG93biB0byBvcmRlci0wIGJhc2UgcGFnZXMuCiYjNDM7ICAgICAgICBrZGFtb25kcyA9IF9kYW1vbl9zeXNmcy5LZGFtb25kcyhbX2RhbW9uX3N5c2ZzLktkYW1vbmQoCiYjNDM7ICAgICAgICAgICAgY29udGV4dHM9W19kYW1vbl9zeXNmcy5EYW1vbkN0eCgKJiM0MzsgICAgICAgICAgICAgICAgb3BzPSYjMzk7dmFkZHImIzM5OywKJiM0MzsgICAgICAgICAgICAgICAgdGFyZ2V0cz1bX2RhbW9uX3N5c2ZzLkRhbW9uVGFyZ2V0KHBpZD1waWQpXSwKJiM0MzsgICAgICAgICAgICAgICAgc2NoZW1lcz1bX2RhbW9uX3N5c2ZzLkRhbW9zKAomIzQzOyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSYjMzk7c3BsaXQmIzM5OywKJiM0MzsgICAgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLAomIzQzOyAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBldmVyeSByZWdpb24gcmVnYXJkbGVzcyBvZiBhY2Nlc3MvYWdlL3NpemUsIHNvCiYjNDM7ICAgICAgICAgICAgICAgICAgICAjIHRoZSBBUk02NCBzdGFsZS1UTEIgYmxpbmQgc3BvdCBjYW5ub3QgbWFzayB0aGUgdGFyZ2V0CiYjNDM7ICAgICAgICAgICAgICAgICAgICBhY2Nlc3NfcGF0dGVybj1fZGFtb25fc3lzZnMuRGFtb3NBY2Nlc3NQYXR0ZXJuKAomIzQzOyAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9WzAsIDIqKjY0IC0gMV0sCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgbnJfYWNjZXNzZXM9WzAsIDIqKjY0IC0gMV0sCiYjNDM7ICAgICAgICAgICAgICAgICAgICAgICAgYWdlPVswLCAyKio2NCAtIDFdKSwKJiM0MzsgICAgICAgICAgICAgICAgICAgIGFwcGx5X2ludGVydmFsX3VzPTApXSldKV0pCiYjNDM7ICAgICAgICBlcnIgPSBrZGFtb25kcy5zdGFydCgpCiYjNDM7ICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6CiYjNDM7ICAgICAgICAgICAgcHJpbnQoJiMzOTtrZGFtb25kcyBzdGFydCBmYWlsZWQ6ICVzJiMzOTsgJSBlcnIpCiYjNDM7ICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKQomIzQzOyAgICAgICAgICAgIGV4aXQoMSkKJiM0MzsKJiM0MzsgICAgICAgICMgTGV0IHRoZSBzY2hlbWUgZmluZCBhbmQgc3BsaXQgdGhlIHJlZ2lvbnMuCiYjNDM7ICAgICAgICBhZnRlciA9IGJlZm9yZQomIzQzOyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoNTApOgomIzQzOyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yKQomIzQzOyAgICAgICAgICAgIGFmdGVyID0gYW5vbl9odWdlX2tiKHBpZCkKJiM0MzsgICAgICAgICAgICBpZiBhZnRlciA9PSAwOgomIzQzOyAgICAgICAgICAgICAgICBicmVhawomIzQzOwomIzQzOyAgICAgICAga2RhbW9uZHMuc3RvcCgpCiYjNDM7ICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiYjNDM7CiYjNDM7ICAgICAgICBpZiBhZnRlciAmZ3Q7PSBiZWZvcmU6CiYjNDM7ICAgICAgICAgICAgcHJpbnQoJiMzOTtGQUlMOiBBbm9uSHVnZVBhZ2VzIGRpZCBub3Qgc2hyaW5rOiBiZWZvcmU9JWQgS2lCICYjMzk7CiYjNDM7ICAgICAgICAgICAgICAgICAgJiMzOTthZnRlcj0lZCBLaUImIzM5OyAlIChiZWZvcmUsIGFmdGVyKSkKJiM0MzsgICAgICAgICAgICBleGl0KDEpCiYjNDM7ICAgICAgICBwcmludCgmIzM5O1BBU1M6IEFub25IdWdlUGFnZXMgJWQgS2lCIC0mZ3Q7ICVkIEtpQiBhZnRlciBEQU1PU19TUExJVCYjMzk7CiYjNDM7ICAgICAgICAgICAgICAlIChiZWZvcmUsIGFmdGVyKSkKJiM0MzsgICAgZmluYWxseToKJiM0MzsgICAgICAgIHRyeToKJiM0MzsgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiYjNDM7ICAgICAgICBleGNlcHQgUHJvY2Vzc0xvb2t1cEVycm9yOgomIzQzOyAgICAgICAgICAgIHBhc3MKJiM0MzsKJiM0MztpZiBfX25hbWVfXyA9PSAmIzM5O19fbWFpbl9fJiMzOTs6CiYjNDM7ICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHkgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weQppbmRleCAzZmZhMDU0YjYzODY3ZC4uNDlkM2MzMTlkZmQ4OTggMTAwNzU1Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5CiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5CkBAIC0xMzEsMTEgJiM0MzsxMzEsMTIgQEAgZGVmIGFzc2VydF9zY2hlbWVfY29tbWl0dGVkKHNjaGVtZSwgZHVtcCk6CiAgICAgICAgICAgICAmIzM5O2h1Z2VwYWdlJiMzOTs6IDMsCiAgICAgICAgICAgICAmIzM5O25vaHVnZXBhZ2UmIzM5OzogNCwKICAgICAgICAgICAgICYjMzk7Y29sbGFwc2UmIzM5OzogNSwKLSAgICAgICAgICAgICYjMzk7bHJ1X3ByaW8mIzM5OzogNiwKLSAgICAgICAgICAgICYjMzk7bHJ1X2RlcHJpbyYjMzk7OiA3LAotICAgICAgICAgICAgJiMzOTttaWdyYXRlX2hvdCYjMzk7OiA4LAotICAgICAgICAgICAgJiMzOTttaWdyYXRlX2NvbGQmIzM5OzogOSwKLSAgICAgICAgICAgICYjMzk7c3RhdCYjMzk7OiAxMCwKJiM0MzsgICAgICAgICAgICAmIzM5O3NwbGl0JiMzOTs6IDYsCiYjNDM7ICAgICAgICAgICAgJiMzOTtscnVfcHJpbyYjMzk7OiA3LAomIzQzOyAgICAgICAgICAgICYjMzk7bHJ1X2RlcHJpbyYjMzk7OiA4LAomIzQzOyAgICAgICAgICAgICYjMzk7bWlncmF0ZV9ob3QmIzM5OzogOSwKJiM0MzsgICAgICAgICAgICAmIzM5O21pZ3JhdGVfY29sZCYjMzk7OiAxMCwKJiM0MzsgICAgICAgICAgICAmIzM5O3N0YXQmIzM5OzogMTEsCiAgICAgICAgICAgICB9CiAgICAgYXNzZXJ0X3RydWUoZHVtcFsmIzM5O2FjdGlvbiYjMzk7XSA9PSBhY3Rpb25fdmFsW3NjaGVtZS5hY3Rpb25dLCAmIzM5O2FjdGlvbiYjMzk7LCBkdW1wKQogICAgIGFzc2VydF90cnVlKGR1bXBbJiMzOTthcHBseV9pbnRlcnZhbF91cyYjMzk7XSA9PSBzY2hlbWUuIGFwcGx5X2ludGVydmFsX3VzLAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzY5CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRBTU9OIFNwbGl0IEFjdGlvbjogRm9jdXNlZCBBc3Nlc3NtZW50KioKCk9rYXksIHNvIHdlJiMzOTt2ZSBnb3QgdGhpcyBuZXcgcGF0Y2ggc2VyaWVzIGludHJvZHVjaW5nIGEgYERBTU9TX1NQTElUYCBhY3Rpb24gZm9yIERBTU9OLiBJdCBzb3VuZHMgbGlrZSB0aGlzIGlzIGdvaW5nIHRvIGJlIHNwbGl0dGluZyBsYXJnZSBmb2xpb3MgZG93biB0byBhIGRlZmluZWQgb3JkZXIsIHdoaWNoIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBtZW1vcnkgbWFuYWdlbWVudC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhpcy4KCkZpcnN0LCBJIG5lZWQgdG8gY2hlY2sgdGhlIHNjb3BlLiBUaGUgcGF0Y2ggdG91Y2hlcyBkb2N1bWVudGF0aW9uLCBgZGFtb24uaGAsIGNvcmUgREFNT04gZmlsZXMsIHN5c2ZzIGludGVyYWN0aW9uLCB2aXJ0dWFsIGFkZHJlc3MgaGFuZGxpbmcsIGFuZCBzZWxmdGVzdHMuIFNlZW1zIHByZXR0eSBzcHJlYWQgb3V0LgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdGhlIGBtbS9kYW1vbi92YWRkci5jYCBmaWxlOyBzcGVjaWZpY2FsbHksIHRoZSBuZXcgYGRhbW9zX3ZhX3NwbGl0YCBmdW5jdGlvbiB3aGljaCBwcmVzdW1hYmx5IGlzIHRoZSBjb3JlIG9mIHRoaXMuIEl0IGxvb2tzIGxpa2UgaXQgdXNlcyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIC0gdGhpcyB3aWxsIG5lZWQgdG8gYmUgd2VsbC1mdXp6ZWQuCgpJJiMzOTttIHRoaW5raW5nIHRoZSBrZXkgYXJlYXMgdG8gYW5hbHl6ZSB3aWxsIGJlIGBkYW1vc192YV9zcGxpdGAsIHRoZW4gdGhlIHN5c2ZzIGludGVyZmFjZSBoYW5kbGVycyBmb3IgdGhlIHNwbGl0IGZ1bmN0aW9uYWxpdHk6IGB0YXJnZXRfb3JkZXJfc3RvcmVgIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLgoKQ29uZmlndXJhdGlvbiBpcyBrZXkgaGVyZS4gREFNT04gaXRzZWxmIGlzIGVuYWJsZWQgYnkgYENPTkZJR19EQU1PTmAsIHRoZSBzeXNmcyBpbnRlcmZhY2UgYnkgYENPTkZJR19EQU1PTl9TWVNGU2AsIGFuZCB0aGUgdmlydHVhbCBhZGRyZXNzIG9wZXJhdGlvbnMgYnkgYENPTkZJR19EQU1PTl9WQUREUmAuICBJIGFsc28gbmVlZCB0byB2ZXJpZnkgd2hldGhlciBgc3BsaXRfZm9saW9fdG9fb3JkZXJgIGludGVyYWN0cyB3aXRoIHRyYW5zcGFyZW50IGh1Z2VwYWdlcywgc28gSSBzaG91bGQgbG9vayBpbiBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYC4KCkFoYSEgTG9va3MgbGlrZSBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LiBUaGUgY29kZSBjaGVja3MgZm9yIGl0LiBTbyB0aGlzIGlzIGEgcGFyYW1ldGVyIG9mIHRoZSBzcGxpdCBvcGVyYXRpb24gaXRzZWxmOiBgdmFsYCBjYW4gYmUgMCBvciBiZXR3ZWVuIDIgYW5kIGBIUEFHRV9QTURfT1JERVItMWAgaWYgaHVnZXBhZ2VzIGFyZSBlbmFibGVkLiBJZiBub3QsIG9ubHkgMCBpcyBhbGxvd2VkLgoKUmlnaHQsIEkmIzM5O2xsIG5lZWQgdG8gcnVuIGEgYGdpdCBncmVwYCBvbiB0aGlzIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlncyByZXF1aXJlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlIGZ1enplciYjMzk7cyBzdHJhdGVneS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtEQU1PTl9TWVNGUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdD0zNz1zeXNmcyBJbnRlcmZhY2Vcbi0tXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zOS1cbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0OjQwOkRBTU9OIHN5c2ZzIGludGVyZmFjZSBpcyBidWlsdCB3aGVuIGBgQ09ORklHX0RBTU9OX1NZU0ZTYGAgaXMgZGVmaW5lZC4gIEl0XG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC00MS1jcmVhdGVzIG11bHRpcGxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyB1bmRlciBpdHMgc3lzZnMgZGlyZWN0b3J5LFxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdD0zNT1zeXNmc+aOpeWPo1xuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0LTM2LT09PT09PT09PVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0OjM3OkRBTU9O55qEc3lzZnPmjqXlj6PmmK/lnKjlrprkuYkgYGBDT05GSUdfREFNT05fU1lTRlNgYCDml7blu7rnq4vnmoTjgILlroPlnKjlhbZzeXNmc+ebruW9leS4i+WIm+W7uuWkmlxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0LTM4LeS4quebruW9leWSjOaWh+S7tu+8jCBgYFx1MDAzY3N5c2ZzXHUwMDNlL2tlcm5lbC9tbS9kYW1vbi9gYCDjgILkvaDlj6/ku6XpgJrov4flr7nor6Xnm67lvZXkuIvnmoTmlofku7bov5vooYzlhpnlhaXlkoxcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3Q9MzU9c3lzZnPmjqXlj6NcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zNi09PT09PT09PT1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdDozNzpEQU1PTueahHN5c2Zz5o6l5Y+j5piv5Zyo5a6a576pIGBgQ09ORklHX0RBTU9OX1NZU0ZTYGAg5pmC5bu656uL55qE44CC5a6D5Zyo5YW2c3lzZnPnm67pjITkuIvlibXlu7rlpJpcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zOC3lgIvnm67pjITlkozmlofku7bvvIwgYGBcdTAwM2NzeXNmc1x1MDAzZS9rZXJuZWwvbW0vZGFtb24vYGAg44CC5L2g5Y+v5Lul6YCa6YGO5bCN6Kmy55uu6YyE5LiL55qE5paH5Lu26YCy6KGM5a+r5YWl5ZKMXG4tLVxubW0vZGFtb24vS2NvbmZpZz01Nj1jb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxuLS1cbm1tL2RhbW9uL0tjb25maWctNjctXG5tbS9kYW1vbi9LY29uZmlnOjY4OmNvbmZpZyBEQU1PTl9TWVNGU1xubW0vZGFtb24vS2NvbmZpZy02OS1cdGJvb2wgXCYjMzQ7REFNT04gc3lzZnMgaW50ZXJmYWNlXCYjMzQ7XG4tLVxubW0vZGFtb24vS2NvbmZpZy03NS1cbm1tL2RhbW9uL0tjb25maWc6NzY6Y29uZmlnIERBTU9OX1NZU0ZTX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNzctXHRib29sIFwmIzM0O1Rlc3QgZm9yIGRhbW9uIHN5c2ZzIGludGVyZmFjZVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG5tbS9kYW1vbi9LY29uZmlnOjc4Olx0ZGVwZW5kcyBvbiBEQU1PTl9TWVNGUyBcdTAwMjZcdTAwMjYgS1VOSVQ9eVxubW0vZGFtb24vS2NvbmZpZy03OS1cdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXG4tLVxubW0vZGFtb24vTWFrZWZpbGU9NT1vYmotJChDT05GSUdfREFNT05fUEFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cbm1tL2RhbW9uL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVx0JiM0Mzs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXG5tbS9kYW1vbi9NYWtlZmlsZS03LW9iai0kKENPTkZJR19EQU1PTl9SRUNMQUlNKVx0JiM0Mzs9IG1vZHVsZXMtY29tbW9uLm8gcmVjbGFpbS5vXG4tLVxubW0vZGFtb24vc3lzZnMuYz0xODI5PWVudW0gZGFtb25fc3lzZnNfY21kIHtcbm1tL2RhbW9uL3N5c2ZzLmM6MTgzMDpcdC8qIEBEQU1PTl9TWVNGU19DTURfT046IFR1cm4gdGhlIGtkYW1vbmQgb24uICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzE6XHREQU1PTl9TWVNGU19DTURfT04sXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzI6XHQvKiBAREFNT05fU1lTRlNfQ01EX09GRjogVHVybiB0aGUga2RhbW9uZCBvZmYuICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzM6XHREQU1PTl9TWVNGU19DTURfT0ZGLFxubW0vZGFtb24vc3lzZnMuYzoxODM0Olx0LyogQERBTU9OX1NZU0ZTX0NNRF9DT01NSVQ6IFVwZGF0ZSBrZGFtb25kIGlucHV0cy4gKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTgzNTpcdERBTU9OX1NZU0ZTX0NNRF9DT01NSVQsXG5tbS9kYW1vbi9zeXNmcy5jLTE4MzYtXHQvKlxubW0vZGFtb24vc3lzZnMuYzoxODM3Olx0ICogQERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzogQ29tbWl0IHRoZSBxdW90YSBnb2Fsc1xubW0vZGFtb24vc3lzZnMuYy0xODM4LVx0ICogdG8gREFNT04uXG5tbS9kYW1vbi9zeXNmcy5jLTE4MzktXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg0MDpcdERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg0MS1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4NDI6XHQgKiBAREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1NUQVRTOiBVcGRhdGUgc2NoZW1lIHN0YXRzIHN5c2ZzXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDMtXHQgKiBmaWxlcy5cbm1tL2RhbW9uL3N5c2ZzLmMtMTg0NC1cdCAqL1xubW0vZGFtb24vc3lzZnMuYzoxODQ1Olx0REFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1NUQVRTLFxubW0vZGFtb24vc3lzZnMuYy0xODQ2LVx0Lypcbm1tL2RhbW9uL3N5c2ZzLmM6MTg0NzpcdCAqIEBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfVFJJRURfQllURVM6IFVwZGF0ZVxubW0vZGFtb24vc3lzZnMuYy0xODQ4LVx0ICogdHJpZWRfcmVnaW9ucy90b3RhbF9ieXRlcyBzeXNmcyBmaWxlcyBmb3IgZWFjaCBzY2hlbWUuXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDktXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg1MDpcdERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg1MS1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4NTI6XHQgKiBAREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6IFVwZGF0ZSBzY2hlbWVzIHRyaWVkXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTMtXHQgKiByZWdpb25zXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTQtXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg1NTpcdERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9SRUdJT05TLFxubW0vZGFtb24vc3lzZnMuYy0xODU2LVx0Lypcbm1tL2RhbW9uL3N5c2ZzLmM6MTg1NzpcdCAqIEBEQU1PTl9TWVNGU19DTURfQ0xFQVJfU0NIRU1FU19UUklFRF9SRUdJT05TOiBDbGVhciBzY2hlbWVzIHRyaWVkXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTgtXHQgKiByZWdpb25zXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTktXHQgKi9cbm1tL2RhbW9uL3N5c2ZzLmM6MTg2MDpcdERBTU9OX1NZU0ZTX0NNRF9DTEVBUl9TQ0hFTUVTX1RSSUVEX1JFR0lPTlMsXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjEtXHQvKlxubW0vZGFtb24vc3lzZnMuYzoxODYyOlx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOiBVcGRhdGUgdGhlXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjMtXHQgKiBlZmZlY3RpdmUgc2l6ZSBxdW90YSBvZiB0aGUgc2NoZW1lIGluIGJ5dGVzLlxubW0vZGFtb24vc3lzZnMuYy0xODY0LVx0ICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4NjU6XHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg2Ni1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4Njc6XHQgKiBAREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6IFVwZGF0ZSB0aGUgdHVuZWQgbW9uaXRvcmluZ1xubW0vZGFtb24vc3lzZnMuYy0xODY4LVx0ICogaW50ZXJ2YWxzLlxubW0vZGFtb24vc3lzZnMuYy0xODY5LVx0ICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzA6XHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1RVTkVEX0lOVEVSVkFMUyxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg3MS1cdC8qXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzI6XHQgKiBATlJfREFNT05fU1lTRlNfQ01EUzogVG90YWwgbnVtYmVyIG9mIERBTU9OIHN5c2ZzIGNvbW1hbmRzLlxubW0vZGFtb24vc3lzZnMuYy0xODczLVx0ICovXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzQ6XHROUl9EQU1PTl9TWVNGU19DTURTLFxubW0vZGFtb24vc3lzZnMuYy0xODc1LX07XG4tLVxubW0vZGFtb24vc3lzZnMuYz0xODkxPXN0YXRpYyBzc2l6ZV90IHN0YXRlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTE5MDgtXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVzXFxuXCYjMzQ7LCBydW5uaW5nID9cbm1tL2RhbW9uL3N5c2ZzLmM6MTkwOTpcdFx0XHRkYW1vbl9zeXNmc19jbWRfc3Ryc1tEQU1PTl9TWVNGU19DTURfT05dIDpcbm1tL2RhbW9uL3N5c2ZzLmM6MTkxMDpcdFx0XHRkYW1vbl9zeXNmc19jbWRfc3Ryc1tEQU1PTl9TWVNGU19DTURfT0ZGXSk7XG5tbS9kYW1vbi9zeXNmcy5jLTE5MTEtfVxuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjM2Mj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjM2NC17XG5tbS9kYW1vbi9zeXNmcy5jOjIzNjU6XHRpZiAoY21kICE9IERBTU9OX1NZU0ZTX0NNRF9PRkYgXHUwMDI2XHUwMDI2IGtkYW1vbmQtXHUwMDNlY29udGV4dHMtXHUwMDNlbnIgIT0gMSlcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2Ni1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzY4LVx0c3dpdGNoIChjbWQpIHtcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2OTpcdGNhc2UgREFNT05fU1lTRlNfQ01EX09OOlxubW0vZGFtb24vc3lzZnMuYy0yMzcwLVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfdHVybl9kYW1vbl9vbihrZGFtb25kKTtcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MTpcdGNhc2UgREFNT05fU1lTRlNfQ01EX09GRjpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Mi1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKGtkYW1vbmQpO1xubW0vZGFtb24vc3lzZnMuYzoyMzczOlx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ09NTUlUOlxubW0vZGFtb24vc3lzZnMuYy0yMzc0LVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3NS1cdFx0XHRcdGRhbW9uX3N5c2ZzX2NvbW1pdF9pbnB1dCwga2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzNzY6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3Ny1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG4tLVxubW0vZGFtb24vc3lzZnMuYy0yMzc5LVx0XHRcdFx0a2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODA6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19TVEFUUzpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4MS1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXG5tbS9kYW1vbi9zeXNmcy5jLTIzODItXHRcdFx0XHRkYW1vbl9zeXNmc191cGRfc2NoZW1lc19zdGF0cywga2RhbW9uZCk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODM6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUzpcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4NC1cdFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoa2RhbW9uZCwgdHJ1ZSk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODU6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9SRUdJT05TOlxubW0vZGFtb24vc3lzZnMuYy0yMzg2LVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfdXBkYXRlX3NjaGVtZXNfdHJpZWRfcmVnaW9ucyhrZGFtb25kLCBmYWxzZSk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzODc6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DTEVBUl9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6XG5tbS9kYW1vbi9zeXNmcy5jLTIzODgtXHRcdHJldHVybiBkYW1vbl9zeXNmc19zY2hlbWVzX2NsZWFyX3JlZ2lvbnMoXG5tbS9kYW1vbi9zeXNmcy5jLTIzODktXHRcdFx0a2RhbW9uZC1cdTAwM2Vjb250ZXh0cy1cdTAwM2Vjb250ZXh0c19hcnJbMF0tXHUwMDNlc2NoZW1lcyk7XG5tbS9kYW1vbi9zeXNmcy5jOjIzOTA6XHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOlxubW0vZGFtb24vc3lzZnMuYy0yMzkxLVx0XHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcbi0tXG5tbS9kYW1vbi9zeXNmcy5jLTIzOTMtXHRcdFx0XHRrZGFtb25kKTtcbm1tL2RhbW9uL3N5c2ZzLmM6MjM5NDpcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6XG5tbS9kYW1vbi9zeXNmcy5jLTIzOTUtXHRcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmM9MjQwMj1zdGF0aWMgc3NpemVfdCBzdGF0ZV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbm1tL2RhbW9uL3N5c2ZzLmMtMjQxMS1cdFx0cmV0dXJuIC1FQlVTWTtcbm1tL2RhbW9uL3N5c2ZzLmM6MjQxMjpcdGZvciAoY21kID0gMDsgY21kIFx1MDAzYyBOUl9EQU1PTl9TWVNGU19DTURTOyBjbWQmIzQzOyYjNDM7KSB7XG5tbS9kYW1vbi9zeXNmcy5jLTI0MTMtXHRcdGlmIChzeXNmc19zdHJlcShidWYsIGRhbW9uX3N5c2ZzX2NtZF9zdHJzW2NtZF0pKSB7XG4tLVxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnPTEzPUNPTkZJR19TWVNGUz15XG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWc6MTQ6Q09ORklHX0RBTU9OX1NZU0ZTPXlcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZzoxNTpDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVD15XG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWctMTYtXG4tLVxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC01LVxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC03LVxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1NZU0ZTX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo5OiNkZWZpbmUgX0RBTU9OX1NZU0ZTX1RFU1RfSFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMC1cbi0tXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oPTEwNj1rdW5pdF90ZXN0X3N1aXRlKGRhbW9uX3N5c2ZzX3Rlc3Rfc3VpdGUpO1xubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMDctXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjEwODojZW5kaWYgLyogX0RBTU9OX1NZU0ZTX1RFU1RfSCAqL1xubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMDktXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjExMDojZW5kaWYgLyogQ09ORklHX0RBTU9OX1NZU0ZTX0tVTklUX1RFU1QgKi9cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9MT1DT05GSUdfREFNT049eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnOjI6Q09ORklHX0RBTU9OX1NZU0ZTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZy0zLUNPTkZJR19EQU1PTl9QQUREUj15XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0NzUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqQ29uZmlnIENoZWNrcyBhbmQgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBzZXQgb2YgY29uZmlndXJhdGlvbnMg4oCTIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBTZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIHNldCBvZiBEQU1PTi1yZWxhdGVkIGZlYXR1cmVzLiBCZWZvcmUgSSBnbyB0b28gZmFyLCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgYERBTU9OX1ZBRERSYCBpcyBhY3R1YWxseSBhIHZhbGlkIGNvbmZpZyBvcHRpb24uIEdvdHRhIHZlcmlmeSB0aGVzZSB0aGluZ3MsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggcG90ZW50aWFsbHkgY29tcGxleCBkZXBlbmRlbmNpZXMuIEEgcXVpY2sgc2FuaXR5IGNoZWNrIG5vdyBjYW4gc2F2ZSBhIGxvdCBvZiBoZWFkYWNoZXMgbGF0ZXIgb24gZG93biB0aGUgbGluZS4gV2UgZG9uJiMzOTt0IHdhbnQgdG8gd2FzdGUgdGltZSBkb3duIGEgcmFiYml0IGhvbGUgZm9yIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IGV4aXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RBTU9OX1ZBRERSJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL0tjb25maWc9MjY9Y29uZmlnIERBTU9OX0tVTklUX1RFU1Rcbi0tXG5tbS9kYW1vbi9LY29uZmlnLTM3LVxubW0vZGFtb24vS2NvbmZpZzozODpjb25maWcgREFNT05fVkFERFJcbm1tL2RhbW9uL0tjb25maWctMzktXHRib29sIFwmIzM0O0RhdGEgYWNjZXNzIG1vbml0b3Jpbmcgb3BlcmF0aW9ucyBmb3IgdmlydHVhbCBhZGRyZXNzIHNwYWNlc1wmIzM0O1xuLS1cbm1tL2RhbW9uL0tjb25maWc9NDc9Y29uZmlnIERBTU9OX1BBRERSXG4tLVxubW0vZGFtb24vS2NvbmZpZy01NS1cbm1tL2RhbW9uL0tjb25maWc6NTY6Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL0tjb25maWctNTctXHRib29sIFwmIzM0O1Rlc3QgZm9yIERBTU9OIG9wZXJhdGlvbnNcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xubW0vZGFtb24vS2NvbmZpZzo1ODpcdGRlcGVuZHMgb24gREFNT05fVkFERFIgXHUwMDI2XHUwMDI2IEtVTklUPXlcbm1tL2RhbW9uL0tjb25maWctNTktXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xuLS1cbm1tL2RhbW9uL01ha2VmaWxlPTM9b2JqLXlcdFx0XHRcdDo9IGNvcmUub1xubW0vZGFtb24vTWFrZWZpbGU6NDpvYmotJChDT05GSUdfREFNT05fVkFERFIpXHQmIzQzOz0gb3BzLWNvbW1vbi5vIHZhZGRyLm9cbm1tL2RhbW9uL01ha2VmaWxlLTUtb2JqLSQoQ09ORklHX0RBTU9OX1BBRERSKVx0JiM0Mzs9IG9wcy1jb21tb24ubyBwYWRkci5vXG4tLVxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnPTg9Q09ORklHX1BBR0VfSURMRV9GTEFHPXlcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZzo5OkNPTkZJR19EQU1PTl9WQUREUj15XG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWc6MTA6Q09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1Q9eVxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnLTExLVxuLS1cbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD00MDM9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcbi0tXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDExLVxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQxMjpcdC8qIERBTU9OX09QU19WQUREUiBpcyByZWdpc3RlcmVkIG9ubHkgaWYgQ09ORklHX0RBTU9OX1ZBRERSIGlzIHNldCAqL1xubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oLTQxMy1cdGlmICghZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoREFNT05fT1BTX1ZBRERSKSkge1xuLS1cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtNS1cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1Rcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtNy1cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6ODojaWZuZGVmIF9EQU1PTl9WQUREUl9URVNUX0hcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6OTojZGVmaW5lIF9EQU1PTl9WQUREUl9URVNUX0hcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMTAtXG4tLVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaD0yNzc9a3VuaXRfdGVzdF9zdWl0ZShkYW1vbl90ZXN0X3N1aXRlKTtcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMjc4LVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDoyNzk6I2VuZGlmIC8qIF9EQU1PTl9WQUREUl9URVNUX0ggKi9cbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMjgwLVxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDoyODE6I2VuZGlmXHQvKiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVCAqL1xuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtMjAtXG5tbS9kYW1vbi92YWRkci5jOjIxOiNpZmRlZiBDT05GSUdfREFNT05fVkFERFJfS1VOSVRfVEVTVFxubW0vZGFtb24vdmFkZHIuYy0yMi0jdW5kZWYgREFNT05fTUlOX1JFR0lPTl9TWlxuLS1cbnNhbXBsZXMvZGFtb24vS2NvbmZpZz01PWNvbmZpZyBTQU1QTEVfREFNT05fV1NTRVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTYtXHRib29sIFwmIzM0O0RBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIHdvcmtpbmcgc2V0IHNpemUgZXN0aW1hdGlvblwmIzM0O1xuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjc6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9WQUREUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTgtXHRoZWxwXG4tLVxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTE3PWNvbmZpZyBTQU1QTEVfREFNT05fUFJDTFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTE4LVx0Ym9vbCBcJiMzNDtEQU1PTiBzYW1wbGUgbW9kdWxlIGZvciBhY2Nlc3MtYXdhcmUgcHJvYWN0aXZlIHJlY2xhbWF0aW9uXCYjMzQ7XG5zYW1wbGVzL2RhbW9uL0tjb25maWc6MTk6XHRkZXBlbmRzIG9uIERBTU9OIFx1MDAyNlx1MDAyNiBEQU1PTl9WQUREUlxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTIwLVx0aGVscFxuLS1cbnRvb2xzL3Rlc3Rpbmcva3VuaXQvY29uZmlncy9hbGxfdGVzdHMuY29uZmlnPTM5PUNPTkZJR19EQU1PTj15XG50b29scy90ZXN0aW5nL2t1bml0L2NvbmZpZ3MvYWxsX3Rlc3RzLmNvbmZpZzo0MDpDT05GSUdfREFNT05fVkFERFI9eVxudG9vbHMvdGVzdGluZy9rdW5pdC9jb25maWdzL2FsbF90ZXN0cy5jb25maWctNDEtQ09ORklHX0RBTU9OX1BBRERSPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9Mz1DT05GSUdfREFNT05fUEFERFI9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnOjQ6Q09ORklHX0RBTU9OX1ZBRERSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZy01LUNPTkZJR19EQU1PTl9SRUNMQUlNPXlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkxOAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgREFNT04gQ29uZmlndXJhdGlvbiBhbmQgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gY29uZmlybWluZyB0aGF0IGBEQU1PTl9WQUREUmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBUaGUga2V5IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgYXJlIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBhbHNvIHRoZSBldmVyLXByZXNlbnQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSBhbHdheXMgbmVlZCB0byBjb25zaWRlciBUSFAgaW4gdGhlc2Ugc2NlbmFyaW9zLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIHBhdGggdG8gYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCYjMzk7cyBhY2Nlc3NpYmxlLiBSaWdodCwgc28gYGRhbW9zX3ZhX3NwbGl0YCBnZXRzIGNhbGxlZCBmcm9tIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIHdoZW4gdGhlIGFjdGlvbiBpcyBgREFNT1NfU1BMSVRgLiBgZGFtb25fdmFfYXBwbHlfc2NoZW1lYCBpcyBzdWJzZXF1ZW50bHkgY2FsbGVkIGJ5IGBkYW1vbl92YV9hcHBseV90aHJlZV9yZWdpb25zYCwgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSBgZGFtb25fdmFfYXBwbHlfc2NoZW1lc2AsIHRoZW4gYnkgYGRhbW9uX2RvX2FwcGx5X3NjaGVtZXNgIGFuZCBmaW5hbGx5LCB0aGF04oCZcyBpbnZva2VkIGJ5IGBrZGFtb25kX2ZuYC4gQW5kIGZyb20gdGhlcmUsIGl0IGFwcGVhcnMgdGhpcyBlbnRpcmUgc2VxdWVuY2UgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHN5c2ZzIGludGVyZmFjZS4gRXhjZWxsZW50LCB0aGF0IGdpdmVzIG1lIGEgY2xlYXIgaWRlYSBvZiB0aGUgcG90ZW50aWFsIGF0dGFjayB2ZWN0b3JzLgoKVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25zIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24gb24gYXJlOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCwgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHkgdGhlIGB0YXJnZXRfb3JkZXJgIGZ1bmN0aW9ucywgdG8gY29uZmlybSB0aGVpciBiZWhhdmlvci4gSSYjMzk7bGwgZmluZCB0aGVtIGluIGBtbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RhcmdldF9vcmRlcl9zdG9yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjY1Nj1zdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjY1OnN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1Njc3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOgoKKipJbnZlc3RpZ2F0aW5nIGEgREFNT1MgVmlydHVhbCBBZGRyZXNzIFNwbGl0KioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BsaXQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgREFNT1MgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRhbW9zX3ZhX3NwbGl0YCB3aXRoaW4gYG1tL2RhbW9uL3ZhZGRyLmNgLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBjb3JlIGxvZ2ljIGZvciBob3cgdGhlIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBpcyBzZWdtZW50ZWQgYW5kIGhhbmRsZWQgdGhlcmUuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGhvdyB0aGUgY29kZSBkZXRlcm1pbmVzIHRoZSBzcGxpdHRpbmcgcG9pbnRzIGFuZCB0aGUgaW1wbGljYXRpb25zIGl0IGhhcyBvbiBtZW1vcnkgbWFuYWdlbWVudC4gVGhpcyBpcyBhIGNyaXRpY2FsIGZ1bmN0aW9uIGZvciBEQU1PTiYjMzk7cyBvcGVyYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXQgY29tcGxldGVseSBpcyBwYXJhbW91bnQuIExldCYjMzk7cyBkaXZlIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkYW1vc192YV9zcGxpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jPTg3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTkwMC0vKlxubW0vZGFtb24vdmFkZHIuYzo5MDE6ICogZGFtb3NfdmFfc3BsaXQoKSAtIFNwbGl0IGxhcmdlIGZvbGlvcyBpbiBhIHJlZ2lvbiBkb3duIHRvIEB0YXJnZXRfb3JkZXJcbm1tL2RhbW9uL3ZhZGRyLmMtOTAyLSAqIHVzaW5nIHRoZSBleGlzdGluZyBzcGxpdF9mb2xpb190b19vcmRlcigpLlxuLS1cbm1tL2RhbW9uL3ZhZGRyLmMtOTEwLSAqL1xubW0vZGFtb24vdmFkZHIuYzo5MTE6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxubW0vZGFtb24vdmFkZHIuYy05MTItXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbi0tXG5tbS9kYW1vbi92YWRkci5jPTEwMDU9c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTEwMzUtXHRjYXNlIERBTU9TX1NQTElUOlxubW0vZGFtb24vdmFkZHIuYzoxMDM2Olx0XHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcbm1tL2RhbW9uL3ZhZGRyLmMtMTAzNy1cdGRlZmF1bHQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MTkyCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgREFNT04gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY291cGxlIG9mIGtleSBhZGRpdGlvbnM6IGEgbmV3IHN5c2ZzIGZpbGUgY2FsbGVkIGB0YXJnZXRfb3JkZXJgLCBhbmQgYSBuZXcgYWN0aW9uLCBgc3BsaXRgLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGRhbW9zX3ZhX3NwbGl0YCBmdW5jdGlvbiwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIFZNQXMgYW5kIHNwbGl0dGluZyBmb2xpb3MuIEZyb20gYSBjdXJzb3J5IGdsYW5jZSwgaXQgYXBwZWFycyBmdW5jdGlvbmFsbHkgc291bmQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZ1enppbmc7IGl0JiMzOTtzIHRoZSBraW5kIG9mIGNvZGUgdGhhdCYjMzk7cyByaXBlIGZvciBmaW5kaW5nIGVkZ2UgY2FzZXMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuCgpJIHNob3VsZCBhbHNvIG5vdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHdpbGwgYmUgbmVlZGVkOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fVkFERFJgLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSYjMzk7bGwgbmVlZCB0byBrZWVwIHRob3NlIGluIG1pbmQgZm9yIG15IHRlc3RpbmcgZW52aXJvbm1lbnQgc2V0dXAuCgpUaGUgbW9zdCBpbXBvcnRhbnQgc3ltYm9scyBmb3IgbWUgdG8gZm9jdXMgb24gaGVyZSBhcmUgYGRhbW9zX3ZhX3NwbGl0YCwgb2J2aW91c2x5LCBhbmQgdGhlbiB0aGUgc3lzZnMgZmlsZSBoYW5kbGVycyBgdGFyZ2V0X29yZGVyX3N0b3JlYCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC4gVGhvc2Ugd2lsbCBwcm92aWRlIGNydWNpYWwgY29udHJvbCBvdmVyIHRoZSBuZXcgYmVoYXZpb3IuCgpKdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBxdWlja2x5IHNjYW4gdGhlIGNvZGUgdG8gdmVyaWZ5IHRoYXQgYGRhbW9zX3ZhX3NwbGl0YCBpcyB0aGUgb25seSBhZGRlZCBmdW5jdGlvbi4gSSBkb24mIzM5O3Qgd2FudCB0byBtaXNzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljLipkYW1vc192YV9zcGxpdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9kYW1vbi92YWRkci5jPTg3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbi0tXG5tbS9kYW1vbi92YWRkci5jLTkxMC0gKi9cbm1tL2RhbW9uL3ZhZGRyLmM6OTExOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcbm1tL2RhbW9uL3ZhZGRyLmMtOTEyLVx0XHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIwIDAzOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzM3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gd2hhdCBJJiMzOTttIGFib3V0IHRvIGRvOgoKKipDaGVja2luZyBmb3IgUmVsYXRlZCBGdW5jdGlvbmFsaXR5IGluIHRoZSBLZXJuZWwmIzM5O3Mgc3lzZnMgU2NoZW1lcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgc29tZXRoaW5nIGluIHRoaXMga2VybmVsIG1vZHVsZSwgc3BlY2lmaWNhbGx5IGBtbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgaWYgYW55IGFkZGl0aW9uYWwgZnVuY3Rpb25zIGhhdmUgYmVlbiBhZGRlZCB0byB0aGF0IGZpbGUuJiMzNDsgSSBrbm93IHRoZSBjb2RlYmFzZSByZWFzb25hYmx5IHdlbGwsIGJ1dCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGRvdWJsZS1jaGVjaywgZXNwZWNpYWxseSBhZnRlciBhIHBlcmlvZCBhd2F5LCBvciBpZiBzaWduaWZpY2FudCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHJlY2VudGx5LiBJdCYjMzk7cyBhYm91dCBlbnN1cmluZyBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgSSBzdGFydCBtYWtpbmcgYW55IGFzc3VtcHRpb25zIG9yIGdvaW5nIGRlZXBlciBpbnRvIGFueSBvbmUgYXJlYS4gSSYjMzk7bSBsb29raW5nIGZvciBhbnl0aGluZyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0mIzM5O3Mgb3ZlcmFsbCBiZWhhdmlvciBvciByZWxhdGUgdG8gd2hhdCBJJiMzOTttIHdvcmtpbmcgb24gcmlnaHQgbm93LiBBIHF1aWNrIHNjYW4gd2lsbCBwcmV2ZW50IHN1cnByaXNlcyBkb3duIHRoZSByb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMCAwMzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljLip0YXJnZXRfb3JkZXJfJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNjQ0PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NTUtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjY1NjpzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjU3LVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbi0tXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjY2NC1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjY1OnN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVx0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuLS1cbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNzAxPXN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9uaWRfYXR0ciA9XG4tLVxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3MDMtXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM6MjcwNDpzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ciA9XG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmMtMjcwNS1cdFx0X19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczNDEKCQkJCQkJCW91dHB1dDogMTc3CgkJCQkJCQl0aG91Z2h0czogMjA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIEZvbGlvIFNwbGl0dGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIHNvbWUgaW50ZXJlc3RpbmcgZnVuY3Rpb25hbGl0eSBpbnRvIERBTU9OLCBzcGVjaWZpY2FsbHkgdGhlIGFiaWxpdHkgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIgdmlhIGEgbmV3IGBEQU1PU19TUExJVGAgYWN0aW9uLiBJIHNlZSB0aHJlZSBrZXkgZnVuY3Rpb25zIGludm9sdmVkOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCwgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuIEZyb20gYSBoaWdoLWxldmVsIHBlcnNwZWN0aXZlLCBJIHVuZGVyc3RhbmQgdGhpcyBtZWFucyB3ZSYjMzk7cmUgYWRkaW5nIGJvdGggYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtICphbmQqIGEgbmV3IHN5c2ZzIGludGVyZmFjZSB0byBjb250cm9sIGl0LiBUaGUgY29yZSBsb2dpYyBmb3IgdGhlIHNwbGl0IGl0c2VsZiBzZWVtcyB0byBiZSB3aXRoaW4gYGRhbW9zX3ZhX3NwbGl0YCwgbGV2ZXJhZ2luZyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgLgoKR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogKipGVVpaSU5HISoqIFRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gcmlnb3JvdXNseSB0ZXN0IHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMsIHBhcnRpY3VsYXJseSBpbiBgZGFtb3NfdmFfc3BsaXRgLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIG5ldyBzeXNmcyBpbnRlcmZhY2UsIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLiBFZGdlIGNhc2VzIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBoZXJlOiB3aGF0IGhhcHBlbnMgd2l0aCB2ZXJ5IGxhcmdlIGZvbGlvcywgbWluaW1hbCB0YXJnZXQgb3JkZXJzLCBvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBUaGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25zIG9mIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFsbCBtYWtlIHNlbnNlIGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCBzaG91bGQgYmUgY29uc2lkZXJlZCBkdXJpbmcgdGVzdGluZywgdG8gZXN0YWJsaXNoIHRoZSBjb25kaXRpb25zIGluIHdoaWNoIHRoaXMgZmVhdHVyZSB3aWxsIGJlIHVzZWQgYW5kIGhvdyB0aGV5IG1heSBlZmZlY3QgdGhlIHRlc3RpbmcgcHJvY2Vzcy4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdGhhdCBJIHdpbGwgZm9jdXMgb24gZHVyaW5nIGludmVzdGlnYXRpb24gYXJlOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC4KCkkmIzM5O20gcmVhZHkgdG8gbW92ZSBvbiB0byB0aGUgbmV4dCBzdGVwLCBzbyBJIHdpbGwgbm93IGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjAgMDM6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zaG93JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgREFNT04gYWN0aW9uIGBEQU1PU19TUExJVGAgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIuIEl0IGFkZHMgc3lzZnMgaW50ZXJmYWNlcyB0byBjb25maWd1cmUgdGhlIHRhcmdldCBvcmRlciBhbmQgaW1wbGVtZW50cyB0aGUgc3BsaXR0aW5nIGxvZ2ljIGluIGBkYW1vc192YV9zcGxpdGAgdXNpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZSBoYW5kbGUgZWRnZSBjYXNlcyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RBTU9OJiMzNDssCiAgICAmIzM0O0RBTU9OX1NZU0ZTJiMzNDssCiAgICAmIzM0O0RBTU9OX1ZBRERSJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGFtb3NfdmFfc3BsaXQmIzM0OywKICAgICYjMzQ7dGFyZ2V0X29yZGVyX3N0b3JlJiMzNDssCiAgICAmIzM0O3RhcmdldF9vcmRlcl9zaG93JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgREFNT04gYWN0aW9uIGBEQU1PU19TUExJVGAgdG8gc3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBzcGVjaWZpZWQgb3JkZXIuIEl0IGFkZHMgc3lzZnMgaW50ZXJmYWNlcyB0byBjb25maWd1cmUgdGhlIHRhcmdldCBvcmRlciBhbmQgaW1wbGVtZW50cyB0aGUgc3BsaXR0aW5nIGxvZ2ljIGluIGBkYW1vc192YV9zcGxpdGAgdXNpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0gYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMgYW5kIHN5c2ZzIGludGVyZmFjZSBoYW5kbGUgZWRnZSBjYXNlcyBjb3JyZWN0bHkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODoxMC42NjEyNjA4NzdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDU1MTk1MTQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEQU1PTlwiLFxuICAgIFwiREFNT05fU1lTRlNcIixcbiAgICBcIkRBTU9OX1ZBRERSXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRhbW9zX3ZhX3NwbGl0XCIsXG4gICAgXCJ0YXJnZXRfb3JkZXJfc3RvcmVcIixcbiAgICBcInRhcmdldF9vcmRlcl9zaG93XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBEQU1PTiBhY3Rpb24gYERBTU9TX1NQTElUYCB0byBzcGxpdCBsYXJnZSBmb2xpb3MgZG93biB0byBhIHNwZWNpZmllZCBvcmRlci4gSXQgYWRkcyBzeXNmcyBpbnRlcmZhY2VzIHRvIGNvbmZpZ3VyZSB0aGUgdGFyZ2V0IG9yZGVyIGFuZCBpbXBsZW1lbnRzIHRoZSBzcGxpdHRpbmcgbG9naWMgaW4gYGRhbW9zX3ZhX3NwbGl0YCB1c2luZyBgc3BsaXRfZm9saW9fdG9fb3JkZXJgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgdGhlIGZvbGlvIHNwbGl0dGluZyBsb2dpYyBhbmQgc3lzZnMgaW50ZXJmYWNlIGhhbmRsZSBlZGdlIGNhc2VzIGNvcnJlY3RseS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzg6MTAuNjYxMjY2MjY3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTA2MjI4MTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3YWRmODg0NDExNDkyZTJkNzAyMDBhMWQ0YTViMmFlNTcxYTU0ZGI4XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gSnVsIDIwIDAzOjM4OjA4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cXG5pbmRleCA5MDdhNTA0ZmI2NGM1NC4uZWU4ZTI2MGE2MzFjZjIgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cXG4rKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxcbkBAIC0yNjUsNiArMjY1LDEzIEBAIENvbnRhY3Q6XFx0U0ogUGFyayBcXHUwMDNjc2pAa2VybmVsLm9yZ1xcdTAwM2VcXG4gRGVzY3JpcHRpb246XFx0QWN0aW9uJ3MgdGFyZ2V0IE5VTUEgbm9kZSBpZC4gIFN1cHBvcnRlZCBieSBvbmx5IHJlbGV2YW50XFxuIFxcdFxcdGFjdGlvbnMuXFxuIFxcbitXaGF0OlxcdFxcdC9zeXMva2VybmVsL21tL2RhbW9uL2FkbWluL2tkYW1vbmRzL1xcdTAwM2NLXFx1MDAzZS9jb250ZXh0cy9cXHUwMDNjQ1xcdTAwM2Uvc2NoZW1lcy9cXHUwMDNjU1xcdTAwM2UvdGFyZ2V0X29yZGVyXFxuK0RhdGU6XFx0XFx0SnVsIDIwMjZcXG4rQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbitEZXNjcmlwdGlvbjpcXHRUYXJnZXQgZm9saW8gb3JkZXIgZm9yIHRoZSBgYHNwbGl0YGAgYWN0aW9uLiAgTGFyZ2UgZm9saW9zIGluXFxuK1xcdFxcdHRoZSB0YXJnZXQgcmVnaW9uIGFyZSBzcGxpdCBkb3duIHRvIHRoaXMgb3JkZXIuICBWYWxpZCB2YWx1ZXNcXG4rXFx0XFx0YXJlIDAgKG9yZGVyLTAgYmFzZSBwYWdlcykgYW5kIDIuLkhQQUdFX1BNRF9PUkRFUi0xLlxcbitcXG4gV2hhdDpcXHRcXHQvc3lzL2tlcm5lbC9tbS9kYW1vbi9hZG1pbi9rZGFtb25kcy9cXHUwMDNjS1xcdTAwM2UvY29udGV4dHMvXFx1MDAzY0NcXHUwMDNlL3NjaGVtZXMvXFx1MDAzY1NcXHUwMDNlL2FwcGx5X2ludGVydmFsX3VzXFxuIERhdGU6XFx0XFx0U2VwIDIwMjNcXG4gQ29udGFjdDpcXHRTSiBQYXJrIFxcdTAwM2NzakBrZXJuZWwub3JnXFx1MDAzZVxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcXG5pbmRleCBhZWQ2Y2IxY2Y0ODMxMC4uODdhODAxOTU0YjFiMzAgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XFxuKysrIGIvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XFxuQEAgLTU0OSw2ICs1NDksMTEgQEAgdGhhdCBzdXBwb3J0cyBlYWNoIGFjdGlvbiBhcmUgYXMgYmVsb3cuXFxuICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW5cXG4gICAgVFJBTlNQQVJFTlRfSFVHRVBBR0UgaXMgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgYWN0aW9uIHdpbGwganVzdFxcbiAgICBmYWlsLlxcbisgLSBgYHNwbGl0YGA6IFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiBkb3duIHRvIHRoZSBvcmRlciBzcGVjaWZpZWRcXG4rICAgYnkgdGhlIHNjaGVtZSdzIGBgdGFyZ2V0X29yZGVyYGAgKGBgMGBgIGZvciBvcmRlci0wIGJhc2UgcGFnZXMsIG9yXFxuKyAgIGBgMi4uSFBBR0VfUE1EX09SREVSLTFgYCkuICBTdXBwb3J0ZWQgYnkgYGB2YWRkcmBgIGFuZCBgYGZ2YWRkcmBgIG9wZXJhdGlvbnNcXG4rICAgc2V0LiBXaGVuIFRSQU5TUEFSRU5UX0hVR0VQQUdFIGlzIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gb2YgdGhlIGFjdGlvblxcbisgICB3aWxsIGp1c3QgZmFpbC5cXG4gIC0gYGBscnVfcHJpb2BgOiBQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC5cXG4gIC0gYGBscnVfZGVwcmlvYGA6IERlcHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGFtb24uaCBiL2luY2x1ZGUvbGludXgvZGFtb24uaFxcbmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcXG5AQCAtMTEwLDYgKzExMCw3IEBAIHN0cnVjdCBkYW1vbl90YXJnZXQge1xcbiAgKiBAREFNT1NfSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9IVUdFUEFHRS5cXG4gICogQERBTU9TX05PSFVHRVBBR0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9OT0hVR0VQQUdFLlxcbiAgKiBAREFNT1NfQ09MTEFQU0U6XFx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9DT0xMQVBTRS5cXG4rICogQERBTU9TX1NQTElUOlxcdFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiB0byBhIHNtYWxsZXIgb3JkZXIuXFxuICAqIEBEQU1PU19MUlVfUFJJTzpcXHRQcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX0xSVV9ERVBSSU86XFx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cXG4gICogQERBTU9TX01JR1JBVEVfSE9UOiAgTWlncmF0ZSB0aGUgcmVnaW9ucyBwcmlvcml0aXppbmcgd2FybWVyIHJlZ2lvbnMuXFxuQEAgLTEzMCw2ICsxMzEsNyBAQCBlbnVtIGRhbW9zX2FjdGlvbiB7XFxuIFxcdERBTU9TX0hVR0VQQUdFLFxcbiBcXHREQU1PU19OT0hVR0VQQUdFLFxcbiBcXHREQU1PU19DT0xMQVBTRSxcXG4rXFx0REFNT1NfU1BMSVQsXFxuIFxcdERBTU9TX0xSVV9QUklPLFxcbiBcXHREQU1PU19MUlVfREVQUklPLFxcbiBcXHREQU1PU19NSUdSQVRFX0hPVCxcXG5AQCAtNTgyLDEwICs1ODQsMTUgQEAgc3RydWN0IGRhbW9zIHtcXG4gXFx0c3RydWN0IGRhbW9zX3F1b3RhIHF1b3RhO1xcbiBcXHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyB3bWFya3M7XFxuIFxcdHVuaW9uIHtcXG4tXFx0XFx0c3RydWN0IHtcXG4tXFx0XFx0XFx0aW50IHRhcmdldF9uaWQ7XFxuLVxcdFxcdFxcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7XFxuLVxcdFxcdH07XFxuK1xcdFxcdGludCB0YXJnZXRfbmlkO1xcbitcXHRcXHRzdHJ1Y3QgZGFtb3NfbWlncmF0ZV9kZXN0cyBtaWdyYXRlX2Rlc3RzO1xcbitcXHRcXHQvKlxcbitcXHRcXHQgKiBAb3JkZXI6IHRhcmdldCBmb2xpbyBvcmRlciBmb3IgREFNT1NfU1BMSVQuXFxuK1xcdFxcdCAqIFNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIHRoaXMgb3JkZXIuICAwIGZvclxcbitcXHRcXHQgKiBvcmRlci0wIGJhc2UgcGFnZXMsIDIuLkhQQUdFX1BNRF9PUkRFUi0xIGZvclxcbitcXHRcXHQgKiBzbWFsbGVyIG1USFAuICBPcmRlci0xIGlzIHJlamVjdGVkLlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0dW5zaWduZWQgaW50IG9yZGVyO1xcbiBcXHR9O1xcbiBcXHRzdHJ1Y3QgbGlzdF9oZWFkIGNvcmVfZmlsdGVycztcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCBvcHNfZmlsdGVycztcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vY29yZS5jIGIvbW0vZGFtb24vY29yZS5jXFxuaW5kZXggODA2YTY3ZDAyYTZlOTAuLjM5NGM2MjQ1NWFkNTZiIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL2NvcmUuY1xcbisrKyBiL21tL2RhbW9uL2NvcmUuY1xcbkBAIC02OTMsNiArNjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdHNjaGVtZS1cXHUwMDNlcGF0dGVybiA9ICpwYXR0ZXJuO1xcbiBcXHRzY2hlbWUtXFx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcXG4rXFx0c2NoZW1lLVxcdTAwM2VvcmRlciA9IDA7XFxuIFxcdHNjaGVtZS1cXHUwMDNlYXBwbHlfaW50ZXJ2YWxfdXMgPSBhcHBseV9pbnRlcnZhbF91cztcXG4gXFx0LypcXG4gXFx0ICogbmV4dF9hcHBseV9zaXMgd2lsbCBiZSBzZXQgd2hlbiBrZGFtb25kIHN0YXJ0cy4gIFdoaWxlIGtkYW1vbmQgaXNcXG5AQCAtMTQ0Niw2ICsxNDQ3LDcgQEAgc3RhdGljIGludCBkYW1vc19jb21taXQoc3RydWN0IGRhbW9zICpkc3QsIHN0cnVjdCBkYW1vcyAqc3JjKVxcbiBcXG4gXFx0ZHN0LVxcdTAwM2VwYXR0ZXJuID0gc3JjLVxcdTAwM2VwYXR0ZXJuO1xcbiBcXHRkc3QtXFx1MDAzZWFjdGlvbiA9IHNyYy1cXHUwMDNlYWN0aW9uO1xcbitcXHRkc3QtXFx1MDAzZW9yZGVyID0gc3JjLVxcdTAwM2VvcmRlcjtcXG4gXFx0ZHN0LVxcdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IHNyYy1cXHUwMDNlYXBwbHlfaW50ZXJ2YWxfdXM7XFxuIFxcbiBcXHRlcnIgPSBkYW1vc19jb21taXRfcXVvdGEoXFx1MDAyNmRzdC1cXHUwMDNlcXVvdGEsIFxcdTAwMjZzcmMtXFx1MDAzZXF1b3RhKTtcXG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXFxuaW5kZXggMzJmNDk1YTk2YjE3YTguLjcyNWVkODFjY2Y2Y2FjIDEwMDY0NFxcbi0tLSBhL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xcbisrKyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xcbkBAIC00LDcgKzQsOSBAQFxcbiAgKi9cXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbnVtYS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvaHVnZV9tbS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInN5c2ZzLWNvbW1vbi5oXFxcIlxcbiBcXG5AQCAtMjI2MCw2ICsyMjYyLDcgQEAgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSB7XFxuIFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zdGF0cyAqc3RhdHM7XFxuIFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcXG4gXFx0aW50IHRhcmdldF9uaWQ7XFxuK1xcdHVuc2lnbmVkIGludCB0YXJnZXRfb3JkZXI7XFxuIFxcdHN0cnVjdCBkYW1vc19zeXNmc19kZXN0cyAqZGVzdHM7XFxuIH07XFxuIFxcbkBAIC0yMjkzLDYgKzIyOTYsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcXG4gXFx0XFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxcbiBcXHRcXHQubmFtZSA9IFxcXCJjb2xsYXBzZVxcXCIsXFxuIFxcdH0sXFxuK1xcdHtcXG4rXFx0XFx0LmFjdGlvbiA9IERBTU9TX1NQTElULFxcbitcXHRcXHQubmFtZSA9IFxcXCJzcGxpdFxcXCIsXFxuK1xcdH0sXFxuIFxcdHtcXG4gXFx0XFx0LmFjdGlvbiA9IERBTU9TX0xSVV9QUklPLFxcbiBcXHRcXHQubmFtZSA9IFxcXCJscnVfcHJpb1xcXCIsXFxuQEAgLTIzMjYsNiArMjMzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpkYW1vbl9zeXNmc19zY2hlbWVfYWxsb2MoXFxuIFxcdHNjaGVtZS1cXHUwMDNlYWN0aW9uID0gYWN0aW9uO1xcbiBcXHRzY2hlbWUtXFx1MDAzZWFwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7XFxuIFxcdHNjaGVtZS1cXHUwMDNldGFyZ2V0X25pZCA9IE5VTUFfTk9fTk9ERTtcXG4rXFx0c2NoZW1lLVxcdTAwM2V0YXJnZXRfb3JkZXIgPSAwO1xcbiBcXHRyZXR1cm4gc2NoZW1lO1xcbiB9XFxuIFxcbkBAIC0yNjQ1LDYgKzI2NTMsNDAgQEAgc3RhdGljIHNzaXplX3QgdGFyZ2V0X25pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4gXFx0cmV0dXJuIGVyciA/IGVyciA6IGNvdW50O1xcbiB9XFxuIFxcbitzdGF0aWMgc3NpemVfdCB0YXJnZXRfb3JkZXJfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4rXFx0XFx0c3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuK3tcXG4rXFx0c3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSAqc2NoZW1lID0gY29udGFpbmVyX29mKGtvYmosXFxuK1xcdFxcdFxcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xcbitcXG4rXFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJXVcXFxcblxcXCIsIHNjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyKTtcXG4rfVxcbitcXG4rc3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbitcXHRcXHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxcbit7XFxuK1xcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxcbitcXHRcXHRcXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcXG4rXFx0dW5zaWduZWQgaW50IHZhbDtcXG4rXFx0aW50IGVycjtcXG4rXFxuK1xcdGVyciA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcXHUwMDI2dmFsKTtcXG4rXFx0aWYgKGVycilcXG4rXFx0XFx0cmV0dXJuIGVycjtcXG4rXFxuKyNpZmRlZiBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VcXG4rXFx0LyogVmFsaWQgc3BsaXQgdGFyZ2V0czogMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBvciAyLi5IUEFHRV9QTURfT1JERVItMS4gKi9cXG4rXFx0aWYgKHZhbCAhPSAwIFxcdTAwMjZcXHUwMDI2ICh2YWwgXFx1MDAzYyAyIHx8IHZhbCBcXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rI2Vsc2VcXG4rXFx0aWYgKHZhbCAhPSAwKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rI2VuZGlmXFxuK1xcbitcXHRzY2hlbWUtXFx1MDAzZXRhcmdldF9vcmRlciA9IHZhbDtcXG4rXFx0cmV0dXJuIGNvdW50O1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBkYW1vbl9zeXNmc19zY2hlbWVfcmVsZWFzZShzdHJ1Y3Qga29iamVjdCAqa29iailcXG4ge1xcbiBcXHRrZnJlZShjb250YWluZXJfb2Yoa29iaiwgc3RydWN0IGRhbW9uX3N5c2ZzX3NjaGVtZSwga29iaikpO1xcbkBAIC0yNjU5LDEwICsyNzAxLDE0IEBAIHN0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIgPVxcbiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxcbiBcXHRcXHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTtcXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyID1cXG4rXFx0XFx0X19BVFRSX1JXX01PREUodGFyZ2V0X29yZGVyLCAwNjAwKTtcXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkYW1vbl9zeXNmc19zY2hlbWVfYXR0cnNbXSA9IHtcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV9hY3Rpb25fYXR0ci5hdHRyLFxcbiBcXHRcXHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FwcGx5X2ludGVydmFsX3VzX2F0dHIuYXR0cixcXG4gXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIuYXR0cixcXG4rXFx0XFx1MDAyNmRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ci5hdHRyLFxcbiBcXHROVUxMLFxcbiB9O1xcbiBBVFRSSUJVVEVfR1JPVVBTKGRhbW9uX3N5c2ZzX3NjaGVtZSk7XFxuQEAgLTMwMTEsNiArMzA1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcXG4gXFx0aWYgKCFzY2hlbWUpXFxuIFxcdFxcdHJldHVybiBOVUxMO1xcbiBcXG4rXFx0c2NoZW1lLVxcdTAwM2VvcmRlciA9IHN5c2ZzX3NjaGVtZS1cXHUwMDNldGFyZ2V0X29yZGVyO1xcbitcXG4gXFx0ZXJyID0gZGFtb3Nfc3lzZnNfYWRkX3F1b3RhX3Njb3JlKHN5c2ZzX3F1b3Rhcy1cXHUwMDNlZ29hbHMsIFxcdTAwMjZzY2hlbWUtXFx1MDAzZXF1b3RhKTtcXG4gXFx0aWYgKGVycikge1xcbiBcXHRcXHRkYW1vbl9kZXN0cm95X3NjaGVtZShzY2hlbWUpO1xcbmRpZmYgLS1naXQgYS9tbS9kYW1vbi92YWRkci5jIGIvbW0vZGFtb24vdmFkZHIuY1xcbmluZGV4IGQxMGI4MDQyYWRiNWJhLi5hODYwNzQ0ODU4NGQ1NSAxMDA2NDRcXG4tLS0gYS9tbS9kYW1vbi92YWRkci5jXFxuKysrIGIvbW0vZGFtb24vdmFkZHIuY1xcbkBAIC02LDYgKzYsNyBAQFxcbiAjZGVmaW5lIHByX2ZtdChmbXQpIFxcXCJkYW1vbi12YTogXFxcIiBmbXRcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9oaWdobWVtLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9odWdlX21tLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9odWdldGxiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbWFuLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9tbXVfbm90aWZpZXIuaFxcdTAwM2VcXG5AQCAtODk2LDYgKzg5NywxMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbisvKlxcbisgKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxcbisgKiB1c2luZyB0aGUgZXhpc3Rpbmcgc3BsaXRfZm9saW9fdG9fb3JkZXIoKS5cXG4rICpcXG4rICogTG9ja2luZzogZm9saW9fd2Fsa19zdGFydCgpIHJldHVybnMgdGhlIGZvbGlvIHdpdGggdGhlIHBhZ2UgdGFibGUgbG9ja1xcbisgKiBoZWxkLiAgc3BsaXRfZm9saW9fdG9fb3JkZXIoKSBtdXN0IG5vdCBydW4gdW5kZXIgdGhlIHBhZ2UgdGFibGUgbG9jayxcXG4rICogc28gd2UgcGluIHRoZSBmb2xpbyAocmVmZXJlbmNlICsgbG9jayksIGVuZCB0aGUgd2FsayB0byBkcm9wIHRoZSBwYWdlXFxuKyAqIHRhYmxlIGxvY2ssIGFuZCBzcGxpdCB3aGlsZSBob2xkaW5nIG9ubHkgbW1hcF9yZWFkX2xvY2suXFxuKyAqIHNwbGl0X2ZvbGlvX3RvX29yZGVyKCkgcmV0dXJucyAtRUJVU1kgZm9yIGEgcmFjZWQgb3IgcGlubmVkIGZvbGlvO1xcbisgKiB3ZSBza2lwIHN1Y2ggZm9saW9zLlxcbisgKi9cXG4rc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbitcXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXFxuK1xcdFxcdHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuK3tcXG4rXFx0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlciA9IHMtXFx1MDAzZW9yZGVyO1xcbitcXHR1bnNpZ25lZCBsb25nIGFkZHIgPSBBTElHTl9ET1dOKHItXFx1MDAzZWFyLnN0YXJ0LCBQQUdFX1NJWkUpO1xcbitcXHR1bnNpZ25lZCBsb25nIGVuZCA9IHItXFx1MDAzZWFyLmVuZDtcXG4rXFx0dW5zaWduZWQgbG9uZyBhcHBsaWVkID0gMDtcXG4rXFx0c3RydWN0IG1tX3N0cnVjdCAqbW07XFxuK1xcbitcXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xcbitcXHRpZiAoIW1tKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdHdoaWxlIChhZGRyIFxcdTAwM2MgZW5kKSB7XFxuK1xcdFxcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xcbitcXHRcXHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xcbitcXHRcXHRzdHJ1Y3QgZm9saW9fd2FsayBmdztcXG4rXFx0XFx0dW5zaWduZWQgbG9uZyBmb2xpb19zeiA9IDA7XFxuK1xcbitcXHRcXHRpZiAobW1hcF9yZWFkX2xvY2tfa2lsbGFibGUobW0pKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdHZtYSA9IHZtYV9sb29rdXAobW0sIGFkZHIpO1xcbitcXHRcXHRpZiAoIXZtYSkge1xcbitcXHRcXHRcXHQvKiBTa2lwIHRoZSBnYXAgdG8gdGhlIG5leHQgVk1BLCBpZiBhbnkuICovXFxuK1xcdFxcdFxcdHZtYSA9IGZpbmRfdm1hKG1tLCBhZGRyKTtcXG4rXFx0XFx0XFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XFxuK1xcdFxcdFxcdGlmICghdm1hIHx8IHZtYS1cXHUwMDNldm1fc3RhcnQgXFx1MDAzZT0gZW5kKVxcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0YWRkciA9IHZtYS1cXHUwMDNldm1fc3RhcnQ7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQvKiBGb2xpb3MgaW4gdGhlc2UgVk1BcyBhcmUgbm90IG91ciBidXNpbmVzcy4gKi9cXG4rXFx0XFx0aWYgKHZtYS1cXHUwMDNldm1fZmxhZ3MgXFx1MDAyNiAoVk1fSFVHRVRMQiB8IFZNX01JWEVETUFQKSkge1xcbitcXHRcXHRcXHRhZGRyID0gdm1hLVxcdTAwM2V2bV9lbmQ7XFxuK1xcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0Zm9saW8gPSBmb2xpb193YWxrX3N0YXJ0KFxcdTAwMjZmdywgdm1hLCBhZGRyLCAwKTtcXG4rXFx0XFx0aWYgKCFmb2xpbykge1xcbitcXHRcXHRcXHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcXG4rXFx0XFx0XFx0YWRkciArPSBQQUdFX1NJWkU7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRmb2xpb19zeiA9IGZvbGlvX3NpemUoZm9saW8pO1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogRm9yIGZpbGUtYmFja2VkIGZvbGlvcywgQHRhcmdldF9vcmRlciBtYXkgYmUgYmVsb3cgdGhlXFxuK1xcdFxcdCAqIGZpbGVzeXN0ZW0ncyBtaW5pbXVtIGZvbGlvIG9yZGVyIChtYXBwaW5nX21pbl9mb2xpb19vcmRlcigpKS5cXG4rXFx0XFx0ICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSB3aWxsIHNpbXBseSBmYWlsIGluIHRoYXQgY2FzZSBhbmRcXG4rXFx0XFx0ICogd2Ugc2tpcCB0aGUgZm9saW8uICBUaGlzIGlzIGEgc2FmZSBuby1vcDsgZnV0dXJlIHdvcmsgY2FuXFxuK1xcdFxcdCAqIGFkanVzdCB0YXJnZXRfb3JkZXIgdXB3YXJkIGxpa2Ugc3BsaXRfaHVnZV9wYWdlc19pbl9waWQoKVxcbitcXHRcXHQgKiBkb2VzIHdoZW4gYSBzcGVjaWZpYyBmaWxlc3lzdGVtIG5lZWRzIGl0LlxcbitcXHRcXHQgKi9cXG4rXFxuK1xcdFxcdC8qIEhvbm91ciB0aGUgc2NoZW1lJ3Mgb3BlcmF0aW9ucy1sYXllciBmaWx0ZXJzLiAqL1xcbitcXHRcXHRpZiAoZGFtb3Nfb3BzX2hhc19maWx0ZXIocykpIHtcXG4rXFx0XFx0XFx0aWYgKGRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkcixcXG4rXFx0XFx0XFx0XFx0XFx0ZncubGV2ZWwgPT0gRldfTEVWRUxfUFRFID8gZncucHRlcCA6IE5VTEwsXFxuK1xcdFxcdFxcdFxcdFxcdGZ3LmxldmVsID09IEZXX0xFVkVMX1BNRCA/IGZ3LnBtZHAgOiBOVUxMKSkge1xcbitcXHRcXHRcXHRcXHRmb2xpb193YWxrX2VuZChcXHUwMDI2ZncsIHZtYSk7XFxuK1xcdFxcdFxcdFxcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xcbitcXHRcXHRcXHRcXHRnb3RvIG5leHQ7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc3o7XFxuK1xcdFxcdH1cXG4rXFxuK1xcdFxcdGlmIChmb2xpb19vcmRlcihmb2xpbykgXFx1MDAzZSB0YXJnZXRfb3JkZXIgXFx1MDAyNlxcdTAwMjYgZm9saW9fdHJ5bG9jayhmb2xpbykpIHtcXG4rXFx0XFx0XFx0Zm9saW9fZ2V0KGZvbGlvKTtcXG4rXFx0XFx0XFx0LyogRHJvcCB0aGUgcGFnZSB0YWJsZSBsb2NrIGJlZm9yZSBzcGxpdHRpbmcuICovXFxuK1xcdFxcdFxcdGZvbGlvX3dhbGtfZW5kKFxcdTAwMjZmdywgdm1hKTtcXG4rXFxuK1xcdFxcdFxcdGlmICghc3BsaXRfZm9saW9fdG9fb3JkZXIoZm9saW8sIHRhcmdldF9vcmRlcikpXFxuK1xcdFxcdFxcdFxcdGFwcGxpZWQgKz0gZm9saW9fc3o7XFxuK1xcbitcXHRcXHRcXHRmb2xpb191bmxvY2soZm9saW8pO1xcbitcXHRcXHRcXHRmb2xpb19wdXQoZm9saW8pO1xcbitcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRmb2xpb193YWxrX2VuZChcXHUwMDI2ZncsIHZtYSk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XFxuK25leHQ6XFxuK1xcdFxcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIGZvbGlvX3N6KSArIGZvbGlvX3N6O1xcbitcXHRcXHRjb25kX3Jlc2NoZWQoKTtcXG4rXFx0fVxcbitcXG4rXFx0bW1wdXQobW0pO1xcbitcXHRyZXR1cm4gYXBwbGllZDtcXG4rfVxcbitcXG4gc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gXFx0XFx0c3RydWN0IGRhbW9uX3RhcmdldCAqdCwgc3RydWN0IGRhbW9uX3JlZ2lvbiAqcixcXG4gXFx0XFx0c3RydWN0IGRhbW9zICpzY2hlbWUsIHVuc2lnbmVkIGxvbmcgKnN6X2ZpbHRlcl9wYXNzZWQpXFxuQEAgLTkyNiw2ICsxMDMyLDggQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb25fdmFfYXBwbHlfc2NoZW1lKHN0cnVjdCBkYW1vbl9jdHggKmN0eCxcXG4gXFx0XFx0cmV0dXJuIGRhbW9zX3ZhX21pZ3JhdGUodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gXFx0Y2FzZSBEQU1PU19TVEFUOlxcbiBcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3RhdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbitcXHRjYXNlIERBTU9TX1NQTElUOlxcbitcXHRcXHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcXG4gXFx0ZGVmYXVsdDpcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogREFNT1MgYWN0aW9ucyB0aGF0IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBieSAndmFkZHInLlxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXFxuaW5kZXggZWNlMjQ0ZTVjNWI5NWMuLmE2MjNjMjcxMzU1ZmZlIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGVcXG5AQCAtMTIsNiArMTIsNyBAQCBURVNUX1BST0dTICs9IHN5c2ZzLnNoXFxuIFRFU1RfUFJPR1MgKz0gc3lzZnMucHlcXG4gVEVTVF9QUk9HUyArPSBzeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zX3dzc19lc3RpbWF0aW9uLnB5XFxuIFRFU1RfUFJPR1MgKz0gZGFtb3NfcXVvdGEucHkgZGFtb3NfcXVvdGFfZ29hbC5weSBkYW1vc19hcHBseV9pbnRlcnZhbC5weVxcbitURVNUX1BST0dTICs9IGRhbW9zX3NwbGl0LnB5XFxuIFRFU1RfUFJPR1MgKz0gZGFtb3NfdHJpZWRfcmVnaW9ucy5weSBkYW1vbl9ucl9yZWdpb25zLnB5XFxuIFRFU1RfUFJPR1MgKz0gc3lzZnNfcmVmcmVzaC5weVxcbiBURVNUX1BST0dTICs9IHJlY2xhaW0uc2ggbHJ1X3NvcnQuc2hcXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5XFxuaW5kZXggZTZhMjI2NWQ3MjFlOGIuLjVhMDFmMzFhZDlmMjZkIDEwMDY0NFxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxcbkBAIC00MTksNiArNDE5LDcgQEAgY2xhc3MgRGFtb3M6XFxuICAgICBmaWx0ZXJzID0gTm9uZVxcbiAgICAgYXBwbHlfaW50ZXJ2YWxfdXMgPSBOb25lXFxuICAgICB0YXJnZXRfbmlkID0gTm9uZVxcbisgICAgdGFyZ2V0X29yZGVyID0gTm9uZVxcbiAgICAgZGVzdHMgPSBOb25lXFxuICAgICBpZHggPSBOb25lXFxuICAgICBjb250ZXh0ID0gTm9uZVxcbkBAIC00MjksNyArNDMwLDcgQEAgY2xhc3MgRGFtb3M6XFxuICAgICBkZWYgX19pbml0X18oc2VsZiwgYWN0aW9uPSdzdGF0JywgYWNjZXNzX3BhdHRlcm49RGFtb3NBY2Nlc3NQYXR0ZXJuKCksXFxuICAgICAgICAgICAgICAgICAgcXVvdGE9RGFtb3NRdW90YSgpLCB3YXRlcm1hcmtzPURhbW9zV2F0ZXJtYXJrcygpLFxcbiAgICAgICAgICAgICAgICAgIGNvcmVfZmlsdGVycz1bXSwgb3BzX2ZpbHRlcnM9W10sIGZpbHRlcnM9W10sIHRhcmdldF9uaWQ9MCxcXG4tICAgICAgICAgICAgICAgICBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxcbisgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLCBkZXN0cz1EYW1vc0Rlc3RzKCksIGFwcGx5X2ludGVydmFsX3VzPTApOlxcbiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uXFxuICAgICAgICAgc2VsZi5hY2Nlc3NfcGF0dGVybiA9IGFjY2Vzc19wYXR0ZXJuXFxuICAgICAgICAgc2VsZi5hY2Nlc3NfcGF0dGVybi5zY2hlbWUgPSBzZWxmXFxuQEAgLTQ0OCw2ICs0NDksNyBAQCBjbGFzcyBEYW1vczpcXG4gICAgICAgICBzZWxmLmZpbHRlcnMuc2NoZW1lID0gc2VsZlxcbiBcXG4gICAgICAgICBzZWxmLnRhcmdldF9uaWQgPSB0YXJnZXRfbmlkXFxuKyAgICAgICAgc2VsZi50YXJnZXRfb3JkZXIgPSB0YXJnZXRfb3JkZXJcXG4gICAgICAgICBzZWxmLmRlc3RzID0gZGVzdHNcXG4gICAgICAgICBzZWxmLmRlc3RzLnNjaGVtZSA9IHNlbGZcXG4gXFxuQEAgLTQ5Miw2ICs0OTQsMTEgQEAgY2xhc3MgRGFtb3M6XFxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxcbiAgICAgICAgICAgICByZXR1cm4gZXJyXFxuIFxcbisgICAgICAgIGVyciA9IHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3lzZnNfZGlyKCksICd0YXJnZXRfb3JkZXInKSwgJyVkJyAlXFxuKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRhcmdldF9vcmRlcilcXG4rICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XFxuKyAgICAgICAgICAgIHJldHVybiBlcnJcXG4rXFxuICAgICAgICAgZXJyID0gc2VsZi5kZXN0cy5zdGFnZSgpXFxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxcbiAgICAgICAgICAgICByZXR1cm4gZXJyXFxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vZGFtb3Nfc3BsaXQucHlcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi4wODlmYmUwZjBkNGQzYlxcbi0tLSAvZGV2L251bGxcXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weVxcbkBAIC0wLDAgKzEsMTI1IEBAXFxuKyMhL3Vzci9iaW4vZW52IHB5dGhvbjNcXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbisjXFxuKyMgRnVuY3Rpb25hbCB0ZXN0IGZvciB0aGUgREFNT1NfU1BMSVQgYWN0aW9uLlxcbisjXFxuKyMgQSBjaGlsZCBwcm9jZXNzIGFsbG9jYXRlcyBhIE1BRFZfSFVHRVBBR0UtYmFja2VkIGFub255bW91cyByZWdpb24gYW5kXFxuKyMgZmF1bHRzIGl0IGluIHNvIHRoYXQgaXQgaXMgYmFja2VkIGJ5IChtKVRIUHMuICBUaGUgcGFyZW50IHRoZW4gcnVucyBhXFxuKyMgREFNT04vREFNT1Mgc2NoZW1lIHdpdGggYWN0aW9uICdzcGxpdCcgYW5kIHRhcmdldF9vcmRlciAwIGFnYWluc3QgdGhlXFxuKyMgY2hpbGQgYW5kIGNoZWNrcyB0aGF0IHRoZSBodWdlIHBhZ2VzIGFyZSBzcGxpdCBpbnRvIGJhc2UgcGFnZXMsIGkuZS4gdGhlXFxuKyMgY2hpbGQncyBBbm9uSHVnZVBhZ2VzIChhcyByZXBvcnRlZCBieSAvcHJvYy9cXHUwMDNjcGlkXFx1MDAzZS9zbWFwcykgZHJvcHMuXFxuK1xcbitpbXBvcnQgY3R5cGVzXFxuK2ltcG9ydCBvc1xcbitpbXBvcnQgc2lnbmFsXFxuK2ltcG9ydCBzeXNcXG4raW1wb3J0IHRpbWVcXG4rXFxuK2ltcG9ydCBfZGFtb25fc3lzZnNcXG4rXFxuK1BNRF9TSVpFID0gMiAqIDEwMjQgKiAxMDI0XFxuK01BRFZfSFVHRVBBR0UgPSAxNFxcbitQUk9UX1JFQURfV1JJVEUgPSAweDEgfCAweDJcXG4rTUFQX1BSSVZBVEVfQU5PTiA9IDB4MiB8IDB4MjBcXG4rUkVHSU9OX1NJWkUgPSAzMiAqIFBNRF9TSVpFXFxuK1xcbitkZWYgY2hpbGRfd29ya2xvYWQoKTpcXG4rICAgICcnJ0FsbG9jYXRlIGEgUE1ELWFsaWduZWQsIFRIUC1iYWNrZWQgcmVnaW9uLCBmYXVsdCBpdCBpbiwgdGhlbiBpZGxlLicnJ1xcbisgICAgbGliYyA9IGN0eXBlcy5DRExMKCdsaWJjLnNvLjYnLCB1c2VfZXJybm89VHJ1ZSlcXG4rICAgIGxpYmMubW1hcC5yZXN0eXBlID0gY3R5cGVzLmNfdm9pZF9wXFxuKyAgICBsaWJjLm1tYXAuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBjdHlwZXMuY19zaXplX3QsIGN0eXBlcy5jX2ludCxcXG4rICAgICAgICAgICAgICAgICAgICAgICAgICBjdHlwZXMuY19pbnQsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfbG9uZ11cXG4rICAgIGxpYmMubWFkdmlzZS5hcmd0eXBlcyA9IFtjdHlwZXMuY192b2lkX3AsIGN0eXBlcy5jX3NpemVfdCwgY3R5cGVzLmNfaW50XVxcbitcXG4rICAgICMgT3Zlci1hbGxvY2F0ZSBzbyB0aGF0IGEgUE1ELWFsaWduZWQgd2luZG93IGlzIGF2YWlsYWJsZS5cXG4rICAgIHJhdyA9IGxpYmMubW1hcChOb25lLCBSRUdJT05fU0laRSArIFBNRF9TSVpFLCBQUk9UX1JFQURfV1JJVEUsXFxuKyAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEVfQU5PTiwgLTEsIDApXFxuKyAgICBpZiByYXcgaXMgTm9uZSBvciByYXcgPT0gY3R5cGVzLmNfdm9pZF9wKC0xKS52YWx1ZTpcXG4rICAgICAgICBvcy5fZXhpdCgyKVxcbisgICAgYmFzZSA9IChyYXcgKyBQTURfU0laRSAtIDEpIFxcdTAwMjYgfihQTURfU0laRSAtIDEpXFxuKyAgICBsaWJjLm1hZHZpc2UoY3R5cGVzLmNfdm9pZF9wKGJhc2UpLCBSRUdJT05fU0laRSwgTUFEVl9IVUdFUEFHRSlcXG4rXFxuKyAgICBidWYgPSAoY3R5cGVzLmNfY2hhciAqIFJFR0lPTl9TSVpFKS5mcm9tX2FkZHJlc3MoYmFzZSlcXG4rICAgIGZvciBvZmYgaW4gcmFuZ2UoMCwgUkVHSU9OX1NJWkUsIDQwOTYpOlxcbisgICAgICAgIGJ1ZltvZmZdID0gMVxcbitcXG4rICAgICMgUmVhZHk7IGlkbGUgdW50aWwgdGhlIHBhcmVudCB0ZWFycyB1cyBkb3duLlxcbisgICAgc2lnbmFsLnBhdXNlKClcXG4rXFxuK2RlZiBhbm9uX2h1Z2Vfa2IocGlkKTpcXG4rICAgIHRvdGFsID0gMFxcbisgICAgdHJ5OlxcbisgICAgICAgIHdpdGggb3BlbignL3Byb2MvJWQvc21hcHMnICUgcGlkKSBhcyBmOlxcbisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOlxcbisgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdBbm9uSHVnZVBhZ2VzOicpOlxcbisgICAgICAgICAgICAgICAgICAgIHRvdGFsICs9IGludChsaW5lLnNwbGl0KClbMV0pXFxuKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6XFxuKyAgICAgICAgcmV0dXJuIC0xXFxuKyAgICByZXR1cm4gdG90YWxcXG4rXFxuK2RlZiBtYWluKCk6XFxuKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoJy9zeXMva2VybmVsL21tL3RyYW5zcGFyZW50X2h1Z2VwYWdlL2VuYWJsZWQnKTpcXG4rICAgICAgICBwcmludCgnU0tJUDogdHJhbnNwYXJlbnQgaHVnZXBhZ2UgaXMgbm90IGF2YWlsYWJsZScpXFxuKyAgICAgICAgZXhpdCgwKVxcbitcXG4rICAgIHBpZCA9IG9zLmZvcmsoKVxcbisgICAgaWYgcGlkID09IDA6XFxuKyAgICAgICAgY2hpbGRfd29ya2xvYWQoKVxcbisgICAgICAgIG9zLl9leGl0KDApXFxuK1xcbisgICAgdHJ5OlxcbisgICAgICAgICMgR2l2ZSB0aGUgY2hpbGQgdGltZSB0byBmYXVsdCBpbiBpdHMgaHVnZSBwYWdlcy5cXG4rICAgICAgICB0aW1lLnNsZWVwKDIpXFxuKyAgICAgICAgYmVmb3JlID0gYW5vbl9odWdlX2tiKHBpZClcXG4rICAgICAgICBpZiBiZWZvcmUgXFx1MDAzYz0gMDpcXG4rICAgICAgICAgICAgcHJpbnQoJ1NLSVA6IHdvcmtsb2FkIGRpZCBub3QgZ2V0IGFueSBUSFAgKEFub25IdWdlUGFnZXM9JWQpJ1xcbisgICAgICAgICAgICAgICAgICAlIGJlZm9yZSlcXG4rICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKVxcbisgICAgICAgICAgICBleGl0KDApXFxuK1xcbisgICAgICAgICMgU3BsaXQgZXZlcnkgbGFyZ2UgZm9saW8gaW4gdGhlIHRhcmdldCBkb3duIHRvIG9yZGVyLTAgYmFzZSBwYWdlcy5cXG4rICAgICAgICBrZGFtb25kcyA9IF9kYW1vbl9zeXNmcy5LZGFtb25kcyhbX2RhbW9uX3N5c2ZzLktkYW1vbmQoXFxuKyAgICAgICAgICAgIGNvbnRleHRzPVtfZGFtb25fc3lzZnMuRGFtb25DdHgoXFxuKyAgICAgICAgICAgICAgICBvcHM9J3ZhZGRyJyxcXG4rICAgICAgICAgICAgICAgIHRhcmdldHM9W19kYW1vbl9zeXNmcy5EYW1vblRhcmdldChwaWQ9cGlkKV0sXFxuKyAgICAgICAgICAgICAgICBzY2hlbWVzPVtfZGFtb25fc3lzZnMuRGFtb3MoXFxuKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzcGxpdCcsXFxuKyAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X29yZGVyPTAsXFxuKyAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBldmVyeSByZWdpb24gcmVnYXJkbGVzcyBvZiBhY2Nlc3MvYWdlL3NpemUsIHNvXFxuKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgQVJNNjQgc3RhbGUtVExCIGJsaW5kIHNwb3QgY2Fubm90IG1hc2sgdGhlIHRhcmdldFxcbisgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19wYXR0ZXJuPV9kYW1vbl9zeXNmcy5EYW1vc0FjY2Vzc1BhdHRlcm4oXFxuKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9WzAsIDIqKjY0IC0gMV0sXFxuKyAgICAgICAgICAgICAgICAgICAgICAgIG5yX2FjY2Vzc2VzPVswLCAyKio2NCAtIDFdLFxcbisgICAgICAgICAgICAgICAgICAgICAgICBhZ2U9WzAsIDIqKjY0IC0gMV0pLFxcbisgICAgICAgICAgICAgICAgICAgIGFwcGx5X2ludGVydmFsX3VzPTApXSldKV0pXFxuKyAgICAgICAgZXJyID0ga2RhbW9uZHMuc3RhcnQoKVxcbisgICAgICAgIGlmIGVyciBpcyBub3QgTm9uZTpcXG4rICAgICAgICAgICAgcHJpbnQoJ2tkYW1vbmRzIHN0YXJ0IGZhaWxlZDogJXMnICUgZXJyKVxcbisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXFxuKyAgICAgICAgICAgIGV4aXQoMSlcXG4rXFxuKyAgICAgICAgIyBMZXQgdGhlIHNjaGVtZSBmaW5kIGFuZCBzcGxpdCB0aGUgcmVnaW9ucy5cXG4rICAgICAgICBhZnRlciA9IGJlZm9yZVxcbisgICAgICAgIGZvciBfIGluIHJhbmdlKDUwKTpcXG4rICAgICAgICAgICAgdGltZS5zbGVlcCgwLjIpXFxuKyAgICAgICAgICAgIGFmdGVyID0gYW5vbl9odWdlX2tiKHBpZClcXG4rICAgICAgICAgICAgaWYgYWZ0ZXIgPT0gMDpcXG4rICAgICAgICAgICAgICAgIGJyZWFrXFxuK1xcbisgICAgICAgIGtkYW1vbmRzLnN0b3AoKVxcbisgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcXG4rXFxuKyAgICAgICAgaWYgYWZ0ZXIgXFx1MDAzZT0gYmVmb3JlOlxcbisgICAgICAgICAgICBwcmludCgnRkFJTDogQW5vbkh1Z2VQYWdlcyBkaWQgbm90IHNocmluazogYmVmb3JlPSVkIEtpQiAnXFxuKyAgICAgICAgICAgICAgICAgICdhZnRlcj0lZCBLaUInICUgKGJlZm9yZSwgYWZ0ZXIpKVxcbisgICAgICAgICAgICBleGl0KDEpXFxuKyAgICAgICAgcHJpbnQoJ1BBU1M6IEFub25IdWdlUGFnZXMgJWQgS2lCIC1cXHUwMDNlICVkIEtpQiBhZnRlciBEQU1PU19TUExJVCdcXG4rICAgICAgICAgICAgICAlIChiZWZvcmUsIGFmdGVyKSlcXG4rICAgIGZpbmFsbHk6XFxuKyAgICAgICAgdHJ5OlxcbisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXFxuKyAgICAgICAgZXhjZXB0IFByb2Nlc3NMb29rdXBFcnJvcjpcXG4rICAgICAgICAgICAgcGFzc1xcbitcXG4raWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzpcXG4rICAgIG1haW4oKVxcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XFxuaW5kZXggM2ZmYTA1NGI2Mzg2N2QuLjQ5ZDNjMzE5ZGZkODk4IDEwMDc1NVxcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XFxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHlcXG5AQCAtMTMxLDExICsxMzEsMTIgQEAgZGVmIGFzc2VydF9zY2hlbWVfY29tbWl0dGVkKHNjaGVtZSwgZHVtcCk6XFxuICAgICAgICAgICAgICdodWdlcGFnZSc6IDMsXFxuICAgICAgICAgICAgICdub2h1Z2VwYWdlJzogNCxcXG4gICAgICAgICAgICAgJ2NvbGxhcHNlJzogNSxcXG4tICAgICAgICAgICAgJ2xydV9wcmlvJzogNixcXG4tICAgICAgICAgICAgJ2xydV9kZXByaW8nOiA3LFxcbi0gICAgICAgICAgICAnbWlncmF0ZV9ob3QnOiA4LFxcbi0gICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogOSxcXG4tICAgICAgICAgICAgJ3N0YXQnOiAxMCxcXG4rICAgICAgICAgICAgJ3NwbGl0JzogNixcXG4rICAgICAgICAgICAgJ2xydV9wcmlvJzogNyxcXG4rICAgICAgICAgICAgJ2xydV9kZXByaW8nOiA4LFxcbisgICAgICAgICAgICAnbWlncmF0ZV9ob3QnOiA5LFxcbisgICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogMTAsXFxuKyAgICAgICAgICAgICdzdGF0JzogMTEsXFxuICAgICAgICAgICAgIH1cXG4gICAgIGFzc2VydF90cnVlKGR1bXBbJ2FjdGlvbiddID09IGFjdGlvbl92YWxbc2NoZW1lLmFjdGlvbl0sICdhY3Rpb24nLCBkdW1wKVxcbiAgICAgYXNzZXJ0X3RydWUoZHVtcFsnYXBwbHlfaW50ZXJ2YWxfdXMnXSA9PSBzY2hlbWUuIGFwcGx5X2ludGVydmFsX3VzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODoxMS41NTMyMjc2NzlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NjU5OTY5MzQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcInRhcmdldF9vcmRlcl9zdG9yZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3Nob3dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IERBTU9OIGFjdGlvbiBgREFNT1NfU1BMSVRgIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIGEgc3BlY2lmaWVkIG9yZGVyLiBJdCBhZGRzIHN5c2ZzIGludGVyZmFjZXMgdG8gY29uZmlndXJlIHRoZSB0YXJnZXQgb3JkZXIgYW5kIGltcGxlbWVudHMgdGhlIHNwbGl0dGluZyBsb2dpYyBpbiBgZGFtb3NfdmFfc3BsaXRgIHVzaW5nIGBzcGxpdF9mb2xpb190b19vcmRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIGFuZCBzeXNmcyBpbnRlcmZhY2UgaGFuZGxlIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDdhZGY4ODQ0MTE0OTJlMmQ3MDIwMGExZDRhNWIyYWU1NzFhNTRkYjhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyMCAwMzozODowOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uIGIvRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1rZXJuZWwtbW0tZGFtb25cbmluZGV4IDkwN2E1MDRmYjY0YzU0Li5lZThlMjYwYTYzMWNmMiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLW1tLWRhbW9uXG4rKysgYi9Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWtlcm5lbC1tbS1kYW1vblxuQEAgLTI2NSw2ICsyNjUsMTMgQEAgQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuIERlc2NyaXB0aW9uOlx0QWN0aW9uJ3MgdGFyZ2V0IE5VTUEgbm9kZSBpZC4gIFN1cHBvcnRlZCBieSBvbmx5IHJlbGV2YW50XG4gXHRcdGFjdGlvbnMuXG4gXG4rV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL3NjaGVtZXMvXHUwMDNjU1x1MDAzZS90YXJnZXRfb3JkZXJcbitEYXRlOlx0XHRKdWwgMjAyNlxuK0NvbnRhY3Q6XHRTSiBQYXJrIFx1MDAzY3NqQGtlcm5lbC5vcmdcdTAwM2VcbitEZXNjcmlwdGlvbjpcdFRhcmdldCBmb2xpbyBvcmRlciBmb3IgdGhlIGBgc3BsaXRgYCBhY3Rpb24uICBMYXJnZSBmb2xpb3MgaW5cbitcdFx0dGhlIHRhcmdldCByZWdpb24gYXJlIHNwbGl0IGRvd24gdG8gdGhpcyBvcmRlci4gIFZhbGlkIHZhbHVlc1xuK1x0XHRhcmUgMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBhbmQgMi4uSFBBR0VfUE1EX09SREVSLTEuXG4rXG4gV2hhdDpcdFx0L3N5cy9rZXJuZWwvbW0vZGFtb24vYWRtaW4va2RhbW9uZHMvXHUwMDNjS1x1MDAzZS9jb250ZXh0cy9cdTAwM2NDXHUwMDNlL3NjaGVtZXMvXHUwMDNjU1x1MDAzZS9hcHBseV9pbnRlcnZhbF91c1xuIERhdGU6XHRcdFNlcCAyMDIzXG4gQ29udGFjdDpcdFNKIFBhcmsgXHUwMDNjc2pAa2VybmVsLm9yZ1x1MDAzZVxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdCBiL0RvY3VtZW50YXRpb24vbW0vZGFtb24vZGVzaWduLnJzdFxuaW5kZXggYWVkNmNiMWNmNDgzMTAuLjg3YTgwMTk1NGIxYjMwIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi9kZXNpZ24ucnN0XG4rKysgYi9Eb2N1bWVudGF0aW9uL21tL2RhbW9uL2Rlc2lnbi5yc3RcbkBAIC01NDksNiArNTQ5LDExIEBAIHRoYXQgc3VwcG9ydHMgZWFjaCBhY3Rpb24gYXJlIGFzIGJlbG93LlxuICAgIFN1cHBvcnRlZCBieSBgYHZhZGRyYGAgYW5kIGBgZnZhZGRyYGAgb3BlcmF0aW9ucyBzZXQuIFdoZW5cbiAgICBUUkFOU1BBUkVOVF9IVUdFUEFHRSBpcyBkaXNhYmxlZCwgdGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBhY3Rpb24gd2lsbCBqdXN0XG4gICAgZmFpbC5cbisgLSBgYHNwbGl0YGA6IFNwbGl0IGVhY2ggbGFyZ2UgZm9saW8gaW4gdGhlIHJlZ2lvbiBkb3duIHRvIHRoZSBvcmRlciBzcGVjaWZpZWRcbisgICBieSB0aGUgc2NoZW1lJ3MgYGB0YXJnZXRfb3JkZXJgYCAoYGAwYGAgZm9yIG9yZGVyLTAgYmFzZSBwYWdlcywgb3JcbisgICBgYDIuLkhQQUdFX1BNRF9PUkRFUi0xYGApLiAgU3VwcG9ydGVkIGJ5IGBgdmFkZHJgYCBhbmQgYGBmdmFkZHJgYCBvcGVyYXRpb25zXG4rICAgc2V0LiBXaGVuIFRSQU5TUEFSRU5UX0hVR0VQQUdFIGlzIGRpc2FibGVkLCB0aGUgYXBwbGljYXRpb24gb2YgdGhlIGFjdGlvblxuKyAgIHdpbGwganVzdCBmYWlsLlxuICAtIGBgbHJ1X3ByaW9gYDogUHJpb3JpdGl6ZSB0aGUgcmVnaW9uIG9uIGl0cyBMUlUgbGlzdHMuXG4gICAgU3VwcG9ydGVkIGJ5IGBgcGFkZHJgYCBvcGVyYXRpb25zIHNldC5cbiAgLSBgYGxydV9kZXByaW9gYDogRGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RhbW9uLmggYi9pbmNsdWRlL2xpbnV4L2RhbW9uLmhcbmluZGV4IGY2OTQ0MmE5ZDQzMTI4Li44OGI2MWI5MDBhMzZkYiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGFtb24uaFxuKysrIGIvaW5jbHVkZS9saW51eC9kYW1vbi5oXG5AQCAtMTEwLDYgKzExMCw3IEBAIHN0cnVjdCBkYW1vbl90YXJnZXQge1xuICAqIEBEQU1PU19IVUdFUEFHRTpcdENhbGwgYGBtYWR2aXNlKClgYCBmb3IgdGhlIHJlZ2lvbiB3aXRoIE1BRFZfSFVHRVBBR0UuXG4gICogQERBTU9TX05PSFVHRVBBR0U6XHRDYWxsIGBgbWFkdmlzZSgpYGAgZm9yIHRoZSByZWdpb24gd2l0aCBNQURWX05PSFVHRVBBR0UuXG4gICogQERBTU9TX0NPTExBUFNFOlx0Q2FsbCBgYG1hZHZpc2UoKWBgIGZvciB0aGUgcmVnaW9uIHdpdGggTUFEVl9DT0xMQVBTRS5cbisgKiBAREFNT1NfU1BMSVQ6XHRTcGxpdCBlYWNoIGxhcmdlIGZvbGlvIGluIHRoZSByZWdpb24gdG8gYSBzbWFsbGVyIG9yZGVyLlxuICAqIEBEQU1PU19MUlVfUFJJTzpcdFByaW9yaXRpemUgdGhlIHJlZ2lvbiBvbiBpdHMgTFJVIGxpc3RzLlxuICAqIEBEQU1PU19MUlVfREVQUklPOlx0RGVwcmlvcml0aXplIHRoZSByZWdpb24gb24gaXRzIExSVSBsaXN0cy5cbiAgKiBAREFNT1NfTUlHUkFURV9IT1Q6ICBNaWdyYXRlIHRoZSByZWdpb25zIHByaW9yaXRpemluZyB3YXJtZXIgcmVnaW9ucy5cbkBAIC0xMzAsNiArMTMxLDcgQEAgZW51bSBkYW1vc19hY3Rpb24ge1xuIFx0REFNT1NfSFVHRVBBR0UsXG4gXHREQU1PU19OT0hVR0VQQUdFLFxuIFx0REFNT1NfQ09MTEFQU0UsXG4rXHREQU1PU19TUExJVCxcbiBcdERBTU9TX0xSVV9QUklPLFxuIFx0REFNT1NfTFJVX0RFUFJJTyxcbiBcdERBTU9TX01JR1JBVEVfSE9ULFxuQEAgLTU4MiwxMCArNTg0LDE1IEBAIHN0cnVjdCBkYW1vcyB7XG4gXHRzdHJ1Y3QgZGFtb3NfcXVvdGEgcXVvdGE7XG4gXHRzdHJ1Y3QgZGFtb3Nfd2F0ZXJtYXJrcyB3bWFya3M7XG4gXHR1bmlvbiB7XG4tXHRcdHN0cnVjdCB7XG4tXHRcdFx0aW50IHRhcmdldF9uaWQ7XG4tXHRcdFx0c3RydWN0IGRhbW9zX21pZ3JhdGVfZGVzdHMgbWlncmF0ZV9kZXN0cztcbi1cdFx0fTtcbitcdFx0aW50IHRhcmdldF9uaWQ7XG4rXHRcdHN0cnVjdCBkYW1vc19taWdyYXRlX2Rlc3RzIG1pZ3JhdGVfZGVzdHM7XG4rXHRcdC8qXG4rXHRcdCAqIEBvcmRlcjogdGFyZ2V0IGZvbGlvIG9yZGVyIGZvciBEQU1PU19TUExJVC5cbitcdFx0ICogU3BsaXQgbGFyZ2UgZm9saW9zIGRvd24gdG8gdGhpcyBvcmRlci4gIDAgZm9yXG4rXHRcdCAqIG9yZGVyLTAgYmFzZSBwYWdlcywgMi4uSFBBR0VfUE1EX09SREVSLTEgZm9yXG4rXHRcdCAqIHNtYWxsZXIgbVRIUC4gIE9yZGVyLTEgaXMgcmVqZWN0ZWQuXG4rXHRcdCAqL1xuK1x0XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4gXHR9O1xuIFx0c3RydWN0IGxpc3RfaGVhZCBjb3JlX2ZpbHRlcnM7XG4gXHRzdHJ1Y3QgbGlzdF9oZWFkIG9wc19maWx0ZXJzO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL2NvcmUuYyBiL21tL2RhbW9uL2NvcmUuY1xuaW5kZXggODA2YTY3ZDAyYTZlOTAuLjM5NGM2MjQ1NWFkNTZiIDEwMDY0NFxuLS0tIGEvbW0vZGFtb24vY29yZS5jXG4rKysgYi9tbS9kYW1vbi9jb3JlLmNcbkBAIC02OTMsNiArNjkzLDcgQEAgc3RydWN0IGRhbW9zICpkYW1vbl9uZXdfc2NoZW1lKHN0cnVjdCBkYW1vc19hY2Nlc3NfcGF0dGVybiAqcGF0dGVybixcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHRzY2hlbWUtXHUwMDNlcGF0dGVybiA9ICpwYXR0ZXJuO1xuIFx0c2NoZW1lLVx1MDAzZWFjdGlvbiA9IGFjdGlvbjtcbitcdHNjaGVtZS1cdTAwM2VvcmRlciA9IDA7XG4gXHRzY2hlbWUtXHUwMDNlYXBwbHlfaW50ZXJ2YWxfdXMgPSBhcHBseV9pbnRlcnZhbF91cztcbiBcdC8qXG4gXHQgKiBuZXh0X2FwcGx5X3NpcyB3aWxsIGJlIHNldCB3aGVuIGtkYW1vbmQgc3RhcnRzLiAgV2hpbGUga2RhbW9uZCBpc1xuQEAgLTE0NDYsNiArMTQ0Nyw3IEBAIHN0YXRpYyBpbnQgZGFtb3NfY29tbWl0KHN0cnVjdCBkYW1vcyAqZHN0LCBzdHJ1Y3QgZGFtb3MgKnNyYylcbiBcbiBcdGRzdC1cdTAwM2VwYXR0ZXJuID0gc3JjLVx1MDAzZXBhdHRlcm47XG4gXHRkc3QtXHUwMDNlYWN0aW9uID0gc3JjLVx1MDAzZWFjdGlvbjtcbitcdGRzdC1cdTAwM2VvcmRlciA9IHNyYy1cdTAwM2VvcmRlcjtcbiBcdGRzdC1cdTAwM2VhcHBseV9pbnRlcnZhbF91cyA9IHNyYy1cdTAwM2VhcHBseV9pbnRlcnZhbF91cztcbiBcbiBcdGVyciA9IGRhbW9zX2NvbW1pdF9xdW90YShcdTAwMjZkc3QtXHUwMDNlcXVvdGEsIFx1MDAyNnNyYy1cdTAwM2VxdW90YSk7XG5kaWZmIC0tZ2l0IGEvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jIGIvbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jXG5pbmRleCAzMmY0OTVhOTZiMTdhOC4uNzI1ZWQ4MWNjZjZjYWMgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmNcbisrKyBiL21tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY1xuQEAgLTQsNyArNCw5IEBAXG4gICovXG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L251bWEuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwic3lzZnMtY29tbW9uLmhcIlxuIFxuQEAgLTIyNjAsNiArMjI2Miw3IEBAIHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUge1xuIFx0c3RydWN0IGRhbW9uX3N5c2ZzX3N0YXRzICpzdGF0cztcbiBcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWVfcmVnaW9ucyAqdHJpZWRfcmVnaW9ucztcbiBcdGludCB0YXJnZXRfbmlkO1xuK1x0dW5zaWduZWQgaW50IHRhcmdldF9vcmRlcjtcbiBcdHN0cnVjdCBkYW1vc19zeXNmc19kZXN0cyAqZGVzdHM7XG4gfTtcbiBcbkBAIC0yMjkzLDYgKzIyOTYsMTAgQEAgc3RhdGljIHN0cnVjdCBkYW1vc19zeXNmc19hY3Rpb25fbmFtZSBkYW1vc19zeXNmc19hY3Rpb25fbmFtZXNbXSA9IHtcbiBcdFx0LmFjdGlvbiA9IERBTU9TX0NPTExBUFNFLFxuIFx0XHQubmFtZSA9IFwiY29sbGFwc2VcIixcbiBcdH0sXG4rXHR7XG4rXHRcdC5hY3Rpb24gPSBEQU1PU19TUExJVCxcbitcdFx0Lm5hbWUgPSBcInNwbGl0XCIsXG4rXHR9LFxuIFx0e1xuIFx0XHQuYWN0aW9uID0gREFNT1NfTFJVX1BSSU8sXG4gXHRcdC5uYW1lID0gXCJscnVfcHJpb1wiLFxuQEAgLTIzMjYsNiArMjMzMyw3IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpkYW1vbl9zeXNmc19zY2hlbWVfYWxsb2MoXG4gXHRzY2hlbWUtXHUwMDNlYWN0aW9uID0gYWN0aW9uO1xuIFx0c2NoZW1lLVx1MDAzZWFwcGx5X2ludGVydmFsX3VzID0gYXBwbHlfaW50ZXJ2YWxfdXM7XG4gXHRzY2hlbWUtXHUwMDNldGFyZ2V0X25pZCA9IE5VTUFfTk9fTk9ERTtcbitcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSAwO1xuIFx0cmV0dXJuIHNjaGVtZTtcbiB9XG4gXG5AQCAtMjY0NSw2ICsyNjUzLDQwIEBAIHN0YXRpYyBzc2l6ZV90IHRhcmdldF9uaWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosXG4gXHRyZXR1cm4gZXJyID8gZXJyIDogY291bnQ7XG4gfVxuIFxuK3N0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuK1x0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1Zilcbit7XG4rXHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lICpzY2hlbWUgPSBjb250YWluZXJfb2Yoa29iaixcbitcdFx0XHRzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKTtcbitcbitcdHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgXCIldVxcblwiLCBzY2hlbWUtXHUwMDNldGFyZ2V0X29yZGVyKTtcbit9XG4rXG4rc3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxuK1x0XHRzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuK3tcbitcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUgKnNjaGVtZSA9IGNvbnRhaW5lcl9vZihrb2JqLFxuK1x0XHRcdHN0cnVjdCBkYW1vbl9zeXNmc19zY2hlbWUsIGtvYmopO1xuK1x0dW5zaWduZWQgaW50IHZhbDtcbitcdGludCBlcnI7XG4rXG4rXHRlcnIgPSBrc3RydG91aW50KGJ1ZiwgMCwgXHUwMDI2dmFsKTtcbitcdGlmIChlcnIpXG4rXHRcdHJldHVybiBlcnI7XG4rXG4rI2lmZGVmIENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRVxuK1x0LyogVmFsaWQgc3BsaXQgdGFyZ2V0czogMCAob3JkZXItMCBiYXNlIHBhZ2VzKSBvciAyLi5IUEFHRV9QTURfT1JERVItMS4gKi9cbitcdGlmICh2YWwgIT0gMCBcdTAwMjZcdTAwMjYgKHZhbCBcdTAwM2MgMiB8fCB2YWwgXHUwMDNlPSBIUEFHRV9QTURfT1JERVIpKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbisjZWxzZVxuK1x0aWYgKHZhbCAhPSAwKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbisjZW5kaWZcbitcbitcdHNjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXIgPSB2YWw7XG4rXHRyZXR1cm4gY291bnQ7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIGRhbW9uX3N5c2ZzX3NjaGVtZV9yZWxlYXNlKHN0cnVjdCBrb2JqZWN0ICprb2JqKVxuIHtcbiBcdGtmcmVlKGNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgZGFtb25fc3lzZnNfc2NoZW1lLCBrb2JqKSk7XG5AQCAtMjY1OSwxMCArMjcwMSwxNCBAQCBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV9hcHBseV9pbnRlcnZhbF91c19hdHRyID1cbiBzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxuIFx0XHRfX0FUVFJfUldfTU9ERSh0YXJnZXRfbmlkLCAwNjAwKTtcbiBcbitzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfb3JkZXJfYXR0ciA9XG4rXHRcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XG4rXG4gc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRhbW9uX3N5c2ZzX3NjaGVtZV9hdHRyc1tdID0ge1xuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX2FjdGlvbl9hdHRyLmF0dHIsXG4gXHRcdTAwMjZkYW1vbl9zeXNmc19zY2hlbWVfYXBwbHlfaW50ZXJ2YWxfdXNfYXR0ci5hdHRyLFxuIFx0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9uaWRfYXR0ci5hdHRyLFxuK1x0XHUwMDI2ZGFtb25fc3lzZnNfc2NoZW1lX3RhcmdldF9vcmRlcl9hdHRyLmF0dHIsXG4gXHROVUxMLFxuIH07XG4gQVRUUklCVVRFX0dST1VQUyhkYW1vbl9zeXNmc19zY2hlbWUpO1xuQEAgLTMwMTEsNiArMzA1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgZGFtb3MgKmRhbW9uX3N5c2ZzX21rX3NjaGVtZShcbiBcdGlmICghc2NoZW1lKVxuIFx0XHRyZXR1cm4gTlVMTDtcbiBcbitcdHNjaGVtZS1cdTAwM2VvcmRlciA9IHN5c2ZzX3NjaGVtZS1cdTAwM2V0YXJnZXRfb3JkZXI7XG4rXG4gXHRlcnIgPSBkYW1vc19zeXNmc19hZGRfcXVvdGFfc2NvcmUoc3lzZnNfcXVvdGFzLVx1MDAzZWdvYWxzLCBcdTAwMjZzY2hlbWUtXHUwMDNlcXVvdGEpO1xuIFx0aWYgKGVycikge1xuIFx0XHRkYW1vbl9kZXN0cm95X3NjaGVtZShzY2hlbWUpO1xuZGlmZiAtLWdpdCBhL21tL2RhbW9uL3ZhZGRyLmMgYi9tbS9kYW1vbi92YWRkci5jXG5pbmRleCBkMTBiODA0MmFkYjViYS4uYTg2MDc0NDg1ODRkNTUgMTAwNjQ0XG4tLS0gYS9tbS9kYW1vbi92YWRkci5jXG4rKysgYi9tbS9kYW1vbi92YWRkci5jXG5AQCAtNiw2ICs2LDcgQEBcbiAjZGVmaW5lIHByX2ZtdChmbXQpIFwiZGFtb24tdmE6IFwiIGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2hpZ2htZW0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2VfbW0uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2h1Z2V0bGIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tYW4uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21tdV9ub3RpZmllci5oXHUwMDNlXG5AQCAtODk2LDYgKzg5NywxMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3RhdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4gXHRyZXR1cm4gMDtcbiB9XG4gXG4rLypcbisgKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxuKyAqIHVzaW5nIHRoZSBleGlzdGluZyBzcGxpdF9mb2xpb190b19vcmRlcigpLlxuKyAqXG4rICogTG9ja2luZzogZm9saW9fd2Fsa19zdGFydCgpIHJldHVybnMgdGhlIGZvbGlvIHdpdGggdGhlIHBhZ2UgdGFibGUgbG9ja1xuKyAqIGhlbGQuICBzcGxpdF9mb2xpb190b19vcmRlcigpIG11c3Qgbm90IHJ1biB1bmRlciB0aGUgcGFnZSB0YWJsZSBsb2NrLFxuKyAqIHNvIHdlIHBpbiB0aGUgZm9saW8gKHJlZmVyZW5jZSArIGxvY2spLCBlbmQgdGhlIHdhbGsgdG8gZHJvcCB0aGUgcGFnZVxuKyAqIHRhYmxlIGxvY2ssIGFuZCBzcGxpdCB3aGlsZSBob2xkaW5nIG9ubHkgbW1hcF9yZWFkX2xvY2suXG4rICogc3BsaXRfZm9saW9fdG9fb3JkZXIoKSByZXR1cm5zIC1FQlVTWSBmb3IgYSByYWNlZCBvciBwaW5uZWQgZm9saW87XG4rICogd2Ugc2tpcCBzdWNoIGZvbGlvcy5cbisgKi9cbitzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zcGxpdChzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0YXJnZXQsXG4rXHRcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcbitcdFx0dW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcbit7XG4rXHR1bnNpZ25lZCBpbnQgdGFyZ2V0X29yZGVyID0gcy1cdTAwM2VvcmRlcjtcbitcdHVuc2lnbmVkIGxvbmcgYWRkciA9IEFMSUdOX0RPV04oci1cdTAwM2Vhci5zdGFydCwgUEFHRV9TSVpFKTtcbitcdHVuc2lnbmVkIGxvbmcgZW5kID0gci1cdTAwM2Vhci5lbmQ7XG4rXHR1bnNpZ25lZCBsb25nIGFwcGxpZWQgPSAwO1xuK1x0c3RydWN0IG1tX3N0cnVjdCAqbW07XG4rXG4rXHRtbSA9IGRhbW9uX2dldF9tbSh0YXJnZXQpO1xuK1x0aWYgKCFtbSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHR3aGlsZSAoYWRkciBcdTAwM2MgZW5kKSB7XG4rXHRcdHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hO1xuK1x0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuK1x0XHRzdHJ1Y3QgZm9saW9fd2FsayBmdztcbitcdFx0dW5zaWduZWQgbG9uZyBmb2xpb19zeiA9IDA7XG4rXG4rXHRcdGlmIChtbWFwX3JlYWRfbG9ja19raWxsYWJsZShtbSkpXG4rXHRcdFx0YnJlYWs7XG4rXG4rXHRcdHZtYSA9IHZtYV9sb29rdXAobW0sIGFkZHIpO1xuK1x0XHRpZiAoIXZtYSkge1xuK1x0XHRcdC8qIFNraXAgdGhlIGdhcCB0byB0aGUgbmV4dCBWTUEsIGlmIGFueS4gKi9cbitcdFx0XHR2bWEgPSBmaW5kX3ZtYShtbSwgYWRkcik7XG4rXHRcdFx0bW1hcF9yZWFkX3VubG9jayhtbSk7XG4rXHRcdFx0aWYgKCF2bWEgfHwgdm1hLVx1MDAzZXZtX3N0YXJ0IFx1MDAzZT0gZW5kKVxuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0YWRkciA9IHZtYS1cdTAwM2V2bV9zdGFydDtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHQvKiBGb2xpb3MgaW4gdGhlc2UgVk1BcyBhcmUgbm90IG91ciBidXNpbmVzcy4gKi9cbitcdFx0aWYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgKFZNX0hVR0VUTEIgfCBWTV9NSVhFRE1BUCkpIHtcbitcdFx0XHRhZGRyID0gdm1hLVx1MDAzZXZtX2VuZDtcbitcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHRmb2xpbyA9IGZvbGlvX3dhbGtfc3RhcnQoXHUwMDI2ZncsIHZtYSwgYWRkciwgMCk7XG4rXHRcdGlmICghZm9saW8pIHtcbitcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0XHRhZGRyICs9IFBBR0VfU0laRTtcbitcdFx0XHRjb250aW51ZTtcbitcdFx0fVxuK1xuK1x0XHRmb2xpb19zeiA9IGZvbGlvX3NpemUoZm9saW8pO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBGb3IgZmlsZS1iYWNrZWQgZm9saW9zLCBAdGFyZ2V0X29yZGVyIG1heSBiZSBiZWxvdyB0aGVcbitcdFx0ICogZmlsZXN5c3RlbSdzIG1pbmltdW0gZm9saW8gb3JkZXIgKG1hcHBpbmdfbWluX2ZvbGlvX29yZGVyKCkpLlxuK1x0XHQgKiBzcGxpdF9mb2xpb190b19vcmRlcigpIHdpbGwgc2ltcGx5IGZhaWwgaW4gdGhhdCBjYXNlIGFuZFxuK1x0XHQgKiB3ZSBza2lwIHRoZSBmb2xpby4gIFRoaXMgaXMgYSBzYWZlIG5vLW9wOyBmdXR1cmUgd29yayBjYW5cbitcdFx0ICogYWRqdXN0IHRhcmdldF9vcmRlciB1cHdhcmQgbGlrZSBzcGxpdF9odWdlX3BhZ2VzX2luX3BpZCgpXG4rXHRcdCAqIGRvZXMgd2hlbiBhIHNwZWNpZmljIGZpbGVzeXN0ZW0gbmVlZHMgaXQuXG4rXHRcdCAqL1xuK1xuK1x0XHQvKiBIb25vdXIgdGhlIHNjaGVtZSdzIG9wZXJhdGlvbnMtbGF5ZXIgZmlsdGVycy4gKi9cbitcdFx0aWYgKGRhbW9zX29wc19oYXNfZmlsdGVyKHMpKSB7XG4rXHRcdFx0aWYgKGRhbW9zX3ZhX2ZpbHRlcl9vdXQocywgZm9saW8sIHZtYSwgYWRkcixcbitcdFx0XHRcdFx0ZncubGV2ZWwgPT0gRldfTEVWRUxfUFRFID8gZncucHRlcCA6IE5VTEwsXG4rXHRcdFx0XHRcdGZ3LmxldmVsID09IEZXX0xFVkVMX1BNRCA/IGZ3LnBtZHAgOiBOVUxMKSkge1xuK1x0XHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXHRcdFx0XHRtbWFwX3JlYWRfdW5sb2NrKG1tKTtcbitcdFx0XHRcdGdvdG8gbmV4dDtcbitcdFx0XHR9XG4rXHRcdFx0KnN6X2ZpbHRlcl9wYXNzZWQgKz0gZm9saW9fc3o7XG4rXHRcdH1cbitcbitcdFx0aWYgKGZvbGlvX29yZGVyKGZvbGlvKSBcdTAwM2UgdGFyZ2V0X29yZGVyIFx1MDAyNlx1MDAyNiBmb2xpb190cnlsb2NrKGZvbGlvKSkge1xuK1x0XHRcdGZvbGlvX2dldChmb2xpbyk7XG4rXHRcdFx0LyogRHJvcCB0aGUgcGFnZSB0YWJsZSBsb2NrIGJlZm9yZSBzcGxpdHRpbmcuICovXG4rXHRcdFx0Zm9saW9fd2Fsa19lbmQoXHUwMDI2ZncsIHZtYSk7XG4rXG4rXHRcdFx0aWYgKCFzcGxpdF9mb2xpb190b19vcmRlcihmb2xpbywgdGFyZ2V0X29yZGVyKSlcbitcdFx0XHRcdGFwcGxpZWQgKz0gZm9saW9fc3o7XG4rXG4rXHRcdFx0Zm9saW9fdW5sb2NrKGZvbGlvKTtcbitcdFx0XHRmb2xpb19wdXQoZm9saW8pO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGZvbGlvX3dhbGtfZW5kKFx1MDAyNmZ3LCB2bWEpO1xuK1x0XHR9XG4rXHRcdG1tYXBfcmVhZF91bmxvY2sobW0pO1xuK25leHQ6XG4rXHRcdGFkZHIgPSBBTElHTl9ET1dOKGFkZHIsIGZvbGlvX3N6KSArIGZvbGlvX3N6O1xuK1x0XHRjb25kX3Jlc2NoZWQoKTtcbitcdH1cbitcbitcdG1tcHV0KG1tKTtcbitcdHJldHVybiBhcHBsaWVkO1xuK31cbitcbiBzdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxuIFx0XHRzdHJ1Y3QgZGFtb25fdGFyZ2V0ICp0LCBzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLFxuIFx0XHRzdHJ1Y3QgZGFtb3MgKnNjaGVtZSwgdW5zaWduZWQgbG9uZyAqc3pfZmlsdGVyX3Bhc3NlZClcbkBAIC05MjYsNiArMTAzMiw4IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9uX3ZhX2FwcGx5X3NjaGVtZShzdHJ1Y3QgZGFtb25fY3R4ICpjdHgsXG4gXHRcdHJldHVybiBkYW1vc192YV9taWdyYXRlKHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4gXHRjYXNlIERBTU9TX1NUQVQ6XG4gXHRcdHJldHVybiBkYW1vc192YV9zdGF0KHQsIHIsIHNjaGVtZSwgc3pfZmlsdGVyX3Bhc3NlZCk7XG4rXHRjYXNlIERBTU9TX1NQTElUOlxuK1x0XHRyZXR1cm4gZGFtb3NfdmFfc3BsaXQodCwgciwgc2NoZW1lLCBzel9maWx0ZXJfcGFzc2VkKTtcbiBcdGRlZmF1bHQ6XG4gXHRcdC8qXG4gXHRcdCAqIERBTU9TIGFjdGlvbnMgdGhhdCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgJ3ZhZGRyJy5cbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL01ha2VmaWxlXG5pbmRleCBlY2UyNDRlNWM1Yjk1Yy4uYTYyM2MyNzEzNTVmZmUgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9NYWtlZmlsZVxuKysrIGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vTWFrZWZpbGVcbkBAIC0xMiw2ICsxMiw3IEBAIFRFU1RfUFJPR1MgKz0gc3lzZnMuc2hcbiBURVNUX1BST0dTICs9IHN5c2ZzLnB5XG4gVEVTVF9QUk9HUyArPSBzeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zX3dzc19lc3RpbWF0aW9uLnB5XG4gVEVTVF9QUk9HUyArPSBkYW1vc19xdW90YS5weSBkYW1vc19xdW90YV9nb2FsLnB5IGRhbW9zX2FwcGx5X2ludGVydmFsLnB5XG4rVEVTVF9QUk9HUyArPSBkYW1vc19zcGxpdC5weVxuIFRFU1RfUFJPR1MgKz0gZGFtb3NfdHJpZWRfcmVnaW9ucy5weSBkYW1vbl9ucl9yZWdpb25zLnB5XG4gVEVTVF9QUk9HUyArPSBzeXNmc19yZWZyZXNoLnB5XG4gVEVTVF9QUk9HUyArPSByZWNsYWltLnNoIGxydV9zb3J0LnNoXG5kaWZmIC0tZ2l0IGEvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vX2RhbW9uX3N5c2ZzLnB5XG5pbmRleCBlNmEyMjY1ZDcyMWU4Yi4uNWEwMWYzMWFkOWYyNmQgMTAwNjQ0XG4tLS0gYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9fZGFtb25fc3lzZnMucHlcbisrKyBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL19kYW1vbl9zeXNmcy5weVxuQEAgLTQxOSw2ICs0MTksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgZmlsdGVycyA9IE5vbmVcbiAgICAgYXBwbHlfaW50ZXJ2YWxfdXMgPSBOb25lXG4gICAgIHRhcmdldF9uaWQgPSBOb25lXG4rICAgIHRhcmdldF9vcmRlciA9IE5vbmVcbiAgICAgZGVzdHMgPSBOb25lXG4gICAgIGlkeCA9IE5vbmVcbiAgICAgY29udGV4dCA9IE5vbmVcbkBAIC00MjksNyArNDMwLDcgQEAgY2xhc3MgRGFtb3M6XG4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3Rpb249J3N0YXQnLCBhY2Nlc3NfcGF0dGVybj1EYW1vc0FjY2Vzc1BhdHRlcm4oKSxcbiAgICAgICAgICAgICAgICAgIHF1b3RhPURhbW9zUXVvdGEoKSwgd2F0ZXJtYXJrcz1EYW1vc1dhdGVybWFya3MoKSxcbiAgICAgICAgICAgICAgICAgIGNvcmVfZmlsdGVycz1bXSwgb3BzX2ZpbHRlcnM9W10sIGZpbHRlcnM9W10sIHRhcmdldF9uaWQ9MCxcbi0gICAgICAgICAgICAgICAgIGRlc3RzPURhbW9zRGVzdHMoKSwgYXBwbHlfaW50ZXJ2YWxfdXM9MCk6XG4rICAgICAgICAgICAgICAgICB0YXJnZXRfb3JkZXI9MCwgZGVzdHM9RGFtb3NEZXN0cygpLCBhcHBseV9pbnRlcnZhbF91cz0wKTpcbiAgICAgICAgIHNlbGYuYWN0aW9uID0gYWN0aW9uXG4gICAgICAgICBzZWxmLmFjY2Vzc19wYXR0ZXJuID0gYWNjZXNzX3BhdHRlcm5cbiAgICAgICAgIHNlbGYuYWNjZXNzX3BhdHRlcm4uc2NoZW1lID0gc2VsZlxuQEAgLTQ0OCw2ICs0NDksNyBAQCBjbGFzcyBEYW1vczpcbiAgICAgICAgIHNlbGYuZmlsdGVycy5zY2hlbWUgPSBzZWxmXG4gXG4gICAgICAgICBzZWxmLnRhcmdldF9uaWQgPSB0YXJnZXRfbmlkXG4rICAgICAgICBzZWxmLnRhcmdldF9vcmRlciA9IHRhcmdldF9vcmRlclxuICAgICAgICAgc2VsZi5kZXN0cyA9IGRlc3RzXG4gICAgICAgICBzZWxmLmRlc3RzLnNjaGVtZSA9IHNlbGZcbiBcbkBAIC00OTIsNiArNDk0LDExIEBAIGNsYXNzIERhbW9zOlxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgIHJldHVybiBlcnJcbiBcbisgICAgICAgIGVyciA9IHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3lzZnNfZGlyKCksICd0YXJnZXRfb3JkZXInKSwgJyVkJyAlXG4rICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0X29yZGVyKVxuKyAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuKyAgICAgICAgICAgIHJldHVybiBlcnJcbitcbiAgICAgICAgIGVyciA9IHNlbGYuZGVzdHMuc3RhZ2UoKVxuICAgICAgICAgaWYgZXJyIGlzIG5vdCBOb25lOlxuICAgICAgICAgICAgIHJldHVybiBlcnJcbmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weSBiL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2RhbW9zX3NwbGl0LnB5XG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLjA4OWZiZTBmMGQ0ZDNiXG4tLS0gL2Rldi9udWxsXG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9kYW1vc19zcGxpdC5weVxuQEAgLTAsMCArMSwxMjUgQEBcbisjIS91c3IvYmluL2VudiBweXRob24zXG4rIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuKyNcbisjIEZ1bmN0aW9uYWwgdGVzdCBmb3IgdGhlIERBTU9TX1NQTElUIGFjdGlvbi5cbisjXG4rIyBBIGNoaWxkIHByb2Nlc3MgYWxsb2NhdGVzIGEgTUFEVl9IVUdFUEFHRS1iYWNrZWQgYW5vbnltb3VzIHJlZ2lvbiBhbmRcbisjIGZhdWx0cyBpdCBpbiBzbyB0aGF0IGl0IGlzIGJhY2tlZCBieSAobSlUSFBzLiAgVGhlIHBhcmVudCB0aGVuIHJ1bnMgYVxuKyMgREFNT04vREFNT1Mgc2NoZW1lIHdpdGggYWN0aW9uICdzcGxpdCcgYW5kIHRhcmdldF9vcmRlciAwIGFnYWluc3QgdGhlXG4rIyBjaGlsZCBhbmQgY2hlY2tzIHRoYXQgdGhlIGh1Z2UgcGFnZXMgYXJlIHNwbGl0IGludG8gYmFzZSBwYWdlcywgaS5lLiB0aGVcbisjIGNoaWxkJ3MgQW5vbkh1Z2VQYWdlcyAoYXMgcmVwb3J0ZWQgYnkgL3Byb2MvXHUwMDNjcGlkXHUwMDNlL3NtYXBzKSBkcm9wcy5cbitcbitpbXBvcnQgY3R5cGVzXG4raW1wb3J0IG9zXG4raW1wb3J0IHNpZ25hbFxuK2ltcG9ydCBzeXNcbitpbXBvcnQgdGltZVxuK1xuK2ltcG9ydCBfZGFtb25fc3lzZnNcbitcbitQTURfU0laRSA9IDIgKiAxMDI0ICogMTAyNFxuK01BRFZfSFVHRVBBR0UgPSAxNFxuK1BST1RfUkVBRF9XUklURSA9IDB4MSB8IDB4MlxuK01BUF9QUklWQVRFX0FOT04gPSAweDIgfCAweDIwXG4rUkVHSU9OX1NJWkUgPSAzMiAqIFBNRF9TSVpFXG4rXG4rZGVmIGNoaWxkX3dvcmtsb2FkKCk6XG4rICAgICcnJ0FsbG9jYXRlIGEgUE1ELWFsaWduZWQsIFRIUC1iYWNrZWQgcmVnaW9uLCBmYXVsdCBpdCBpbiwgdGhlbiBpZGxlLicnJ1xuKyAgICBsaWJjID0gY3R5cGVzLkNETEwoJ2xpYmMuc28uNicsIHVzZV9lcnJubz1UcnVlKVxuKyAgICBsaWJjLm1tYXAucmVzdHlwZSA9IGN0eXBlcy5jX3ZvaWRfcFxuKyAgICBsaWJjLm1tYXAuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBjdHlwZXMuY19zaXplX3QsIGN0eXBlcy5jX2ludCxcbisgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50LCBjdHlwZXMuY19sb25nXVxuKyAgICBsaWJjLm1hZHZpc2UuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9wLCBjdHlwZXMuY19zaXplX3QsIGN0eXBlcy5jX2ludF1cbitcbisgICAgIyBPdmVyLWFsbG9jYXRlIHNvIHRoYXQgYSBQTUQtYWxpZ25lZCB3aW5kb3cgaXMgYXZhaWxhYmxlLlxuKyAgICByYXcgPSBsaWJjLm1tYXAoTm9uZSwgUkVHSU9OX1NJWkUgKyBQTURfU0laRSwgUFJPVF9SRUFEX1dSSVRFLFxuKyAgICAgICAgICAgICAgICAgICAgTUFQX1BSSVZBVEVfQU5PTiwgLTEsIDApXG4rICAgIGlmIHJhdyBpcyBOb25lIG9yIHJhdyA9PSBjdHlwZXMuY192b2lkX3AoLTEpLnZhbHVlOlxuKyAgICAgICAgb3MuX2V4aXQoMilcbisgICAgYmFzZSA9IChyYXcgKyBQTURfU0laRSAtIDEpIFx1MDAyNiB+KFBNRF9TSVpFIC0gMSlcbisgICAgbGliYy5tYWR2aXNlKGN0eXBlcy5jX3ZvaWRfcChiYXNlKSwgUkVHSU9OX1NJWkUsIE1BRFZfSFVHRVBBR0UpXG4rXG4rICAgIGJ1ZiA9IChjdHlwZXMuY19jaGFyICogUkVHSU9OX1NJWkUpLmZyb21fYWRkcmVzcyhiYXNlKVxuKyAgICBmb3Igb2ZmIGluIHJhbmdlKDAsIFJFR0lPTl9TSVpFLCA0MDk2KTpcbisgICAgICAgIGJ1ZltvZmZdID0gMVxuK1xuKyAgICAjIFJlYWR5OyBpZGxlIHVudGlsIHRoZSBwYXJlbnQgdGVhcnMgdXMgZG93bi5cbisgICAgc2lnbmFsLnBhdXNlKClcbitcbitkZWYgYW5vbl9odWdlX2tiKHBpZCk6XG4rICAgIHRvdGFsID0gMFxuKyAgICB0cnk6XG4rICAgICAgICB3aXRoIG9wZW4oJy9wcm9jLyVkL3NtYXBzJyAlIHBpZCkgYXMgZjpcbisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOlxuKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0Fub25IdWdlUGFnZXM6Jyk6XG4rICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSBpbnQobGluZS5zcGxpdCgpWzFdKVxuKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6XG4rICAgICAgICByZXR1cm4gLTFcbisgICAgcmV0dXJuIHRvdGFsXG4rXG4rZGVmIG1haW4oKTpcbisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKCcvc3lzL2tlcm5lbC9tbS90cmFuc3BhcmVudF9odWdlcGFnZS9lbmFibGVkJyk6XG4rICAgICAgICBwcmludCgnU0tJUDogdHJhbnNwYXJlbnQgaHVnZXBhZ2UgaXMgbm90IGF2YWlsYWJsZScpXG4rICAgICAgICBleGl0KDApXG4rXG4rICAgIHBpZCA9IG9zLmZvcmsoKVxuKyAgICBpZiBwaWQgPT0gMDpcbisgICAgICAgIGNoaWxkX3dvcmtsb2FkKClcbisgICAgICAgIG9zLl9leGl0KDApXG4rXG4rICAgIHRyeTpcbisgICAgICAgICMgR2l2ZSB0aGUgY2hpbGQgdGltZSB0byBmYXVsdCBpbiBpdHMgaHVnZSBwYWdlcy5cbisgICAgICAgIHRpbWUuc2xlZXAoMilcbisgICAgICAgIGJlZm9yZSA9IGFub25faHVnZV9rYihwaWQpXG4rICAgICAgICBpZiBiZWZvcmUgXHUwMDNjPSAwOlxuKyAgICAgICAgICAgIHByaW50KCdTS0lQOiB3b3JrbG9hZCBkaWQgbm90IGdldCBhbnkgVEhQIChBbm9uSHVnZVBhZ2VzPSVkKSdcbisgICAgICAgICAgICAgICAgICAlIGJlZm9yZSlcbisgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpXG4rICAgICAgICAgICAgZXhpdCgwKVxuK1xuKyAgICAgICAgIyBTcGxpdCBldmVyeSBsYXJnZSBmb2xpbyBpbiB0aGUgdGFyZ2V0IGRvd24gdG8gb3JkZXItMCBiYXNlIHBhZ2VzLlxuKyAgICAgICAga2RhbW9uZHMgPSBfZGFtb25fc3lzZnMuS2RhbW9uZHMoW19kYW1vbl9zeXNmcy5LZGFtb25kKFxuKyAgICAgICAgICAgIGNvbnRleHRzPVtfZGFtb25fc3lzZnMuRGFtb25DdHgoXG4rICAgICAgICAgICAgICAgIG9wcz0ndmFkZHInLFxuKyAgICAgICAgICAgICAgICB0YXJnZXRzPVtfZGFtb25fc3lzZnMuRGFtb25UYXJnZXQocGlkPXBpZCldLFxuKyAgICAgICAgICAgICAgICBzY2hlbWVzPVtfZGFtb25fc3lzZnMuRGFtb3MoXG4rICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3NwbGl0JyxcbisgICAgICAgICAgICAgICAgICAgIHRhcmdldF9vcmRlcj0wLFxuKyAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBldmVyeSByZWdpb24gcmVnYXJkbGVzcyBvZiBhY2Nlc3MvYWdlL3NpemUsIHNvXG4rICAgICAgICAgICAgICAgICAgICAjIHRoZSBBUk02NCBzdGFsZS1UTEIgYmxpbmQgc3BvdCBjYW5ub3QgbWFzayB0aGUgdGFyZ2V0XG4rICAgICAgICAgICAgICAgICAgICBhY2Nlc3NfcGF0dGVybj1fZGFtb25fc3lzZnMuRGFtb3NBY2Nlc3NQYXR0ZXJuKFxuKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9WzAsIDIqKjY0IC0gMV0sXG4rICAgICAgICAgICAgICAgICAgICAgICAgbnJfYWNjZXNzZXM9WzAsIDIqKjY0IC0gMV0sXG4rICAgICAgICAgICAgICAgICAgICAgICAgYWdlPVswLCAyKio2NCAtIDFdKSxcbisgICAgICAgICAgICAgICAgICAgIGFwcGx5X2ludGVydmFsX3VzPTApXSldKV0pXG4rICAgICAgICBlcnIgPSBrZGFtb25kcy5zdGFydCgpXG4rICAgICAgICBpZiBlcnIgaXMgbm90IE5vbmU6XG4rICAgICAgICAgICAgcHJpbnQoJ2tkYW1vbmRzIHN0YXJ0IGZhaWxlZDogJXMnICUgZXJyKVxuKyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbisgICAgICAgICAgICBleGl0KDEpXG4rXG4rICAgICAgICAjIExldCB0aGUgc2NoZW1lIGZpbmQgYW5kIHNwbGl0IHRoZSByZWdpb25zLlxuKyAgICAgICAgYWZ0ZXIgPSBiZWZvcmVcbisgICAgICAgIGZvciBfIGluIHJhbmdlKDUwKTpcbisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMilcbisgICAgICAgICAgICBhZnRlciA9IGFub25faHVnZV9rYihwaWQpXG4rICAgICAgICAgICAgaWYgYWZ0ZXIgPT0gMDpcbisgICAgICAgICAgICAgICAgYnJlYWtcbitcbisgICAgICAgIGtkYW1vbmRzLnN0b3AoKVxuKyAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdLSUxMKVxuK1xuKyAgICAgICAgaWYgYWZ0ZXIgXHUwMDNlPSBiZWZvcmU6XG4rICAgICAgICAgICAgcHJpbnQoJ0ZBSUw6IEFub25IdWdlUGFnZXMgZGlkIG5vdCBzaHJpbms6IGJlZm9yZT0lZCBLaUIgJ1xuKyAgICAgICAgICAgICAgICAgICdhZnRlcj0lZCBLaUInICUgKGJlZm9yZSwgYWZ0ZXIpKVxuKyAgICAgICAgICAgIGV4aXQoMSlcbisgICAgICAgIHByaW50KCdQQVNTOiBBbm9uSHVnZVBhZ2VzICVkIEtpQiAtXHUwMDNlICVkIEtpQiBhZnRlciBEQU1PU19TUExJVCdcbisgICAgICAgICAgICAgICUgKGJlZm9yZSwgYWZ0ZXIpKVxuKyAgICBmaW5hbGx5OlxuKyAgICAgICAgdHJ5OlxuKyAgICAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTClcbisgICAgICAgIGV4Y2VwdCBQcm9jZXNzTG9va3VwRXJyb3I6XG4rICAgICAgICAgICAgcGFzc1xuK1xuK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4rICAgIG1haW4oKVxuZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5IGIvdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vc3lzZnMucHlcbmluZGV4IDNmZmEwNTRiNjM4NjdkLi40OWQzYzMxOWRmZDg5OCAxMDA3NTVcbi0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL3N5c2ZzLnB5XG4rKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9zeXNmcy5weVxuQEAgLTEzMSwxMSArMTMxLDEyIEBAIGRlZiBhc3NlcnRfc2NoZW1lX2NvbW1pdHRlZChzY2hlbWUsIGR1bXApOlxuICAgICAgICAgICAgICdodWdlcGFnZSc6IDMsXG4gICAgICAgICAgICAgJ25vaHVnZXBhZ2UnOiA0LFxuICAgICAgICAgICAgICdjb2xsYXBzZSc6IDUsXG4tICAgICAgICAgICAgJ2xydV9wcmlvJzogNixcbi0gICAgICAgICAgICAnbHJ1X2RlcHJpbyc6IDcsXG4tICAgICAgICAgICAgJ21pZ3JhdGVfaG90JzogOCxcbi0gICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogOSxcbi0gICAgICAgICAgICAnc3RhdCc6IDEwLFxuKyAgICAgICAgICAgICdzcGxpdCc6IDYsXG4rICAgICAgICAgICAgJ2xydV9wcmlvJzogNyxcbisgICAgICAgICAgICAnbHJ1X2RlcHJpbyc6IDgsXG4rICAgICAgICAgICAgJ21pZ3JhdGVfaG90JzogOSxcbisgICAgICAgICAgICAnbWlncmF0ZV9jb2xkJzogMTAsXG4rICAgICAgICAgICAgJ3N0YXQnOiAxMSxcbiAgICAgICAgICAgICB9XG4gICAgIGFzc2VydF90cnVlKGR1bXBbJ2FjdGlvbiddID09IGFjdGlvbl92YWxbc2NoZW1lLmFjdGlvbl0sICdhY3Rpb24nLCBkdW1wKVxuICAgICBhc3NlcnRfdHJ1ZShkdW1wWydhcHBseV9pbnRlcnZhbF91cyddID09IHNjaGVtZS4gYXBwbHlfaW50ZXJ2YWxfdXMsXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODoxMS41NTMyMzAyOTlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDgzMzQ2NDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRBTU9OIFNwbGl0IEFjdGlvbjogRm9jdXNlZCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gd2UndmUgZ290IHRoaXMgbmV3IHBhdGNoIHNlcmllcyBpbnRyb2R1Y2luZyBhIGBEQU1PU19TUExJVGAgYWN0aW9uIGZvciBEQU1PTi4gSXQgc291bmRzIGxpa2UgdGhpcyBpcyBnb2luZyB0byBiZSBzcGxpdHRpbmcgbGFyZ2UgZm9saW9zIGRvd24gdG8gYSBkZWZpbmVkIG9yZGVyLCB3aGljaCBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBrZXJuZWwncyBtZW1vcnkgbWFuYWdlbWVudC4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhpcy5cblxuRmlyc3QsIEkgbmVlZCB0byBjaGVjayB0aGUgc2NvcGUuIFRoZSBwYXRjaCB0b3VjaGVzIGRvY3VtZW50YXRpb24sIGBkYW1vbi5oYCwgY29yZSBEQU1PTiBmaWxlcywgc3lzZnMgaW50ZXJhY3Rpb24sIHZpcnR1YWwgYWRkcmVzcyBoYW5kbGluZywgYW5kIHNlbGZ0ZXN0cy4gU2VlbXMgcHJldHR5IHNwcmVhZCBvdXQuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoZSBgbW0vZGFtb24vdmFkZHIuY2AgZmlsZTsgc3BlY2lmaWNhbGx5LCB0aGUgbmV3IGBkYW1vc192YV9zcGxpdGAgZnVuY3Rpb24gd2hpY2ggcHJlc3VtYWJseSBpcyB0aGUgY29yZSBvZiB0aGlzLiBJdCBsb29rcyBsaWtlIGl0IHVzZXMgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYCAtIHRoaXMgd2lsbCBuZWVkIHRvIGJlIHdlbGwtZnV6emVkLlxuXG5JJ20gdGhpbmtpbmcgdGhlIGtleSBhcmVhcyB0byBhbmFseXplIHdpbGwgYmUgYGRhbW9zX3ZhX3NwbGl0YCwgdGhlbiB0aGUgc3lzZnMgaW50ZXJmYWNlIGhhbmRsZXJzIGZvciB0aGUgc3BsaXQgZnVuY3Rpb25hbGl0eTogYHRhcmdldF9vcmRlcl9zdG9yZWAgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuXG5cbkNvbmZpZ3VyYXRpb24gaXMga2V5IGhlcmUuIERBTU9OIGl0c2VsZiBpcyBlbmFibGVkIGJ5IGBDT05GSUdfREFNT05gLCB0aGUgc3lzZnMgaW50ZXJmYWNlIGJ5IGBDT05GSUdfREFNT05fU1lTRlNgLCBhbmQgdGhlIHZpcnR1YWwgYWRkcmVzcyBvcGVyYXRpb25zIGJ5IGBDT05GSUdfREFNT05fVkFERFJgLiAgSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHdoZXRoZXIgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYCBpbnRlcmFjdHMgd2l0aCB0cmFuc3BhcmVudCBodWdlcGFnZXMsIHNvIEkgc2hvdWxkIGxvb2sgaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuXG5cbkFoYSEgTG9va3MgbGlrZSBgQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50LiBUaGUgY29kZSBjaGVja3MgZm9yIGl0LiBTbyB0aGlzIGlzIGEgcGFyYW1ldGVyIG9mIHRoZSBzcGxpdCBvcGVyYXRpb24gaXRzZWxmOiBgdmFsYCBjYW4gYmUgMCBvciBiZXR3ZWVuIDIgYW5kIGBIUEFHRV9QTURfT1JERVItMWAgaWYgaHVnZXBhZ2VzIGFyZSBlbmFibGVkLiBJZiBub3QsIG9ubHkgMCBpcyBhbGxvd2VkLlxuXG5SaWdodCwgSSdsbCBuZWVkIHRvIHJ1biBhIGBnaXQgZ3JlcGAgb24gdGhpcyB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3MgcmVxdWlyZWQgZm9yIHRoaXMgZnVuY3Rpb25hbGl0eS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZSBmdXp6ZXIncyBzdHJhdGVneS5cblxuXG4iLCJJbnB1dFRva2VucyI6ODc2OSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjE4LjYzNjU3OTUwMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTY3MzQ0ODUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRBTU9OX1NZU0ZTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0PTM3PXN5c2ZzIEludGVyZmFjZVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3QtMzktXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3Q6NDA6REFNT04gc3lzZnMgaW50ZXJmYWNlIGlzIGJ1aWx0IHdoZW4gYGBDT05GSUdfREFNT05fU1lTRlNgYCBpcyBkZWZpbmVkLiAgSXRcXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC00MS1jcmVhdGVzIG11bHRpcGxlIGRpcmVjdG9yaWVzIGFuZCBmaWxlcyB1bmRlciBpdHMgc3lzZnMgZGlyZWN0b3J5LFxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0PTM1PXN5c2Zz5o6l5Y+jXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0LTM2LT09PT09PT09PVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdDozNzpEQU1PTueahHN5c2Zz5o6l5Y+j5piv5Zyo5a6a5LmJIGBgQ09ORklHX0RBTU9OX1NZU0ZTYGAg5pe25bu656uL55qE44CC5a6D5Zyo5YW2c3lzZnPnm67lvZXkuIvliJvlu7rlpJpcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3QtMzgt5Liq55uu5b2V5ZKM5paH5Lu277yMIGBgXFx1MDAzY3N5c2ZzXFx1MDAzZS9rZXJuZWwvbW0vZGFtb24vYGAg44CC5L2g5Y+v5Lul6YCa6L+H5a+56K+l55uu5b2V5LiL55qE5paH5Lu26L+b6KGM5YaZ5YWl5ZKMXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3Q9MzU9c3lzZnPmjqXlj6NcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9UVy9hZG1pbi1ndWlkZS9tbS9kYW1vbi91c2FnZS5yc3QtMzYtPT09PT09PT09XFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfVFcvYWRtaW4tZ3VpZGUvbW0vZGFtb24vdXNhZ2UucnN0OjM3OkRBTU9O55qEc3lzZnPmjqXlj6PmmK/lnKjlrprnvqkgYGBDT05GSUdfREFNT05fU1lTRlNgYCDmmYLlu7rnq4vnmoTjgILlroPlnKjlhbZzeXNmc+ebrumMhOS4i+WJteW7uuWkmlxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXL2FkbWluLWd1aWRlL21tL2RhbW9uL3VzYWdlLnJzdC0zOC3lgIvnm67pjITlkozmlofku7bvvIwgYGBcXHUwMDNjc3lzZnNcXHUwMDNlL2tlcm5lbC9tbS9kYW1vbi9gYCDjgILkvaDlj6/ku6XpgJrpgY7lsI3oqbLnm67pjITkuIvnmoTmlofku7bpgLLooYzlr6vlhaXlkoxcXG4tLVxcbm1tL2RhbW9uL0tjb25maWc9NTY9Y29uZmlnIERBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNjctXFxubW0vZGFtb24vS2NvbmZpZzo2ODpjb25maWcgREFNT05fU1lTRlNcXG5tbS9kYW1vbi9LY29uZmlnLTY5LVxcdGJvb2wgXFxcIkRBTU9OIHN5c2ZzIGludGVyZmFjZVxcXCJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNzUtXFxubW0vZGFtb24vS2NvbmZpZzo3Njpjb25maWcgREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNzctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgZGFtb24gc3lzZnMgaW50ZXJmYWNlXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxubW0vZGFtb24vS2NvbmZpZzo3ODpcXHRkZXBlbmRzIG9uIERBTU9OX1NZU0ZTIFxcdTAwMjZcXHUwMDI2IEtVTklUPXlcXG5tbS9kYW1vbi9LY29uZmlnLTc5LVxcdGRlZmF1bHQgS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5tbS9kYW1vbi9NYWtlZmlsZT01PW9iai0kKENPTkZJR19EQU1PTl9QQUREUilcXHQrPSBvcHMtY29tbW9uLm8gcGFkZHIub1xcbm1tL2RhbW9uL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RBTU9OX1NZU0ZTKVxcdCs9IHN5c2ZzLWNvbW1vbi5vIHN5c2ZzLXNjaGVtZXMubyBzeXNmcy5vXFxubW0vZGFtb24vTWFrZWZpbGUtNy1vYmotJChDT05GSUdfREFNT05fUkVDTEFJTSlcXHQrPSBtb2R1bGVzLWNvbW1vbi5vIHJlY2xhaW0ub1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xODI5PWVudW0gZGFtb25fc3lzZnNfY21kIHtcXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzA6XFx0LyogQERBTU9OX1NZU0ZTX0NNRF9PTjogVHVybiB0aGUga2RhbW9uZCBvbi4gKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjE4MzE6XFx0REFNT05fU1lTRlNfQ01EX09OLFxcbm1tL2RhbW9uL3N5c2ZzLmM6MTgzMjpcXHQvKiBAREFNT05fU1lTRlNfQ01EX09GRjogVHVybiB0aGUga2RhbW9uZCBvZmYuICovXFxubW0vZGFtb24vc3lzZnMuYzoxODMzOlxcdERBTU9OX1NZU0ZTX0NNRF9PRkYsXFxubW0vZGFtb24vc3lzZnMuYzoxODM0OlxcdC8qIEBEQU1PTl9TWVNGU19DTURfQ09NTUlUOiBVcGRhdGUga2RhbW9uZCBpbnB1dHMuICovXFxubW0vZGFtb24vc3lzZnMuYzoxODM1OlxcdERBTU9OX1NZU0ZTX0NNRF9DT01NSVQsXFxubW0vZGFtb24vc3lzZnMuYy0xODM2LVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODM3OlxcdCAqIEBEQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFM6IENvbW1pdCB0aGUgcXVvdGEgZ29hbHNcXG5tbS9kYW1vbi9zeXNmcy5jLTE4MzgtXFx0ICogdG8gREFNT04uXFxubW0vZGFtb24vc3lzZnMuYy0xODM5LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg0MDpcXHREQU1PTl9TWVNGU19DTURfQ09NTUlUX1NDSEVNRVNfUVVPVEFfR09BTFMsXFxubW0vZGFtb24vc3lzZnMuYy0xODQxLVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODQyOlxcdCAqIEBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfU1RBVFM6IFVwZGF0ZSBzY2hlbWUgc3RhdHMgc3lzZnNcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDMtXFx0ICogZmlsZXMuXFxubW0vZGFtb24vc3lzZnMuYy0xODQ0LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg0NTpcXHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfU1RBVFMsXFxubW0vZGFtb24vc3lzZnMuYy0xODQ2LVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODQ3OlxcdCAqIEBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfVFJJRURfQllURVM6IFVwZGF0ZVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg0OC1cXHQgKiB0cmllZF9yZWdpb25zL3RvdGFsX2J5dGVzIHN5c2ZzIGZpbGVzIGZvciBlYWNoIHNjaGVtZS5cXG5tbS9kYW1vbi9zeXNmcy5jLTE4NDktXFx0ICovXFxubW0vZGFtb24vc3lzZnMuYzoxODUwOlxcdERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTEtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4NTI6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9SRUdJT05TOiBVcGRhdGUgc2NoZW1lcyB0cmllZFxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg1My1cXHQgKiByZWdpb25zXFxubW0vZGFtb24vc3lzZnMuYy0xODU0LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg1NTpcXHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfVFJJRURfUkVHSU9OUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTYtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4NTc6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9DTEVBUl9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6IENsZWFyIHNjaGVtZXMgdHJpZWRcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NTgtXFx0ICogcmVnaW9uc1xcbm1tL2RhbW9uL3N5c2ZzLmMtMTg1OS1cXHQgKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjE4NjA6XFx0REFNT05fU1lTRlNfQ01EX0NMRUFSX1NDSEVNRVNfVFJJRURfUkVHSU9OUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjEtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4NjI6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19FRkZFQ1RJVkVfUVVPVEFTOiBVcGRhdGUgdGhlXFxubW0vZGFtb24vc3lzZnMuYy0xODYzLVxcdCAqIGVmZmVjdGl2ZSBzaXplIHF1b3RhIG9mIHRoZSBzY2hlbWUgaW4gYnl0ZXMuXFxubW0vZGFtb24vc3lzZnMuYy0xODY0LVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg2NTpcXHREQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUyxcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjYtXFx0LypcXG5tbS9kYW1vbi9zeXNmcy5jOjE4Njc6XFx0ICogQERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfVFVORURfSU5URVJWQUxTOiBVcGRhdGUgdGhlIHR1bmVkIG1vbml0b3JpbmdcXG5tbS9kYW1vbi9zeXNmcy5jLTE4NjgtXFx0ICogaW50ZXJ2YWxzLlxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg2OS1cXHQgKi9cXG5tbS9kYW1vbi9zeXNmcy5jOjE4NzA6XFx0REFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFMsXFxubW0vZGFtb24vc3lzZnMuYy0xODcxLVxcdC8qXFxubW0vZGFtb24vc3lzZnMuYzoxODcyOlxcdCAqIEBOUl9EQU1PTl9TWVNGU19DTURTOiBUb3RhbCBudW1iZXIgb2YgREFNT04gc3lzZnMgY29tbWFuZHMuXFxubW0vZGFtb24vc3lzZnMuYy0xODczLVxcdCAqL1xcbm1tL2RhbW9uL3N5c2ZzLmM6MTg3NDpcXHROUl9EQU1PTl9TWVNGU19DTURTLFxcbm1tL2RhbW9uL3N5c2ZzLmMtMTg3NS19O1xcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0xODkxPXN0YXRpYyBzc2l6ZV90IHN0YXRlX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMTkwOC1cXHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFxcXCIlc1xcXFxuXFxcIiwgcnVubmluZyA/XFxubW0vZGFtb24vc3lzZnMuYzoxOTA5OlxcdFxcdFxcdGRhbW9uX3N5c2ZzX2NtZF9zdHJzW0RBTU9OX1NZU0ZTX0NNRF9PTl0gOlxcbm1tL2RhbW9uL3N5c2ZzLmM6MTkxMDpcXHRcXHRcXHRkYW1vbl9zeXNmc19jbWRfc3Ryc1tEQU1PTl9TWVNGU19DTURfT0ZGXSk7XFxubW0vZGFtb24vc3lzZnMuYy0xOTExLX1cXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmM9MjM2Mj1zdGF0aWMgaW50IGRhbW9uX3N5c2ZzX2hhbmRsZV9jbWQoZW51bSBkYW1vbl9zeXNmc19jbWQgY21kLFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYy0yMzY0LXtcXG5tbS9kYW1vbi9zeXNmcy5jOjIzNjU6XFx0aWYgKGNtZCAhPSBEQU1PTl9TWVNGU19DTURfT0ZGIFxcdTAwMjZcXHUwMDI2IGtkYW1vbmQtXFx1MDAzZWNvbnRleHRzLVxcdTAwM2VuciAhPSAxKVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2Ni1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM2OC1cXHRzd2l0Y2ggKGNtZCkge1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM2OTpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9PTjpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzAtXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb24oa2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzcxOlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX09GRjpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzItXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3R1cm5fZGFtb25fb2ZmKGtkYW1vbmQpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3MzpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVQ6XFxubW0vZGFtb24vc3lzZnMuYy0yMzc0LVxcdFxcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM3NS1cXHRcXHRcXHRcXHRkYW1vbl9zeXNmc19jb21taXRfaW5wdXQsIGtkYW1vbmQpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM3NjpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9DT01NSVRfU0NIRU1FU19RVU9UQV9HT0FMUzpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzctXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzNzktXFx0XFx0XFx0XFx0a2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzgwOlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1NUQVRTOlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4MS1cXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfZGFtb25fY2FsbChcXG5tbS9kYW1vbi9zeXNmcy5jLTIzODItXFx0XFx0XFx0XFx0ZGFtb25fc3lzZnNfdXBkX3NjaGVtZXNfc3RhdHMsIGtkYW1vbmQpO1xcbm1tL2RhbW9uL3N5c2ZzLmM6MjM4MzpcXHRjYXNlIERBTU9OX1NZU0ZTX0NNRF9VUERBVEVfU0NIRU1FU19UUklFRF9CWVRFUzpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzODQtXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX3VwZGF0ZV9zY2hlbWVzX3RyaWVkX3JlZ2lvbnMoa2RhbW9uZCwgdHJ1ZSk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzg1OlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9TQ0hFTUVTX1RSSUVEX1JFR0lPTlM6XFxubW0vZGFtb24vc3lzZnMuYy0yMzg2LVxcdFxcdHJldHVybiBkYW1vbl9zeXNmc191cGRhdGVfc2NoZW1lc190cmllZF9yZWdpb25zKGtkYW1vbmQsIGZhbHNlKTtcXG5tbS9kYW1vbi9zeXNmcy5jOjIzODc6XFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfQ0xFQVJfU0NIRU1FU19UUklFRF9SRUdJT05TOlxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4OC1cXHRcXHRyZXR1cm4gZGFtb25fc3lzZnNfc2NoZW1lc19jbGVhcl9yZWdpb25zKFxcbm1tL2RhbW9uL3N5c2ZzLmMtMjM4OS1cXHRcXHRcXHRrZGFtb25kLVxcdTAwM2Vjb250ZXh0cy1cXHUwMDNlY29udGV4dHNfYXJyWzBdLVxcdTAwM2VzY2hlbWVzKTtcXG5tbS9kYW1vbi9zeXNmcy5jOjIzOTA6XFx0Y2FzZSBEQU1PTl9TWVNGU19DTURfVVBEQVRFX1NDSEVNRVNfRUZGRUNUSVZFX1FVT1RBUzpcXG5tbS9kYW1vbi9zeXNmcy5jLTIzOTEtXFx0XFx0cmV0dXJuIGRhbW9uX3N5c2ZzX2RhbW9uX2NhbGwoXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTIzOTMtXFx0XFx0XFx0XFx0a2RhbW9uZCk7XFxubW0vZGFtb24vc3lzZnMuYzoyMzk0OlxcdGNhc2UgREFNT05fU1lTRlNfQ01EX1VQREFURV9UVU5FRF9JTlRFUlZBTFM6XFxubW0vZGFtb24vc3lzZnMuYy0yMzk1LVxcdFxcdHJldHVybiBkYW1vbl9zeXNmc19kYW1vbl9jYWxsKFxcbi0tXFxubW0vZGFtb24vc3lzZnMuYz0yNDAyPXN0YXRpYyBzc2l6ZV90IHN0YXRlX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy5jLTI0MTEtXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG5tbS9kYW1vbi9zeXNmcy5jOjI0MTI6XFx0Zm9yIChjbWQgPSAwOyBjbWQgXFx1MDAzYyBOUl9EQU1PTl9TWVNGU19DTURTOyBjbWQrKykge1xcbm1tL2RhbW9uL3N5c2ZzLmMtMjQxMy1cXHRcXHRpZiAoc3lzZnNfc3RyZXEoYnVmLCBkYW1vbl9zeXNmc19jbWRfc3Ryc1tjbWRdKSkge1xcbi0tXFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnPTEzPUNPTkZJR19TWVNGUz15XFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnOjE0OkNPTkZJR19EQU1PTl9TWVNGUz15XFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnOjE1OkNPTkZJR19EQU1PTl9TWVNGU19LVU5JVF9URVNUPXlcXG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWctMTYtXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oLTUtXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo2OiNpZmRlZiBDT05GSUdfREFNT05fU1lTRlNfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtNy1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oOjg6I2lmbmRlZiBfREFNT05fU1lTRlNfVEVTVF9IXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDo5OiNkZWZpbmUgX0RBTU9OX1NZU0ZTX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtMTAtXFxuLS1cXG5tbS9kYW1vbi90ZXN0cy9zeXNmcy1rdW5pdC5oPTEwNj1rdW5pdF90ZXN0X3N1aXRlKGRhbW9uX3N5c2ZzX3Rlc3Rfc3VpdGUpO1xcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0LmgtMTA3LVxcbm1tL2RhbW9uL3Rlc3RzL3N5c2ZzLWt1bml0Lmg6MTA4OiNlbmRpZiAvKiBfREFNT05fU1lTRlNfVEVTVF9IICovXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaC0xMDktXFxubW0vZGFtb24vdGVzdHMvc3lzZnMta3VuaXQuaDoxMTA6I2VuZGlmIC8qIENPTkZJR19EQU1PTl9TWVNGU19LVU5JVF9URVNUICovXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9MT1DT05GSUdfREFNT049eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZzoyOkNPTkZJR19EQU1PTl9TWVNGUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnLTMtQ09ORklHX0RBTU9OX1BBRERSPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzg6MjQuODAzOTMwNTcyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ1MjIzOTc4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkNvbmZpZyBDaGVja3MgYW5kIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHNldCBvZiBjb25maWd1cmF0aW9ucyDigJMgYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAuIFNlZW1zIGxpa2UgYSBwcmV0dHkgc3RhbmRhcmQgc2V0IG9mIERBTU9OLXJlbGF0ZWQgZmVhdHVyZXMuIEJlZm9yZSBJIGdvIHRvbyBmYXIsIGxldCdzIGp1c3QgbWFrZSBzdXJlIGBEQU1PTl9WQUREUmAgaXMgYWN0dWFsbHkgYSB2YWxpZCBjb25maWcgb3B0aW9uLiBHb3R0YSB2ZXJpZnkgdGhlc2UgdGhpbmdzLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHBvdGVudGlhbGx5IGNvbXBsZXggZGVwZW5kZW5jaWVzLiBBIHF1aWNrIHNhbml0eSBjaGVjayBub3cgY2FuIHNhdmUgYSBsb3Qgb2YgaGVhZGFjaGVzIGxhdGVyIG9uIGRvd24gdGhlIGxpbmUuIFdlIGRvbid0IHdhbnQgdG8gd2FzdGUgdGltZSBkb3duIGEgcmFiYml0IGhvbGUgZm9yIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IGV4aXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ3NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjI4LjI1NjE3MjQ3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDY0NDM2NjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiREFNT05fVkFERFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vS2NvbmZpZz0yNj1jb25maWcgREFNT05fS1VOSVRfVEVTVFxcbi0tXFxubW0vZGFtb24vS2NvbmZpZy0zNy1cXG5tbS9kYW1vbi9LY29uZmlnOjM4OmNvbmZpZyBEQU1PTl9WQUREUlxcbm1tL2RhbW9uL0tjb25maWctMzktXFx0Ym9vbCBcXFwiRGF0YSBhY2Nlc3MgbW9uaXRvcmluZyBvcGVyYXRpb25zIGZvciB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2VzXFxcIlxcbi0tXFxubW0vZGFtb24vS2NvbmZpZz00Nz1jb25maWcgREFNT05fUEFERFJcXG4tLVxcbm1tL2RhbW9uL0tjb25maWctNTUtXFxubW0vZGFtb24vS2NvbmZpZzo1Njpjb25maWcgREFNT05fVkFERFJfS1VOSVRfVEVTVFxcbm1tL2RhbW9uL0tjb25maWctNTctXFx0Ym9vbCBcXFwiVGVzdCBmb3IgREFNT04gb3BlcmF0aW9uc1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbm1tL2RhbW9uL0tjb25maWc6NTg6XFx0ZGVwZW5kcyBvbiBEQU1PTl9WQUREUiBcXHUwMDI2XFx1MDAyNiBLVU5JVD15XFxubW0vZGFtb24vS2NvbmZpZy01OS1cXHRkZWZhdWx0IEtVTklUX0FMTF9URVNUU1xcbi0tXFxubW0vZGFtb24vTWFrZWZpbGU9Mz1vYmoteVxcdFxcdFxcdFxcdDo9IGNvcmUub1xcbm1tL2RhbW9uL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0RBTU9OX1ZBRERSKVxcdCs9IG9wcy1jb21tb24ubyB2YWRkci5vXFxubW0vZGFtb24vTWFrZWZpbGUtNS1vYmotJChDT05GSUdfREFNT05fUEFERFIpXFx0Kz0gb3BzLWNvbW1vbi5vIHBhZGRyLm9cXG4tLVxcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZz04PUNPTkZJR19QQUdFX0lETEVfRkxBRz15XFxubW0vZGFtb24vdGVzdHMvLmt1bml0Y29uZmlnOjk6Q09ORklHX0RBTU9OX1ZBRERSPXlcXG5tbS9kYW1vbi90ZXN0cy8ua3VuaXRjb25maWc6MTA6Q09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1Q9eVxcbm1tL2RhbW9uL3Rlc3RzLy5rdW5pdGNvbmZpZy0xMS1cXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaD00MDM9c3RhdGljIHZvaWQgZGFtb25fdGVzdF9vcHNfcmVnaXN0cmF0aW9uKHN0cnVjdCBrdW5pdCAqdGVzdClcXG4tLVxcbm1tL2RhbW9uL3Rlc3RzL2NvcmUta3VuaXQuaC00MTEtXFxubW0vZGFtb24vdGVzdHMvY29yZS1rdW5pdC5oOjQxMjpcXHQvKiBEQU1PTl9PUFNfVkFERFIgaXMgcmVnaXN0ZXJlZCBvbmx5IGlmIENPTkZJR19EQU1PTl9WQUREUiBpcyBzZXQgKi9cXG5tbS9kYW1vbi90ZXN0cy9jb3JlLWt1bml0LmgtNDEzLVxcdGlmICghZGFtb25faXNfcmVnaXN0ZXJlZF9vcHMoREFNT05fT1BTX1ZBRERSKSkge1xcbi0tXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaC01LVxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6NjojaWZkZWYgQ09ORklHX0RBTU9OX1ZBRERSX0tVTklUX1RFU1RcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTctXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaDo4OiNpZm5kZWYgX0RBTU9OX1ZBRERSX1RFU1RfSFxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6OTojZGVmaW5lIF9EQU1PTl9WQUREUl9URVNUX0hcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTEwLVxcbi0tXFxubW0vZGFtb24vdGVzdHMvdmFkZHIta3VuaXQuaD0yNzc9a3VuaXRfdGVzdF9zdWl0ZShkYW1vbl90ZXN0X3N1aXRlKTtcXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oLTI3OC1cXG5tbS9kYW1vbi90ZXN0cy92YWRkci1rdW5pdC5oOjI3OTojZW5kaWYgLyogX0RBTU9OX1ZBRERSX1RFU1RfSCAqL1xcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0LmgtMjgwLVxcbm1tL2RhbW9uL3Rlc3RzL3ZhZGRyLWt1bml0Lmg6MjgxOiNlbmRpZlxcdC8qIENPTkZJR19EQU1PTl9WQUREUl9LVU5JVF9URVNUICovXFxuLS1cXG5tbS9kYW1vbi92YWRkci5jLTIwLVxcbm1tL2RhbW9uL3ZhZGRyLmM6MjE6I2lmZGVmIENPTkZJR19EQU1PTl9WQUREUl9LVU5JVF9URVNUXFxubW0vZGFtb24vdmFkZHIuYy0yMi0jdW5kZWYgREFNT05fTUlOX1JFR0lPTl9TWlxcbi0tXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnPTU9Y29uZmlnIFNBTVBMRV9EQU1PTl9XU1NFXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiREFNT04gc2FtcGxlIG1vZHVsZSBmb3Igd29ya2luZyBzZXQgc2l6ZSBlc3RpbWF0aW9uXFxcIlxcbnNhbXBsZXMvZGFtb24vS2NvbmZpZzo3OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgREFNT05fVkFERFJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctOC1cXHRoZWxwXFxuLS1cXG5zYW1wbGVzL2RhbW9uL0tjb25maWc9MTc9Y29uZmlnIFNBTVBMRV9EQU1PTl9QUkNMXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnLTE4LVxcdGJvb2wgXFxcIkRBTU9OIHNhbXBsZSBtb2R1bGUgZm9yIGFjY2Vzcy1hd2FyZSBwcm9hY3RpdmUgcmVjbGFtYXRpb25cXFwiXFxuc2FtcGxlcy9kYW1vbi9LY29uZmlnOjE5OlxcdGRlcGVuZHMgb24gREFNT04gXFx1MDAyNlxcdTAwMjYgREFNT05fVkFERFJcXG5zYW1wbGVzL2RhbW9uL0tjb25maWctMjAtXFx0aGVscFxcbi0tXFxudG9vbHMvdGVzdGluZy9rdW5pdC9jb25maWdzL2FsbF90ZXN0cy5jb25maWc9Mzk9Q09ORklHX0RBTU9OPXlcXG50b29scy90ZXN0aW5nL2t1bml0L2NvbmZpZ3MvYWxsX3Rlc3RzLmNvbmZpZzo0MDpDT05GSUdfREFNT05fVkFERFI9eVxcbnRvb2xzL3Rlc3Rpbmcva3VuaXQvY29uZmlncy9hbGxfdGVzdHMuY29uZmlnLTQxLUNPTkZJR19EQU1PTl9QQUREUj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kYW1vbi9jb25maWc9Mz1DT05GSUdfREFNT05fUEFERFI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RhbW9uL2NvbmZpZzo0OkNPTkZJR19EQU1PTl9WQUREUj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vY29uZmlnLTUtQ09ORklHX0RBTU9OX1JFQ0xBSU09eVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODozMy40MDI2MjIwMjNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTIzOTAzNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBEQU1PTiBDb25maWd1cmF0aW9uIGFuZCBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gY29uZmlybWluZyB0aGF0IGBEQU1PTl9WQUREUmAgaXMgaW5kZWVkIGEgY29uZmlndXJhdGlvbiBvcHRpb24sIHRoYXQncyBnb29kIHRvIGtub3cuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCBhcmUgYERBTU9OYCwgYERBTU9OX1NZU0ZTYCwgYERBTU9OX1ZBRERSYCwgYW5kIGFsc28gdGhlIGV2ZXItcHJlc2VudCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIGFsd2F5cyBuZWVkIHRvIGNvbnNpZGVyIFRIUCBpbiB0aGVzZSBzY2VuYXJpb3MuXG5cbk5vdywgbGV0J3MgdHJhY2UgdGhlIHBhdGggdG8gYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGFjY2Vzc2libGUuIFJpZ2h0LCBzbyBgZGFtb3NfdmFfc3BsaXRgIGdldHMgY2FsbGVkIGZyb20gYGRhbW9uX3ZhX2FwcGx5X3NjaGVtZWAgd2hlbiB0aGUgYWN0aW9uIGlzIGBEQU1PU19TUExJVGAuIGBkYW1vbl92YV9hcHBseV9zY2hlbWVgIGlzIHN1YnNlcXVlbnRseSBjYWxsZWQgYnkgYGRhbW9uX3ZhX2FwcGx5X3RocmVlX3JlZ2lvbnNgLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGBkYW1vbl92YV9hcHBseV9zY2hlbWVzYCwgdGhlbiBieSBgZGFtb25fZG9fYXBwbHlfc2NoZW1lc2AgYW5kIGZpbmFsbHksIHRoYXTigJlzIGludm9rZWQgYnkgYGtkYW1vbmRfZm5gLiBBbmQgZnJvbSB0aGVyZSwgaXQgYXBwZWFycyB0aGlzIGVudGlyZSBzZXF1ZW5jZSBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUgc3lzZnMgaW50ZXJmYWNlLiBFeGNlbGxlbnQsIHRoYXQgZ2l2ZXMgbWUgYSBjbGVhciBpZGVhIG9mIHRoZSBwb3RlbnRpYWwgYXR0YWNrIHZlY3RvcnMuXG5cblRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9ucyBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGFyZTogYGRhbW9zX3ZhX3NwbGl0YCwgYHRhcmdldF9vcmRlcl9zdG9yZWAsIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLiBJJ20gZ29pbmcgdG8gZG91YmxlIGNoZWNrIHRob3NlLCBzcGVjaWZpY2FsbHkgdGhlIGB0YXJnZXRfb3JkZXJgIGZ1bmN0aW9ucywgdG8gY29uZmlybSB0aGVpciBiZWhhdmlvci4gSSdsbCBmaW5kIHRoZW0gaW4gYG1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTE4LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjM4LjMyNjUyNzk2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMDk0MTM4ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGFyZ2V0X29yZGVyX3N0b3JlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYz0yNjU2PXN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NjU6c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjQzLjMzNTk0ODQ5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzA1OTQwNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBhIERBTU9TIFZpcnR1YWwgQWRkcmVzcyBTcGxpdCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSB2aXJ0dWFsIGFkZHJlc3Mgc3BsaXQgZnVuY3Rpb25hbGl0eSBpbiB0aGUgREFNT1MgbWVtb3J5IG1hbmFnZW1lbnQgY29kZS4gTGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBgZGFtb3NfdmFfc3BsaXRgIHdpdGhpbiBgbW0vZGFtb24vdmFkZHIuY2AuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGNvcmUgbG9naWMgZm9yIGhvdyB0aGUgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGlzIHNlZ21lbnRlZCBhbmQgaGFuZGxlZCB0aGVyZS4gSSdsbCBiZSBsb29raW5nIGZvciBob3cgdGhlIGNvZGUgZGV0ZXJtaW5lcyB0aGUgc3BsaXR0aW5nIHBvaW50cyBhbmQgdGhlIGltcGxpY2F0aW9ucyBpdCBoYXMgb24gbWVtb3J5IG1hbmFnZW1lbnQuIFRoaXMgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiBmb3IgREFNT04ncyBvcGVyYXRpb24sIHNvIHVuZGVyc3RhbmRpbmcgaXQgY29tcGxldGVseSBpcyBwYXJhbW91bnQuIExldCdzIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1Njc3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzg6NDYuMzY2NTQ1NTYyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQ4MjM0ODIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRhbW9zX3ZhX3NwbGl0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2RhbW9uL3ZhZGRyLmM9ODc1PXN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3N0YXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05MDAtLypcXG5tbS9kYW1vbi92YWRkci5jOjkwMTogKiBkYW1vc192YV9zcGxpdCgpIC0gU3BsaXQgbGFyZ2UgZm9saW9zIGluIGEgcmVnaW9uIGRvd24gdG8gQHRhcmdldF9vcmRlclxcbm1tL2RhbW9uL3ZhZGRyLmMtOTAyLSAqIHVzaW5nIHRoZSBleGlzdGluZyBzcGxpdF9mb2xpb190b19vcmRlcigpLlxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy05MTAtICovXFxubW0vZGFtb24vdmFkZHIuYzo5MTE6c3RhdGljIHVuc2lnbmVkIGxvbmcgZGFtb3NfdmFfc3BsaXQoc3RydWN0IGRhbW9uX3RhcmdldCAqdGFyZ2V0LFxcbm1tL2RhbW9uL3ZhZGRyLmMtOTEyLVxcdFxcdHN0cnVjdCBkYW1vbl9yZWdpb24gKnIsIHN0cnVjdCBkYW1vcyAqcyxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmM9MTAwNT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vbl92YV9hcHBseV9zY2hlbWUoc3RydWN0IGRhbW9uX2N0eCAqY3R4LFxcbi0tXFxubW0vZGFtb24vdmFkZHIuYy0xMDM1LVxcdGNhc2UgREFNT1NfU1BMSVQ6XFxubW0vZGFtb24vdmFkZHIuYzoxMDM2OlxcdFxcdHJldHVybiBkYW1vc192YV9zcGxpdCh0LCByLCBzY2hlbWUsIHN6X2ZpbHRlcl9wYXNzZWQpO1xcbm1tL2RhbW9uL3ZhZGRyLmMtMTAzNy1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozODo1MS4wMTQ3ODcwNzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE5Mjg5MTQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgY291cGxlIG9mIGtleSBhZGRpdGlvbnM6IGEgbmV3IHN5c2ZzIGZpbGUgY2FsbGVkIGB0YXJnZXRfb3JkZXJgLCBhbmQgYSBuZXcgYWN0aW9uLCBgc3BsaXRgLiBUaGUgY29yZSBmdW5jdGlvbmFsaXR5IHNlZW1zIHRvIGJlIHdpdGhpbiB0aGUgYGRhbW9zX3ZhX3NwbGl0YCBmdW5jdGlvbiwgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yIGl0ZXJhdGluZyB0aHJvdWdoIFZNQXMgYW5kIHNwbGl0dGluZyBmb2xpb3MuIEZyb20gYSBjdXJzb3J5IGdsYW5jZSwgaXQgYXBwZWFycyBmdW5jdGlvbmFsbHkgc291bmQuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyBzb21lIGZ1enppbmc7IGl0J3MgdGhlIGtpbmQgb2YgY29kZSB0aGF0J3MgcmlwZSBmb3IgZmluZGluZyBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLlxuXG5JIHNob3VsZCBhbHNvIG5vdGUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IHdpbGwgYmUgbmVlZGVkOiBgREFNT05gLCBgREFNT05fU1lTRlNgLCBgREFNT05fVkFERFJgLCBhbmQgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYC4gSSdsbCBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZCBmb3IgbXkgdGVzdGluZyBlbnZpcm9ubWVudCBzZXR1cC5cblxuVGhlIG1vc3QgaW1wb3J0YW50IHN5bWJvbHMgZm9yIG1lIHRvIGZvY3VzIG9uIGhlcmUgYXJlIGBkYW1vc192YV9zcGxpdGAsIG9idmlvdXNseSwgYW5kIHRoZW4gdGhlIHN5c2ZzIGZpbGUgaGFuZGxlcnMgYHRhcmdldF9vcmRlcl9zdG9yZWAgYW5kIGB0YXJnZXRfb3JkZXJfc2hvd2AuIFRob3NlIHdpbGwgcHJvdmlkZSBjcnVjaWFsIGNvbnRyb2wgb3ZlciB0aGUgbmV3IGJlaGF2aW9yLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBxdWlja2x5IHNjYW4gdGhlIGNvZGUgdG8gdmVyaWZ5IHRoYXQgYGRhbW9zX3ZhX3NwbGl0YCBpcyB0aGUgb25seSBhZGRlZCBmdW5jdGlvbi4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MTkyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM4OjU1LjIwNzY4MDc4OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ5NzQ4NTE3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJec3RhdGljLipkYW1vc192YV9zcGxpdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9kYW1vbi92YWRkci5jPTg3NT1zdGF0aWMgdW5zaWduZWQgbG9uZyBkYW1vc192YV9zdGF0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG4tLVxcbm1tL2RhbW9uL3ZhZGRyLmMtOTEwLSAqL1xcbm1tL2RhbW9uL3ZhZGRyLmM6OTExOnN0YXRpYyB1bnNpZ25lZCBsb25nIGRhbW9zX3ZhX3NwbGl0KHN0cnVjdCBkYW1vbl90YXJnZXQgKnRhcmdldCxcXG5tbS9kYW1vbi92YWRkci5jLTkxMi1cXHRcXHRzdHJ1Y3QgZGFtb25fcmVnaW9uICpyLCBzdHJ1Y3QgZGFtb3MgKnMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM5OjAyLjcwNTE3MTAyMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDY1MDQzMjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB3aGF0IEknbSBhYm91dCB0byBkbzpcblxuKipDaGVja2luZyBmb3IgUmVsYXRlZCBGdW5jdGlvbmFsaXR5IGluIHRoZSBLZXJuZWwncyBzeXNmcyBTY2hlbWVzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGludmVzdGlnYXRlIHNvbWV0aGluZyBpbiB0aGlzIGtlcm5lbCBtb2R1bGUsIHNwZWNpZmljYWxseSBgbW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IGlmIGFueSBhZGRpdGlvbmFsIGZ1bmN0aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhhdCBmaWxlLlwiIEkga25vdyB0aGUgY29kZWJhc2UgcmVhc29uYWJseSB3ZWxsLCBidXQgaXQncyBhbHdheXMgYSBnb29kIHByYWN0aWNlIHRvIGRvdWJsZS1jaGVjaywgZXNwZWNpYWxseSBhZnRlciBhIHBlcmlvZCBhd2F5LCBvciBpZiBzaWduaWZpY2FudCBjaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHJlY2VudGx5LiBJdCdzIGFib3V0IGVuc3VyaW5nIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBJIHN0YXJ0IG1ha2luZyBhbnkgYXNzdW1wdGlvbnMgb3IgZ29pbmcgZGVlcGVyIGludG8gYW55IG9uZSBhcmVhLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCBpbmZsdWVuY2UgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtJ3Mgb3ZlcmFsbCBiZWhhdmlvciBvciByZWxhdGUgdG8gd2hhdCBJJ20gd29ya2luZyBvbiByaWdodCBub3cuIEEgcXVpY2sgc2NhbiB3aWxsIHByZXZlbnQgc3VycHJpc2VzIGRvd24gdGhlIHJvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NzM3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjBUMDM6Mzk6MDUuNzcwMjE3MjQ4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MjM1OTA4OTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWMuKnRhcmdldF9vcmRlcl9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jPTI2NDQ9c3RhdGljIHNzaXplX3QgdGFyZ2V0X25pZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaixcXG4tLVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjU1LVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYzoyNjU2OnN0YXRpYyBzc2l6ZV90IHRhcmdldF9vcmRlcl9zaG93KHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjU3LVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI2NjQtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI2NjU6c3RhdGljIHNzaXplX3QgdGFyZ2V0X29yZGVyX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLFxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNjY2LVxcdFxcdHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuLS1cXG5tbS9kYW1vbi9zeXNmcy1zY2hlbWVzLmM9MjcwMT1zdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGRhbW9uX3N5c2ZzX3NjaGVtZV90YXJnZXRfbmlkX2F0dHIgPVxcbi0tXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jLTI3MDMtXFxubW0vZGFtb24vc3lzZnMtc2NoZW1lcy5jOjI3MDQ6c3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBkYW1vbl9zeXNmc19zY2hlbWVfdGFyZ2V0X29yZGVyX2F0dHIgPVxcbm1tL2RhbW9uL3N5c2ZzLXNjaGVtZXMuYy0yNzA1LVxcdFxcdF9fQVRUUl9SV19NT0RFKHRhcmdldF9vcmRlciwgMDYwMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIwVDAzOjM5OjEzLjAwNjEzNTA1N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTU1MzEwNTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERBTU9OIEZvbGlvIFNwbGl0dGluZyBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgc29tZSBpbnRlcmVzdGluZyBmdW5jdGlvbmFsaXR5IGludG8gREFNT04sIHNwZWNpZmljYWxseSB0aGUgYWJpbGl0eSB0byBzcGxpdCBsYXJnZSBmb2xpb3MgZG93biB0byBhIHNwZWNpZmllZCBvcmRlciB2aWEgYSBuZXcgYERBTU9TX1NQTElUYCBhY3Rpb24uIEkgc2VlIHRocmVlIGtleSBmdW5jdGlvbnMgaW52b2x2ZWQ6IGBkYW1vc192YV9zcGxpdGAsIGB0YXJnZXRfb3JkZXJfc3RvcmVgLCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC4gRnJvbSBhIGhpZ2gtbGV2ZWwgcGVyc3BlY3RpdmUsIEkgdW5kZXJzdGFuZCB0aGlzIG1lYW5zIHdlJ3JlIGFkZGluZyBib3RoIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHN1YnN5c3RlbSAqYW5kKiBhIG5ldyBzeXNmcyBpbnRlcmZhY2UgdG8gY29udHJvbCBpdC4gVGhlIGNvcmUgbG9naWMgZm9yIHRoZSBzcGxpdCBpdHNlbGYgc2VlbXMgdG8gYmUgd2l0aGluIGBkYW1vc192YV9zcGxpdGAsIGxldmVyYWdpbmcgYHNwbGl0X2ZvbGlvX3RvX29yZGVyYC5cblxuR2l2ZW4gbXkgZXhwZXJ0aXNlLCB0aGlzIGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgbWVudGFsIGNoZWNrbGlzdDogKipGVVpaSU5HISoqIFRoaXMgaXMgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFdlIG5lZWQgdG8gcmlnb3JvdXNseSB0ZXN0IHRoZSBmb2xpbyBzcGxpdHRpbmcgbG9naWMsIHBhcnRpY3VsYXJseSBpbiBgZGFtb3NfdmFfc3BsaXRgLCBhbmQgdGhlIGludGVyYWN0aW9uIHdpdGggdGhlIG5ldyBzeXNmcyBpbnRlcmZhY2UsIGB0YXJnZXRfb3JkZXJfc3RvcmVgIGFuZCBgdGFyZ2V0X29yZGVyX3Nob3dgLiBFZGdlIGNhc2VzIGFyZSBnb2luZyB0byBiZSBjcml0aWNhbCBoZXJlOiB3aGF0IGhhcHBlbnMgd2l0aCB2ZXJ5IGxhcmdlIGZvbGlvcywgbWluaW1hbCB0YXJnZXQgb3JkZXJzLCBvciBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zPyBUaGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb25zIG9mIGBEQU1PTmAsIGBEQU1PTl9TWVNGU2AsIGBEQU1PTl9WQUREUmAsIGFuZCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFsbCBtYWtlIHNlbnNlIGdpdmVuIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlIGFuZCBzaG91bGQgYmUgY29uc2lkZXJlZCBkdXJpbmcgdGVzdGluZywgdG8gZXN0YWJsaXNoIHRoZSBjb25kaXRpb25zIGluIHdoaWNoIHRoaXMgZmVhdHVyZSB3aWxsIGJlIHVzZWQgYW5kIGhvdyB0aGV5IG1heSBlZmZlY3QgdGhlIHRlc3RpbmcgcHJvY2Vzcy4gVGhlIGNyaXRpY2FsIHN5bWJvbHMgdGhhdCBJIHdpbGwgZm9jdXMgb24gZHVyaW5nIGludmVzdGlnYXRpb24gYXJlOiBgZGFtb3NfdmFfc3BsaXRgLCBgdGFyZ2V0X29yZGVyX3N0b3JlYCBhbmQgYHRhcmdldF9vcmRlcl9zaG93YC5cblxuSSdtIHJlYWR5IHRvIG1vdmUgb24gdG8gdGhlIG5leHQgc3RlcCwgc28gSSB3aWxsIG5vdyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzQxLCJPdXRwdXRUb2tlbnMiOjE3NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMFQwMzozOToyMC45NjE0NDk1MjFaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE3MzkxOTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcInRhcmdldF9vcmRlcl9zdG9yZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3Nob3dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IERBTU9OIGFjdGlvbiBgREFNT1NfU1BMSVRgIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIGEgc3BlY2lmaWVkIG9yZGVyLiBJdCBhZGRzIHN5c2ZzIGludGVyZmFjZXMgdG8gY29uZmlndXJlIHRoZSB0YXJnZXQgb3JkZXIgYW5kIGltcGxlbWVudHMgdGhlIHNwbGl0dGluZyBsb2dpYyBpbiBgZGFtb3NfdmFfc3BsaXRgIHVzaW5nIGBzcGxpdF9mb2xpb190b19vcmRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIGFuZCBzeXNmcyBpbnRlcmZhY2UgaGFuZGxlIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRBTU9OXCIsXG4gICAgXCJEQU1PTl9TWVNGU1wiLFxuICAgIFwiREFNT05fVkFERFJcIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGFtb3NfdmFfc3BsaXRcIixcbiAgICBcInRhcmdldF9vcmRlcl9zdG9yZVwiLFxuICAgIFwidGFyZ2V0X29yZGVyX3Nob3dcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IERBTU9OIGFjdGlvbiBgREFNT1NfU1BMSVRgIHRvIHNwbGl0IGxhcmdlIGZvbGlvcyBkb3duIHRvIGEgc3BlY2lmaWVkIG9yZGVyLiBJdCBhZGRzIHN5c2ZzIGludGVyZmFjZXMgdG8gY29uZmlndXJlIHRoZSB0YXJnZXQgb3JkZXIgYW5kIGltcGxlbWVudHMgdGhlIHNwbGl0dGluZyBsb2dpYyBpbiBgZGFtb3NfdmFfc3BsaXRgIHVzaW5nIGBzcGxpdF9mb2xpb190b19vcmRlcmAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc3Vic3lzdGVtIGFuZCBzaG91bGQgYmUgZnV6emVkIHRvIGVuc3VyZSB0aGUgZm9saW8gc3BsaXR0aW5nIGxvZ2ljIGFuZCBzeXNmcyBpbnRlcmZhY2UgaGFuZGxlIGVkZ2UgY2FzZXMgY29ycmVjdGx5LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowb4bgp[1] Phase: Succeeded StartedAt: 2026-07-20 03:39:34 +0000 UTC FinishedAt: 2026-07-20 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-20 03:39:34 +0000 UTC FinishedAt: 2026-07-20 03:39:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2] Phase: Succeeded StartedAt: 2026-07-20 03:39:34 +0000 UTC FinishedAt: 2026-07-20 07:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-20 03:39:34 +0000 UTC FinishedAt: 2026-07-20 07:56:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-20 03:39:34 +0000 UTC FinishedAt: 2026-07-20 03:40:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-20 03:39:34 +0000 UTC FinishedAt: 2026-07-20 03:40:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},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-workflowb4bgp/series-workflowb4bgp-convert-artifact-1647706384/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-20 03:40:17 +0000 UTC FinishedAt: 2026-07-20 04:21:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-20 03:40:17 +0000 UTC FinishedAt: 2026-07-20 04:21:21 +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:*f1038aeb-732d-4c2f-98c7-4dd7196cfccf,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-workflowb4bgp/series-workflowb4bgp-convert-artifact-1647706384/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": "f66a6399-4d81-40a4-b97e-df1992c8dac3", "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-workflowb4bgp/series-workflowb4bgp-build-action-1491017110/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-20 03:40:17 +0000 UTC FinishedAt: 2026-07-20 04:21:11 +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:*f1038aeb-732d-4c2f-98c7-4dd7196cfccf,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-workflowb4bgp/series-workflowb4bgp-convert-artifact-1647706384/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": "f66a6399-4d81-40a4-b97e-df1992c8dac3", "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-workflowb4bgp/series-workflowb4bgp-build-action-1491017110/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-20 04:21:21 +0000 UTC FinishedAt: 2026-07-20 04:21:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-20 04:21:21 +0000 UTC FinishedAt: 2026-07-20 04:21:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-20 04:21:21 +0000 UTC FinishedAt: 2026-07-20 04:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-20 04:21:21 +0000 UTC FinishedAt: 2026-07-20 04:21:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},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-workflowb4bgp/series-workflowb4bgp-convert-artifact-3508533111/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-20 04:21:31 +0000 UTC FinishedAt: 2026-07-20 04:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-20 04:21:31 +0000 UTC FinishedAt: 2026-07-20 04:23:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f66a6399-4d81-40a4-b97e-df1992c8dac3,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-workflowb4bgp/series-workflowb4bgp-build-action-1491017110/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-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-20 04:23:46 +0000 UTC FinishedAt: 2026-07-20 04:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-20 04:23:46 +0000 UTC FinishedAt: 2026-07-20 04:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-20 04:23:46 +0000 UTC FinishedAt: 2026-07-20 04:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-20 04:23:46 +0000 UTC FinishedAt: 2026-07-20 04:52:39 +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:*f1038aeb-732d-4c2f-98c7-4dd7196cfccf,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-workflowb4bgp/series-workflowb4bgp-convert-artifact-3508533111/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": "653f1529-f221-4121-a6d2-707c3021f177", "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-workflowb4bgp/series-workflowb4bgp-build-action-2695416379/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-20 04:23:46 +0000 UTC FinishedAt: 2026-07-20 04:51:50 +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:*f1038aeb-732d-4c2f-98c7-4dd7196cfccf,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-workflowb4bgp/series-workflowb4bgp-convert-artifact-3508533111/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": "653f1529-f221-4121-a6d2-707c3021f177", "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-workflowb4bgp/series-workflowb4bgp-build-action-2695416379/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-20 04:52:39 +0000 UTC FinishedAt: 2026-07-20 04:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-20 04:52:39 +0000 UTC FinishedAt: 2026-07-20 04:52:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-20 04:52:39 +0000 UTC FinishedAt: 2026-07-20 04:54:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-20 04:52:39 +0000 UTC FinishedAt: 2026-07-20 04:54:44 +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:*653f1529-f221-4121-a6d2-707c3021f177,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-workflowb4bgp/series-workflowb4bgp-build-action-2695416379/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-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 07:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 07:56:24 +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":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},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:*f66a6399-4d81-40a4-b97e-df1992c8dac3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*653f1529-f221-4121-a6d2-707c3021f177,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-workflowb4bgp/series-workflowb4bgp-build-action-1491017110/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-workflowb4bgp/series-workflowb4bgp-build-action-2695416379/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 04:55:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 04:54:59 +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":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},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-workflowb4bgp/series-workflowb4bgp-convert-artifact-4206465200/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 04:54:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 04:54:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-20 04:54:54 +0000 UTC FinishedAt: 2026-07-20 04:54:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-20 04:55:04 +0000 UTC FinishedAt: 2026-07-20 07:56:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb4bgp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["damos_va_split","target_order_store","target_order_show"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"96b0655ca9aabdd99e7c8cdedfb315c6b5c91180","config_name":"upstream-apparmor-kasan.config","enable_configs":["DAMON","DAMON_SYSFS","DAMON_VADDR","TRANSPARENT_HUGEPAGE"],"series_id":"b4eaa51a-d262-4f96-b606-22c96707c768","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-20 04:55:04 +0000 UTC FinishedAt: 2026-07-20 07:56:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f66a6399-4d81-40a4-b97e-df1992c8dac3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*653f1529-f221-4121-a6d2-707c3021f177,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-workflowb4bgp/series-workflowb4bgp-build-action-1491017110/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-workflowb4bgp/series-workflowb4bgp-build-action-2695416379/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-workflowb4bgp/series-workflowb4bgp-convert-artifact-4206465200/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,}