Name: series-workflowp7g8r Phase: Succeeded StartedAt: 2026-08-07 06:34:20 +0000 UTC FinishedAt: 2026-08-07 10:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[0] Phase: Succeeded StartedAt: 2026-08-07 06:34:20 +0000 UTC FinishedAt: 2026-08-07 06:37:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 06:34:20 +0000 UTC FinishedAt: 2026-08-07 06:37:48 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGETFS", "USB_GADGET", "USB_DUMMY_HCD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGETFS", "USB_GADGET", "USB_DUMMY_HCD" ], "series_id": "4d8b0528-e259-4cec-b2a7-d702dba35ac1" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "gadgetfs_bind" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRmc19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIGBnYWRnZXRmc19iaW5kYCBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIGlzc3VlIGJ5IG1hbnVhbGx5IGZyZWVpbmcgdGhlIHJlcXVlc3QgYW5kIGNsZWFyaW5nIHBvaW50ZXJzIGluc3RlYWQgb2YgY2FsbGluZyBgZ2FkZ2V0ZnNfdW5iaW5kYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFVTQiBkdW1teSBIQ0Qgb3Igb3RoZXIgVURDcykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MjAwZDliYjFhNGRmZTlhNTg0ZjBlZGQyMjBkZTE2NmVjNjBiNDU3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNjozNTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbmluZGV4IGQ4N2E4YWI1MTUxMDcuLjM2NWY5YWI0ZDBkMmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xuQEAgLTE3MDAsNyAmIzQzOzE3MDAsMTMgQEAgc3RhdGljIGludCBnYWRnZXRmc19iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXG4gXHRyZXR1cm4gMDtcbiBcbiBlbm9tZW06XG4tXHRnYWRnZXRmc191bmJpbmQgKGdhZGdldCk7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2VyZXEpIHtcbiYjNDM7XHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4mIzQzO1x0XHRkZXYtXHUwMDNlcmVxID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1x0Z2FkZ2V0LVx1MDAzZWVwMC1cdTAwM2Vkcml2ZXJfZGF0YSA9IE5VTEw7XG4mIzQzO1x0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4mIzQzO1x0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRmc19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIGBnYWRnZXRmc19iaW5kYCBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIGlzc3VlIGJ5IG1hbnVhbGx5IGZyZWVpbmcgdGhlIHJlcXVlc3QgYW5kIGNsZWFyaW5nIHBvaW50ZXJzIGluc3RlYWQgb2YgY2FsbGluZyBgZ2FkZ2V0ZnNfdW5iaW5kYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFVTQiBkdW1teSBIQ0Qgb3Igb3RoZXIgVURDcykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MjAwZDliYjFhNGRmZTlhNTg0ZjBlZGQyMjBkZTE2NmVjNjBiNDU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwNjozNTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYwppbmRleCBkODdhOGFiNTE1MTA3Li4zNjVmOWFiNGQwZDJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jCkBAIC0xNzAwLDcgJiM0MzsxNzAwLDEzIEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAogCXJldHVybiAwOwogCiBlbm9tZW06Ci0JZ2FkZ2V0ZnNfdW5iaW5kIChnYWRnZXQpOwomIzQzOwlpZiAoZGV2LSZndDtyZXEpIHsKJiM0MzsJCXVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LSZndDtlcDAsIGRldi0mZ3Q7cmVxKTsKJiM0MzsJCWRldi0mZ3Q7cmVxID0gTlVMTDsKJiM0MzsJfQomIzQzOwlnYWRnZXQtJmd0O2VwMC0mZ3Q7ZHJpdmVyX2RhdGEgPSBOVUxMOwomIzQzOwlkZXYtJmd0O2dhZGdldCA9IE5VTEw7CiYjNDM7CXNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpOwogCXJldHVybiAtRU5PTUVNOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIGEgVVNCIEdhZGdldGZzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgcGxheWluZyB3aXRoIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBnYWRnZXRmc19iaW5kYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7SW50ZXJlc3RpbmcsIHRoZXkmIzM5O3JlIG5vdCB1c2luZyB0aGUgc3RhbmRhcmQgYGdhZGdldGZzX3VuYmluZChnYWRnZXQpYCBpbiB0aGUgZXJyb3IgcGF0aC4mIzM0OyBJbnN0ZWFkLCB0aGV5JiMzOTt2ZSBvcHRlZCBmb3IgYSBtb3JlIGRpcmVjdCBhcHByb2FjaDogZnJlZWluZyB0aGUgcmVxdWVzdCBtYW51YWxseSBhbmQgY2xlYXJpbmcgcG9pbnRlcnMuCgpNeSBleHBlcnQgaW50dWl0aW9uIGtpY2tzIGluOiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTt2ZSBieXBhc3NlZCB0aGUgdHlwaWNhbCB1bmJpbmRpbmcgcHJvY2Vzcy4gSXMgdGhlcmUgYSBzcGVjaWZpYyByZWFzb24/IFBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IE9wdGltaXphdGlvbiBjb25jZXJucz8gV2hhdGV2ZXIgdGhlIG1vdGl2YXRpb24sIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvbnRleHQgaXMgd2FycmFudGVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBjb2RlIHN1cnJvdW5kaW5nIHRoZSBgZ2FkZ2V0ZnNfYmluZGAgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1hbnVhbCBtZW1vcnkgbWFuYWdlbWVudC4gSSYjMzk7bSBrZWVuIHRvIGRpc3NlY3QgdGhpcyBjaGFuZ2UgdG8gZ3Jhc3AgaXRzIGltcGFjdCBhbmQgYXNzZXNzIGl0cyBjb3JyZWN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnYWRnZXRmc19iaW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBzdHJ1Y3QgZGV2X2RhdGFcdFx0KnRoZV9kZXZpY2U7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NjktXHRcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzUyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXHQuZnVuY3Rpb25cdD0gKGNoYXIgKikgZHJpdmVyX2Rlc2MsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcdC5iaW5kXHRcdD0gZ2FkZ2V0ZnNfYmluZCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzU1LVx0LnVuYmluZFx0XHQ9IGdhZGdldGZzX3VuYmluZCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XHQvKiB0cmlnZ2VycyBnYWRnZXRmc19iaW5kKCk7IHRoZW4gd2UgY2FuIGVudW1lcmF0ZS4gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgzLVx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGdhZGdldGZzX2JpbmRgIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGdhZGdldGZzX2JpbmRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgcmFuZG9tIGZ1bmN0aW9uOyBpdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSBnYWRnZXRmcyBiaW5kaW5nIHByb2Nlc3MuIFdoYXQgZXhhY3RseSBpcyBiZWluZyBjaGFuZ2VkIGhlcmUsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbj8KClRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZHJpbGwgZG93biBvbiBpcyB0aGUgY29uZmlndXJhdGlvbi4gKldoeSogaXMgdGhpcyBjb2RlIHBhdGggYmVpbmcgbW9kaWZpZWQ/IFdoYXQgY29uZmlnIG9wdGlvbnMsIGRldmljZSB0cmVlIHNldHRpbmdzLCBvciBidWlsZCBmbGFncyBhcmUgdHJpZ2dlcmluZyB0aGlzIGNvZGUgdG8gYmUgY29tcGlsZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMgYW5kIHVuZGVybHlpbmcgdXNlIGNhc2VzIHRoYXQgZGljdGF0ZSB3aGVuIGBnYWRnZXRmc19iaW5kYCBpcyBjYWxsZWQuIElzIGl0IGEgc3BlY2lmaWMgY29udHJvbGxlciB0eXBlLCBhIGNlcnRhaW4gZ2FkZ2V0IHNldHVwLCBvciBhIGZlYXR1cmUgZmxhZz8gQSBjaGFuZ2UgaGVyZSBjb3VsZCBpbXBhY3QgYSB3aWRlIHJhbmdlIG9mIGRldmljZXMgYW5kIGNvbmZpZ3VyYXRpb25zLCBhbmQgSSBuZWVkIHRvIGtub3cgd2hpY2ggb25lcy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgYnVpbGQgaXMgdGhlIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9HQURHRVRGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIwNjpjb25maWcgVVNCX0dBREdFVEZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA3LVx0dHJpc3RhdGUgXCYjMzQ7R2FkZ2V0IEZpbGVzeXN0ZW1cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVVNCX0dBREdFVEZTIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHJlYWxseSBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHZlcmlmeSB0aGUgY3VycmVudCBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VURlNgLiBJdCYjMzk7cyBjcnVjaWFsLCBhcyBhbHdheXMsIHRvIGVuc3VyZSB0aGF0IHRoZSBmb3VuZGF0aW9uIGlzIHNvbGlkIGJlZm9yZSBJIHN0YXJ0IGJ1aWxkaW5nIGFueXRoaW5nIG9uIHRvcCBvZiBpdC4gSSYjMzk7bSBpbWFnaW5pbmcgYSBjb21wbGV4IHdlYiBvZiBjb25maWd1cmF0aW9ucywgZHJpdmVycywgYW5kIHVuZGVybHlpbmcgaGFyZHdhcmUgYXNzdW1wdGlvbnMgaGVyZS4gVGhlIHBvdGVudGlhbCBmb3IgcmVncmVzc2lvbnMgb3IgdW5mb3Jlc2VlbiBjb25mbGljdHMgaXMgYWx3YXlzIHByZXNlbnQsIGVzcGVjaWFsbHkgaW4gYW4gYXJlYSBhcyB0aWdodGx5IGNvdXBsZWQgYXMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gbWFrZSBzdXJlIEkga25vdyAqZXhhY3RseSogd2hhdCYjMzk7cyByZXF1aXJlZCwgYW55IGtub3duIGxpbWl0YXRpb25zLCBhbmQgaG93IGFueSByZWNlbnQga2VybmVsIGNoYW5nZXMgbWlnaHQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBtb2R1bGUuIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSB3ZWFrIHBvaW50cyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNCX0dBREdFVEZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBVU0JfR0FER0VURlNgIERlcGVuZGVuY3kqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBnZXQgYSBmaXJtIGdyYXNwIG9uIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBVU0JfR0FER0VURlNgLiBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O3MgbGlrZWx5IGEgd2hvbGUgY2hhaW4gb2YgcmVsYXRlZCBrZXJuZWwgbW9kdWxlcyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCB0aGlzIHNldHRpbmcgdHJpZ2dlcnMgb3IgcmVxdWlyZXMuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgd2hhdCYjMzk7cyBwdWxsZWQgaW4sIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgZm9yIHRoZSBidWlsZCwgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBzdWJzeXN0ZW1zLiBJIG5lZWQgYSBjbGVhciB2aWV3IG9mIHRoZSBjb25maWd1cmF0aW9uIGdyYXBoLiBPbmx5IHRoZW4gY2FuIEkgZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBjb3Vyc2Ugb2YgYWN0aW9uLiBJIGNhbiYjMzk7dCBvcGVyYXRlIG9uIGFzc3VtcHRpb25zOyBJIG5lZWQgZGF0YS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMDpcdFx0ICBvZiBzZXZlcmFsIGV0aGVybmV0IGZyYW1lcyBpbnRvIG9uZSBVU0IgdHJhbnNmZXIgYW5kIGRpZmZlcmVudFxuIDIwMTpcdFx0ICBhbGlnbm1lbnQgcG9zc2liaWxpdGllcy5cbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDIwNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX25jbVwmIzM0Oy5cbiAyMDU6XHRcbiAyMDY6XHRjb25maWcgVVNCX0dBREdFVEZTXG4gMjA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuIDIwODpcdFx0aGVscFxuIDIwOTpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcbiAyMTA6XHRcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXG4gMjExOlx0XHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbiYjMzk7dCByZWxhdGUgdG8gZW51bWVyYXRpb24uXG4gMjEyOlx0XHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxuIDIxMzpcdFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXG4gMjE0Olx0XG4gMjE1Olx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiAyMTY6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDsuXG4gMjE3Olx0XG4gMjE4Olx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtGdW5jdGlvbiBGaWxlc3lzdGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGF0ZXZlciBpdCBpcywgYW5kIEkgaW1tZWRpYXRlbHkga25vdyB0aGF0IGl0cyBhdmFpbGFiaWxpdHkgaXMgY2hhaW5lZCB0byBgVVNCX0dBREdFVGAuIFRoYXQmIzM5O3MgYmVjYXVzZSB0aGUgS2NvbmZpZyBmaWxlIGZvciBsZWdhY3kgZ2FkZ2V0IGRyaXZlcnMsIGxvY2F0ZWQgaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AsIGlzIHRoZSB1c3VhbCBwbGFjZSBmb3IgdGhlc2Ugc29ydHMgb2YgZGVwZW5kZW5jaWVzLiBJJiMzOTt2ZSB3b3JrZWQgd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBsb25nIGVub3VnaCB0byBrbm93IHRoZSBsYXlvdXQgaW5zdGluY3RpdmVseS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBjaGVjayBmb3IgdGhlIG9wdGlvbnMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gb3BlbiB1cCBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZWAuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBlbGVtZW50LCB3aGF0ZXZlciBpdCBpcywgZml0cyBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgb2JqZWN0IGZpbGVzIGFyZSBjb25zdHJ1Y3RlZCwgd2hhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyB1c2VkLCBhbmQgaG93IGBVU0JfR0FER0VUYCBhY3R1YWxseSBpbmZsdWVuY2VzIHRoZSBpbmNsdXNpb24gKG9yIGV4Y2x1c2lvbikgb2YgY29kZS4gQmFzaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBzb3VyY2UgY29kZSwgYW5kIHRoZSBmaW5hbCBjb21waWxlZCBiaW5hcnkuIFNlZWluZyB0aGUgbWFrZWZpbGUgd2lsbCBnaXZlIG1lIHRoYXQgY29udGV4dC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgaW4gYSBtdWNoIGJldHRlciBwb3NpdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIG9wdGlvbiBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dhZGdldGZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlPTE0PWdfbWlkaS15XHRcdFx0Oj0gZ21pZGkub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZToxNTpnYWRnZXRmcy15XHRcdFx0Oj0gaW5vZGUub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZS0xNi1nX21hc3Nfc3RvcmFnZS15XHRcdDo9IG1hc3Nfc3RvcmFnZS5vXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfVVNCX0VUSClcdFx0JiM0Mzs9IGdfZXRoZXIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfVVNCX0dBREdFVEZTKVx0JiM0Mzs9IGdhZGdldGZzLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX1VTQl9GVU5DVElPTkZTKVx0JiM0Mzs9IGdfZmZzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYwNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXRGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpdGVtIGFwcGVhcnMgdG8gYmUgYENPTkZJR19VU0JfR0FER0VURlNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBtb2RpZmljYXRpb24gbWFkZSB0byB0aGUgYGdhZGdldGZzX2JpbmRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8mIzM0OyBCZWNhdXNlIGxldCYjMzk7cyBmYWNlIGl0LCBhIGxvdCBvZiBkZXZlbG9wbWVudCB0aGVzZSBkYXlzIGhhcHBlbnMgd2l0aGluIFZNcy4gRm9ydHVuYXRlbHksIEkgcmVjYWxsIHRoYXQgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5ICppcyogZW11bGF0ZWQgaW4gc29tZSB2aXJ0dWFsaXphdGlvbiBzZXR1cHMuIFRoaW5rIGR1bW15X2hjZCBhbmQgc2ltaWxhciBhYnN0cmFjdGlvbnMuIFNvIHRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGFjcm9zcyBhIHdpZGVyIHJhbmdlIG9mIHNjZW5hcmlvcy4KCk5leHQsIEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgcHJhY3RpY2FsIGltcGFjdC4gSXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFsdGVyaW5nIHRoZSB3YXkgZXJyb3IgaGFuZGxpbmcgd29ya3MuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIGJlLCB0aGF0IGNhbiBsZWFkIHRvIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgc3RhYmlsaXR5IGltcHJvdmVtZW50cy4KCk5vdywgbGV0IG1lIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2wgaGVyZTogYGdhZGdldGZzX2JpbmRgLiBXYWl0IGEgc2Vjb25k4oCmIGlzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uICpzdGF0aWMqPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCBtZSBxdWlja2x5IHZlcmlmeSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLiBJdCYjMzk7cyBjcnVjaWFsLCBiZWNhdXNlIGlmIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3Mgc2NvcGUgaXMgaW5jcmVkaWJseSBsaW1pdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnYWRnZXRmc19iaW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBzdHJ1Y3QgZGV2X2RhdGFcdFx0KnRoZV9kZXZpY2U7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NjktXHRcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzUyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXHQuZnVuY3Rpb25cdD0gKGNoYXIgKikgZHJpdmVyX2Rlc2MsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcdC5iaW5kXHRcdD0gZ2FkZ2V0ZnNfYmluZCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzU1LVx0LnVuYmluZFx0XHQ9IGdhZGdldGZzX3VuYmluZCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XHQvKiB0cmlnZ2VycyBnYWRnZXRmc19iaW5kKCk7IHRoZW4gd2UgY2FuIGVudW1lcmF0ZS4gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgzLVx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzcywgd2l0aCB0aGUgYm9sZGVkIGhlYWRlciBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGBnYWRnZXRmc2AgRHJpdmVyIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCBzbyBgZ2FkZ2V0ZnNfYmluZGAgaXMgZGVmaW5pdGl2ZWx5IGEgc3RhdGljIGZ1bmN0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIEl0JiMzOTtzIHVzZWQgYXMgdGhlIGAuYmluZGAgbWVtYmVyIHdpdGhpbiB0aGUgYGdhZGdldGZzX2RyaXZlcmAgc3RydWN0dXJlLiBNeSBuZXh0IHRob3VnaHQgaXMsIHdoZXJlIGV4YWN0bHkgaXMgdGhhdCBgZ2FkZ2V0ZnNfZHJpdmVyYCBzdHJ1Y3R1cmUgZ2V0dGluZyByZWdpc3RlcmVkIHdpdGhpbiB0aGUga2VybmVsPyBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgaXRzZWxmIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIFVTQiBzdWJzeXN0ZW0uIEkmIzM5O20gYWZ0ZXIgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2FkZ2V0ZnNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTgwPWVwMF9mYXN5bmMgKGludCBmLCBzdHJ1Y3QgZmlsZSAqZmQsIGludCBvbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE4Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTg4OnN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExODktXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTE9ZGV2X3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE5Ny1cdGlmIChkZXYtXHUwMDNlZ2FkZ2V0X3JlZ2lzdGVyZWQpIHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTk4Olx0XHR1c2JfZ2FkZ2V0X3VucmVnaXN0ZXJfZHJpdmVyIChcdTAwMjZnYWRnZXRmc19kcml2ZXIpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExOTktXHRcdGRldi1cdTAwM2VnYWRnZXRfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzMyPWdhZGdldGZzX3N1c3BlbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1MjpzdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyIGdhZGdldGZzX2RyaXZlciA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUzLVx0LmZ1bmN0aW9uXHQ9IChjaGFyICopIGRyaXZlcl9kZXNjLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xODA3PWRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODQtXHRpZiAoZGV2LVx1MDAzZWhzX2NvbmZpZylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg1Olx0XHRnYWRnZXRmc19kcml2ZXIubWF4X3NwZWVkID0gVVNCX1NQRUVEX0hJR0g7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4Ni1cdGVsc2VcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg3Olx0XHRnYWRnZXRmc19kcml2ZXIubWF4X3NwZWVkID0gVVNCX1NQRUVEX0ZVTEw7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg5Olx0dmFsdWUgPSB1c2JfZ2FkZ2V0X3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZnYWRnZXRmc19kcml2ZXIpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4OTAtXHRpZiAodmFsdWUgIT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjc2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBEZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24sIHdoYXRldmVyIGl0IGlzLCBpcyByZWdpc3RlcmVkLCBwcm9iYWJseSBhcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIGxpa2UgdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIGlzIGluIGBkZXZfY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUga2V5OiBgZGV2X2NvbmZpZ2AgaXMgdGhlIGRlc2lnbmF0ZWQgd3JpdGUgaGFuZGxlciBmb3IgdGhlIGRldmljZSBmaWxlLiBJdCBoYW5kbGVzIGFsbCB0aGUgY29uZmlndXJhdGlvbiB3cml0ZXMuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBkZXZfY29uZmlnYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGhhbmRsZWQsIHRoZSBjb250ZXh0LCBhbmQgYW55IGFzc29jaWF0ZWQgZXJyb3IgaGFuZGxpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfY29uZmlnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01NS0gKlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjU2OiAqIC0gRmlyc3QsIGRldl9jb25maWcoKSBpcyBjYWxsZWQgd2hlbiAvZGV2L2dhZGdldC8kQ0hJUCBpcyBjb25maWd1cmVkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNTctICogICAoYnkgd3JpdGluZyBjb25maWd1cmF0aW9uIGFuZCBkZXZpY2UgZGVzY3JpcHRvcnMpLiAgQWZ0ZXJ3YXJkcyBpdFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xODA2PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTgwNzpkZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwMF9vcGVyYXRpb25zID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTQwLVx0LnJlYWQgPVx0XHRlcDBfcmVhZCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTQxOlx0LndyaXRlID1cdGRldl9jb25maWcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk0Mi1cdC5mYXN5bmMgPVx0ZXAwX2Zhc3luYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc3OQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdhZGdldEZTIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBkZXZfY29uZmlnYCBpcyB0aGUgY3JpdGljYWwgd3JpdGUgaGFuZGxlciBmb3IgYGVwMF9vcGVyYXRpb25zYC4gQnV0IGlzIGBkZXZfY29uZmlnYCBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gVGhhdCBsaW1pdHMgbXkgaW5pdGlhbCB0YXJnZXQuIEFuZCB3aGF0IGFib3V0IGBlcDBfb3BlcmF0aW9uc2A/IFRoYXQgZ2V0cyB1c2VkIHdoZW4gd2Ugb3BlbiB0aGUgZ2FkZ2V0ZnMgZGV2aWNlLCB3aGljaCBpc24mIzM5O3QgdGhlIG1vc3QgZHluYW1pYyBwb2ludCBvZiBpbnRlcmFjdGlvbi4KCkkgbmVlZCB0byBmaW5kIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZGVlcGVyIGluc3BlY3Rpb24uIExldCBtZSB0aGluay4uLiBBaCEgYGdhZGdldGZzX2JpbmRgIOKAkyB0aGF0JiMzOTtzIGNhbGxlZCBieSB0aGUgVVNCIGdhZGdldCBjb3JlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IHdoZW4gYSBkcml2ZXIgcmVnaXN0ZXJzLiBTbyB0aGUga2V5IGVudHJ5IHBvaW50cyBhcmUgZ29pbmcgdG8gYmUgYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCBvciBgdXNiX2dhZGdldF9wcm9iZV9kcml2ZXJgLiBJIGtub3cgSSBjYW4gZmluZCB0aGlzIGNvcmUgZnVuY3Rpb24gaW4gdGhlIGxpbnV4IGtlcm5lbCBzb3VyY2UuCgpCdXQgSSByZWFsbHkgd2FudCB0byBmb2N1cyBzcGVjaWZpY2FsbHkgb24gdGhlIGdhZGdldGZzIGNvbXBvbmVudC4gTGV0JiMzOTtzIHNlZS4uLiBJcyB0aGVyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IGlzIGFjY2Vzc2libGUgd2l0aGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgPyBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2luIHRoaXMgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTc5PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTgwOmVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNTgxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NjM4PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NjM5OmVwX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjQwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEyMD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZ2FkZ2V0ZnNfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNS19O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMjY6TU9EVUxFX0FMSUFTX0ZTKFwmIzM0O2dhZGdldGZzXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTAyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEVudHJ5IFBvaW50cyoqCgpBbHJpZ2h0LCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IHRoaXMgcGllY2Ugb2YgY29kZSAqYmVnaW5zKiBpdHMgZXhlY3V0aW9uIG9yIGhvdyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBmb3IgdHdvIHRoaW5nczogRmlyc3QsIGFueSBjbGVhcmx5IGRlZmluZWQgKmV4cG9ydGVkIGZ1bmN0aW9ucyog4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gZWxzZXdoZXJlLiBUaGVzZSBhcmUgbXkgcHJpbWUgc3VzcGVjdHMgZm9yIHVzZXItZmFjaW5nIGZ1bmN0aW9uYWxpdHkgb3IgY29yZSBvcGVyYXRpb25zLiBTZWNvbmQsIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgYSAqbW9kdWxlIGluaXRpYWxpemF0aW9uKiByb3V0aW5lLCBwZXJoYXBzIHNvbWV0aGluZyB0aGF0IHNldHMgdXAgaW50ZXJuYWwgc3RhdGUgb3IgcmVnaXN0ZXJzIGNhbGxiYWNrcy4gT2Z0ZW4gYSBtb2R1bGUgd2lsbCBoYXZlIHNvbWUgc29ydCBvZiBpbml0aWFsaXplci4gVGhlc2UgdHlwZXMgb2YgZnVuY3Rpb25zIGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgbW9kdWxlIGludGVncmF0ZXMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBxdWljayBtYXAgb2YgdGhlIGNvZGUmIzM5O3MgYm91bmRhcmllcyBhbmQgaW5pdGlhbCBzZXR1cCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgZ3JhbnVsYXIgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzA9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEzOS19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0MDptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg2MwoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBgaW5vZGUuY2AgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgTGVnYWN5IFVTQiBHYWRnZXQgSW5vZGUgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyB6ZXJvaW5nIGluIG9uIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBUaGF0IHRlbGxzIG1lIHJpZ2h0IGF3YXkgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgbGVnYWN5IFVTQiBnYWRnZXQgaW5mcmFzdHJ1Y3R1cmUsIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZpbGUgc3lzdGVtLiBJbiBvdGhlciB3b3JkcywgaG93IHRoZSBMaW51eCBrZXJuZWwgcHJlc2VudHMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IGFzIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQuIFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGFueSBVU0IgZ2FkZ2V0LCBhcyBpdCYjMzk7cyB0aGUgaW50ZXJmYWNlIHRoYXQgdXNlcnNwYWNlIHByb2dyYW1zIHVzZSB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgdGhlIGRldmljZS4KCkkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgc2V0IHVwLiBXaGF0IGFyZSB0aGUga2V5IGBpbm9kZWAgb3BlcmF0aW9ucyBkZWZpbmVkIGhlcmU/IGBjcmVhdGVgLCBgb3BlbmAsIGByZWxlYXNlYCwgYHJlYWRgLCBgd3JpdGVgLCBgZ2V0YXR0cmAsIGBzZXRhdHRyYCwgZXRjLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGV2aWNlLXNwZWNpZmljIGRhdGEgYW5kIGZ1bmN0aW9ucyBhcmUgYm91bmQgdG8gYSBmaWxlLXN5c3RlbSBpbnRlcmZhY2UuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkLCBhbmQgaG93IGlzIHNlY3VyaXR5IGNvbnNpZGVyZWQ/CgpBcmUgdGhleSBoYW5kbGluZyB0aGUgZGV2aWNlLXNwZWNpZmljIHJlcXVlc3RzLCBvciBhcmUgdGhlc2UganVzdCB3cmFwcGVycywgZGVmZXJyaW5nIHRvIG90aGVyIFVTQiBnYWRnZXQgZHJpdmVycz8gSG93IGlzIHN0YXRlIG1hbmFnZWQ/IEhvdyBpcyBjb25jdXJyZW5jeSBoYW5kbGVkLCBjb25zaWRlcmluZyB0aGF0IG11bHRpcGxlIHVzZXJzcGFjZSBwcm9ncmFtcyBjYW4gaW50ZXJhY3Qgd2l0aCB0aGUgZ2FkZ2V0IHNpbXVsdGFuZW91c2x5PyBBcmUgdGhlcmUgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGx1cmtpbmcgaW4gdGhpcyBjb2RlPyBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCBpcyBpbiB0aGUgZGV0YWlscy4gV2hhdCBlcnJvciBoYW5kbGluZyBpcyB0aGVyZSwgYW5kIGhvdyByb2J1c3QgaXMgaXQ/CgpVbHRpbWF0ZWx5LCB0aGUgZ29hbCBpcyB0byBmdWxseSBncmFzcCB0aGUgbGlmZWN5Y2xlIG9mIGhvdyBhIHVzZXItbGV2ZWwgcHJvZ3JhbSBpbnRlcmFjdHMgd2l0aCB0aGUgVVNCIGdhZGdldCBkZXZpY2UsIGZyb20gZmlsZSBvcGVuaW5nIHRvIGRhdGEgdHJhbnNmZXIsIGFuZCBob3cgdGhhdCB0cmFuc2xhdGVzIHRvIHRoZSBoYXJkd2FyZS4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBbYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxPU1PRFVMRV9MSUNFTlNFIChcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgzOnN0YXRpYyBpbnQgZXBfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODQtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MT1lcF9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQwMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0MDI6c3RhdGljIGxvbmcgZXBfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBjb2RlLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQwMy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTQzNj1zdHJ1Y3Qga2lvY2JfcHJpdiB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ0Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0NDg6c3RhdGljIGludCBlcF9haW9fY2FuY2VsKHN0cnVjdCBraW9jYiAqaW9jYilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy00NDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy00NjYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NDY3OnN0YXRpYyB2b2lkIGVwX3VzZXJfY29weV93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ2OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ4Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0ODg6c3RhdGljIHZvaWQgZXBfYWlvX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy00ODkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01MjYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTI3OnN0YXRpYyBzc2l6ZV90IGVwX2FpbyhzdHJ1Y3Qga2lvY2IgKmlvY2IsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNTI4LVx0XHQgICAgICBzdHJ1Y3Qga2lvY2JfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTgwPWVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTYzNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2MzY6c3RhdGljIHNzaXplX3QgZXBfY29uZmlnKHN0cnVjdCBlcF9kYXRhICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02MzctXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVx0XHQqdGhlX2RldmljZTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2Njg6c3RhdGljIGludCBnYWRnZXRmc19iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY2OS1cdFx0c3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyICpkcml2ZXIpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3OTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc5MzpzdGF0aWMgaW50IGlzX3ZhbGlkX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc5NC1cdFx0dW5zaWduZWQgaW50IHRvdGFsKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIxPWdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA4OC0vKiBcJiMzNDttb3VudCAtdCBnYWRnZXRmcyBwYXRoIC9kZXYvZ2FkZ2V0XCYjMzQ7IGVuZHMgdXAgaGVyZSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwODk6c3RhdGljIGludCBnYWRnZXRmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA5MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZ2FkZ2V0ZnNfY29udGV4dF9vcHMgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwOTctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjA5ODpzdGF0aWMgaW50IGdhZGdldGZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA5OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NzIKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AgZm9yIE5vbi1TdGF0aWMgRnVuY3Rpb25zKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBNeSBpbW1lZGlhdGUgZ29hbCBoZXJlIGlzIHRvIGlkZW50aWZ5IGFuZCB1bmRlcnN0YW5kIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBmaWxlLiBUaGUgJiMzNDtsZWdhY3kmIzM0OyBkZXNpZ25hdGlvbiB0ZWxscyBtZSB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBvbGRlciBVU0IgZ2FkZ2V0IGltcGxlbWVudGF0aW9uIGNvZGUsIHdoaWNoIGFsd2F5cyBtYWtlcyBtZSBhIGxpdHRsZSBjYXV0aW91cyDigJMgZXhwZWN0aW5nIHBvc3NpYmx5IGxlc3MgbW9kdWxhciBkZXNpZ24gYW5kIHBlcmhhcHMgbW9yZSBnbG9iYWwgc3RhdGUgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gZm9yIGFueXRoaW5nIHRoYXQgaXNuJiMzOTt0IGRlY2xhcmVkIGBzdGF0aWNgLiBOb24tc3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIHZpc2libGUgb3V0c2lkZSB0aGUgZmlsZSBzY29wZS4gSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgaG93IHRoZXNlIGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgdXRpbGl6ZWQsIHRoaW5raW5nIHBhcnRpY3VsYXJseSBhYm91dCB0aGUgcG90ZW50aWFsIGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMgYW5kIHRoZWlyIGltcGxpY2F0aW9ucyBvbiB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgYmVoYXZpb3IuIEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIsIHdlbGwtZGVmaW5lZCBBUEksIG9yIGRvIHRoZXkgZmVlbCBhIGJpdCBhZC1ob2M/IEFuZCBvZiBjb3Vyc2UsIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IG9idmlvdXMgaXNzdWVzOiBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBpbmNvcnJlY3QgbG9ja2luZywgb3IgZXZlbiBqdXN0IGluZWZmaWNpZW50IGNvZGUgZGVzaWduIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiAqXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03Nz1zdGF0aWMgY29uc3QgY2hhciBzaG9ydG5hbWUgW10gPSBcJiMzNDtnYWRnZXRmc1wmIzM0OztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3OTpNT0RVTEVfREVTQ1JJUFRJT04gKERSSVZFUl9ERVNDKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MDpNT0RVTEVfQVVUSE9SIChcJiMzNDtEYXZpZCBCcm93bmVsbFwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODE6TU9EVUxFX0xJQ0VOU0UgKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODItXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTI5NT1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6Mjk2OmdldF9yZWFkeV9lcCAodW5zaWduZWQgZl9mbGFncywgc3RydWN0IGVwX2RhdGEgKmVwZGF0YSwgYm9vbCBpc193cml0ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yOTcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0zMzU9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozMzY6ZXBfaW8gKHN0cnVjdCBlcF9kYXRhICplcGRhdGEsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgbGVuKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTMzNy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MD1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MzgxOmVwX3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0zODIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz01Nzk9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo1ODA6ZXBfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01ODEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz02Mzg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2Mzk6ZXBfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02NDAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03MjU9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3MjY6ZXBfY29uZmlnIChzdHJ1Y3QgZXBfZGF0YSAqZGF0YSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTcyNy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODE4OmVwX29wZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04MTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz05MTI9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo5MTM6ZXAwX3JlYWQgKHN0cnVjdCBmaWxlICpmZCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtOTE0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTA4Mj1zdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRmc19ldmVudCAqXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTA4MzpuZXh0X2V2ZW50IChzdHJ1Y3QgZGV2X2RhdGEgKmRldiwgZW51bSB1c2JfZ2FkZ2V0ZnNfZXZlbnRfdHlwZSB0eXBlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEwODQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTI0PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTEyNTplcDBfd3JpdGUgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTEyNi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExNzk9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExODA6ZXAwX2Zhc3luYyAoaW50IGYsIHN0cnVjdCBmaWxlICpmZCwgaW50IG9uKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExODEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTkwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTkxOmRldl9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE5Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEyMTk9c3RhdGljIF9fcG9sbF90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTIyMDplcDBfcG9sbCAoc3RydWN0IGZpbGUgKmZkLCBwb2xsX3RhYmxlICp3YWl0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEyMjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMzA2PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMzA3OmNvbmZpZ19idWYgKHN0cnVjdCBkZXZfZGF0YSAqZGV2LCB1OCB0eXBlLCB1bnNpZ25lZCBpbmRleClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMzA4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTMzMj1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTMzMzpnYWRnZXRmc19zZXR1cCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMzM0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTYzOT1zdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2NDA6Z2FkZ2V0ZnNfdW5iaW5kIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NDEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzEzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTcxNDpnYWRnZXRmc19kaXNjb25uZWN0IChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3MTUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzMxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTczMjpnYWRnZXRmc19zdXNwZW5kIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3MzMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xODA2PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTgwNzpkZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTE5PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTIwOmdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYzPXN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0X3Blcm0gPSBTX0lSVVNSIHwgU19JV1VTUjtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NjU6bW9kdWxlX3BhcmFtIChkZWZhdWx0X3VpZCwgdWludCwgMDY0NCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2Njptb2R1bGVfcGFyYW0gKGRlZmF1bHRfZ2lkLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTY3Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9wZXJtLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTY4LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTcwPXN0YXRpYyBzdHJ1Y3QgaW5vZGUgKlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NzE6Z2FkZ2V0ZnNfbWFrZV9pbm9kZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTcyLVx0XHR2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDIxOmdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDIyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEwND1zdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMDU6Z2FkZ2V0ZnNfa2lsbF9zYiAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTA2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEyMD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZ2FkZ2V0ZnNfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNS19O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMjY6TU9EVUxFX0FMSUFTX0ZTKFwmIzM0O2dhZGdldGZzXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTMwPXN0YXRpYyBpbnQgX19pbml0IGdhZGdldGZzX2luaXQgKHZvaWQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMzktfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxNDA6bW9kdWxlX2luaXQgKGdhZGdldGZzX2luaXQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjE0Mj1zdGF0aWMgdm9pZCBfX2V4aXQgZ2FkZ2V0ZnNfY2xlYW51cCAodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0Ni19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0Nzptb2R1bGVfZXhpdCAoZ2FkZ2V0ZnNfY2xlYW51cCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyOTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0RlMgRHJpdmVyJiMzOTtzIEVudHJ5IFBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgIGFuZCBpbW1lZGlhdGVseSBub3RpY2UgYWxsIHRoZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgd3JpbmtsZS4gSSBuZWVkIGEgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnQuIEluaXRpYWxseSwgSSB0aG91Z2h0IEkgbWlnaHQgaGF2ZSB0byBmYWxsIGJhY2sgb24gYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCwgYnV0IHRoYXQmIzM5O3MgYSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBub3Qgc3BlY2lmaWMgdG8gR2FkZ2V0RlMuCgpBaGEhIGBnYWRnZXRmc19iaW5kYC4gVGhhdCYjMzk7cyB0aGUgb25lIHRoYXQgd2FzIG1vZGlmaWVkIGluIHRoZSBwYXRjaCEgQnV0IHdhaXQuLi5pdCYjMzk7cyBhbHNvIGBzdGF0aWNgLiBTaG9vdC4gSWYgbm90aGluZyYjMzk7cyBub24tc3RhdGljLCBJIGNhbiBlaXRoZXIgcHJvdmlkZSBubyBGb2N1c1N5bWJvbHMgYXQgYWxsLCBvciBwZXJoYXBzIHByb3ZpZGUgYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCB3aGljaCBpcyB0aGUgdG9wLWxldmVsLiBObywgaXQmIzM5O3MgYSBob3QgcGF0aCwgc28gYSBiYWQgY2hvaWNlLgoKVGhlbiBpdCBoaXRzIG1lOiAqZnVuY3Rpb24gcG9pbnRlcnMqLiBgZ2FkZ2V0ZnNfYmluZGAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIChgLmJpbmQgPSBnYWRnZXRmc19iaW5kYCkuIFRoYXQgbWVhbnMgaXQgY2Fubm90IGJlIGlubGluZWQsIGl0IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBhbmQgdGhlcmVmb3JlIGl0ICppcyogYSB2YWxpZCBjaG9pY2UuIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgY2hlY2tlZCB0aGUgZGlmZiBhZ2FpbiwgYW5kLCB5ZXMsIGBnYWRnZXRmc19iaW5kYCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkLgoKVGhlIGNvbmZpZyB0byBlbmFibGUgdGhlIEdhZGdldEZTIGlzIGBVU0JfR0FER0VURlNgLCBlYXN5IGVub3VnaC4KCkFscmlnaHQsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBzdXJlLi4uIExldCYjMzk7cyBjaGVjayBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMDpcdFx0ICBvZiBzZXZlcmFsIGV0aGVybmV0IGZyYW1lcyBpbnRvIG9uZSBVU0IgdHJhbnNmZXIgYW5kIGRpZmZlcmVudFxuIDIwMTpcdFx0ICBhbGlnbm1lbnQgcG9zc2liaWxpdGllcy5cbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDIwNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX25jbVwmIzM0Oy5cbiAyMDU6XHRcbiAyMDY6XHRjb25maWcgVVNCX0dBREdFVEZTXG4gMjA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuIDIwODpcdFx0aGVscFxuIDIwOTpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcbiAyMTA6XHRcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXG4gMjExOlx0XHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbiYjMzk7dCByZWxhdGUgdG8gZW51bWVyYXRpb24uXG4gMjEyOlx0XHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxuIDIxMzpcdFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXG4gMjE0Olx0XG4gMjE1Olx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiAyMTY6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDsuXG4gMjE3Olx0XG4gMjE4Olx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtGdW5jdGlvbiBGaWxlc3lzdGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTQ5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbiBzdHVmZi4gVGhlIHNwZWNpZmljIEtjb25maWcgZmlsZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpcyBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4gUmlnaHQsIGxldCYjMzk7cyB0cmFjZSBob3cgdGhpcyBgbGVnYWN5L0tjb25maWdgIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gcGljdHVyZS4gVG8gZG8gdGhhdCwgSSYjMzk7bGwgbmVlZCB0byBoZWFkIHVwIGEgbGV2ZWwgYW5kIGV4YW1pbmUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gVGhhdCBzaG91bGQgc2hvdyBtZSB0aGUgaW5jbHVzaW9uIG1lY2hhbmlzbSwgaG93IHRoZSBzeXN0ZW0ga25vd3MgdG8gZXZlbiAqbG9vayogYXQgdGhlIGBsZWdhY3lgIHBvcnRpb24gaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXBlbmRlbmN5IGFuZCBidWlsZCBydWxlcyBzaG91bGQgYmUgZGVmaW5lZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsZWdhY3kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTA4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTA5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUxMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NzMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIGl0LCBhbmQgdGFpbG9yZWQgZm9yIHNvbWVvbmUgd2hvIGtub3dzIHRoZWlyIHdheSBhcm91bmQga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKk5hdmlnYXRpbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbG9va2luZyBhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQsIGZyb20gd2hhdCBJJiMzOTttIHVuZGVyc3RhbmRpbmcsIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUgaXMgYmVpbmcgaW5jbHVkZWQgc29tZXdoZXJlIHdpdGhpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIG9mIGNvdXJzZTsgY29uc29saWRhdGluZyByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGVmZmljaWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgbGV0JiMzOTtzIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSBgVVNCX0dBREdFVGAgc3ltYm9sLiYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5IGlzIGNvbnRyb2xsZWQgaW4gdGhlIGNvbmZpZy4gS25vd2luZyB0aGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgaXMgdGhlIGxpa2VseSBzb3VyY2UsIGl0IG1ha2VzIHNlbnNlIHRvIGdvIHN0cmFpZ2h0IHRoZXJlLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB3aGF0IG90aGVyIGNvbmZpZyBvcHRpb25zIGl0IG1pZ2h0IGRlcGVuZCBvbi4gRGlnZ2luZyBkZWVwZXIgaW50byB0aGUgZ3V0cyBvZiB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaXMgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgbWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTYyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjg4OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXHRpbnQgXCYjMzQ7TWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTE3LVx0aW50IFwmIzM0O051bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIENvbnNpZGVyYXRpb25zIGZvciBVU0IgR2FkZ2V0IFRlc3RpbmcqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBzZXR0aW5nIHVwIGEgVVNCIGdhZGdldCwgd2hpY2ggbmF0dXJhbGx5IG1lYW5zIEkmIzM5O2xsIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3csIHRvIG1ha2UgdGhpcyBlYXNpZXIgaW4gYSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50LCBJJiMzOTttIGFsbW9zdCBjZXJ0YWlubHkgZ29pbmcgdG8gbmVlZCBgVVNCX0RVTU1ZX0hDRGAuIEkmIzM5O3ZlIHVzZWQgdGhhdCBiZWZvcmUsIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBpbmRpc3BlbnNhYmxlIGZvciB0aGlzIHNvcnQgb2YgdGhpbmcuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBVU0JfRFVNTVlfSENEYCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciBhbmQgdGhhdCBldmVyeXRoaW5nIGlzIGluIG9yZGVyLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBpdCBhbmQgbWFrZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0RVTU1ZX0hDRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXHR0cmlzdGF0ZSBcJiMzNDtEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTAwMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgRHVtbXkgSENEKioKCkFscmlnaHQsIHNvIGBVU0JfRFVNTVlfSENEYCBsb29rcyBsaWtlIGl0JiMzOTtzIHdvcnRoIGVuYWJsaW5nLiBJJiMzOTttIHRoaW5raW5nIEkgY2FuIGxldmVyYWdlIGl0IGZvciBhIHNwZWNpZmljIHRlc3Qgc2V0dXAsIHBlcmhhcHMgZm9yIHNpbXVsYXRpbmcgVVNCIHRyYWZmaWMgd2l0aG91dCByZWFsIGhhcmR3YXJlLiBOb3csIGJlZm9yZSBJIGp1bXAgaW4gYW5kIHN0YXJ0IGNvbmZpZ3VyaW5nLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgYWxsIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgdGhpcyBkcml2ZXIgYW5kIHRoYXQgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIG1pZ2h0IGJlY29tZSBhY3RpdmUgYXMgYSByZXN1bHQuIEtub3dpbmcgbXkgZGVwZW5kZW5jaWVzIHNhdmVzIGEgbG90IG9mIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyB0aW1lIHRvIG1hcCBpdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjU6XHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxuIDQyNjpcdCNcbiA0Mjc6XHRcbiA0Mjg6XHRjb25maWcgVVNCX0RVTU1ZX0hDRFxuIDQyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiA0MzA6XHRcdGRlcGVuZHMgb24gVVNCPXkgfHwgKFVTQj1tIFx1MDAyNlx1MDAyNiBVU0JfR0FER0VUPW0pXG4gNDMxOlx0XHRoZWxwXG4gNDMyOlx0XHQgIFRoaXMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBlbXVsYXRlcyBVU0IsIGxvb3BpbmcgYWxsIGRhdGEgdHJhbnNmZXJcbiA0MzM6XHRcdCAgcmVxdWVzdHMgYmFjayB0byBhIFVTQiBcJiMzNDtnYWRnZXQgZHJpdmVyXCYjMzQ7IGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxuIDQzNDpcdFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXG4gNDM1Olx0XHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xuIDQzNjpcdFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXG4gNDM3Olx0XG4gNDM4Olx0XHQgIFRoaXMgbWF5IGhlbHAgaW4gc29tZSBzdGFnZXMgb2YgY3JlYXRpbmcgYSBkcml2ZXIgdG8gZW1iZWQgaW4gYVxuIDQzOTpcdFx0ICBMaW51eCBkZXZpY2UsIHNpbmNlIGl0IGxldHMgeW91IGRlYnVnIHNldmVyYWwgcGFydHMgb2YgdGhlIGdhZGdldFxuIDQ0MDpcdFx0ICBkcml2ZXIgd2l0aG91dCBpdHMgaGFyZHdhcmUgb3IgZHJpdmVycyBiZWluZyBpbnZvbHZlZC5cbiA0NDE6XHRcbiA0NDI6XHRcdCAgU2luY2Ugc3VjaCBhIGdhZGdldCBzaWRlIGRyaXZlciBuZWVkcyB0byBpbnRlcm9wZXJhdGUgd2l0aCBhIGhvc3RcbiA0NDM6XHRcdCAgc2lkZSBMaW51eC1VU0IgZGV2aWNlIGRyaXZlciwgdGhpcyBtYXkgaGVscCB0byBkZWJ1ZyBib3RoIHNpZGVzXG4gNDQ0Olx0XHQgIG9mIGEgVVNCIHByb3RvY29sIHN0YWNrLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBHYWRnZXRGUyBCaW5kKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQmAuIE1ha2VzIHNlbnNlLiBJJiMzOTtsbCBpbmNsdWRlIGBVU0JfR0FER0VURlNgLCBgVVNCX0dBREdFVGAsIGFuZCBgVVNCX0RVTU1ZX0hDRGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIAoKTm93LCB0aGUgcGF0Y2ggdG91Y2hlcyBgZ2FkZ2V0ZnNfYmluZGAsIHdoaWNoIGlzLCBJIGJlbGlldmUsIGRlY2xhcmVkIHN0YXRpYy4gSG1tLCBjYW4gd2UgZnV6eiB0aGlzPyBMZXQgbWUgdGhpbmsuLi4geWVzLCB0aGlzIGxvb2tzIGZ1bmN0aW9uYWxseSBmdXp6ZXItYWJsZS4gRXhjZWxsZW50ISBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZvY3VzIHN5bWJvbHMsIEkmIzM5O2xsIHNwZWNpZnkgYGdhZGdldGZzX2JpbmRgLiAKClRoZSByZWxldmFudCBFbmFibGVDb25maWdzIGFyZSBnb2luZyB0byBiZSBgVVNCX0dBREdFVEZTYCwgYFVTQl9HQURHRVRgLCBhbmQgYFVTQl9EVU1NWV9IQ0RgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGdhZGdldGZzX2JpbmRgIGlzIHRoZSBvbmx5IHNpZ25pZmljYW50IGZ1bmN0aW9uIGltcGFjdGVkIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2FkZ2V0ZnNfYmluZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTY2Nj1zdGF0aWMgc3RydWN0IGRldl9kYXRhXHRcdCp0aGVfZGV2aWNlO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTY2ODpzdGF0aWMgaW50IGdhZGdldGZzX2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVx0XHRzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTc1Mj1zdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyIGdhZGdldGZzX2RyaXZlciA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUzLVx0LmZ1bmN0aW9uXHQ9IChjaGFyICopIGRyaXZlcl9kZXNjLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE3NTQ6XHQuYmluZFx0XHQ9IGdhZGdldGZzX2JpbmQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cdC51bmJpbmRcdFx0PSBnYWRnZXRmc191bmJpbmQsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE4MDc9ZGV2X2NvbmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODgyOlx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4My1cdHNwaW5fdW5sb2NrX2lycSAoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjM3MQoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHYWRnZXRmcyBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB0aGlzIHBhdGNoIHplcm9lcyBpbiBvbiBpcyBgZ2FkZ2V0ZnNfYmluZGAuIFRoYXQmIzM5O3MgdGhlIG9uZS4gSSYjMzk7bSBnb2luZyB0byBzZXQgbXkgYEZvY3VzU3ltYm9sc2AgYXJyYXkgdG8gaW5jbHVkZSBqdXN0IGBbJiMzNDtnYWRnZXRmc19iaW5kJiMzNDtdYC4KCk5vdywgbGV0JiMzOTtzIHJlY2FwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMuIFRoZSBwYXRjaCBpcyBhbGwgYWJvdXQgdHdlYWtpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYGdhZGdldGZzX2JpbmRgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLiBJdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgaXNzdWUgYnkgZGlyZWN0bHkgZnJlZWluZyB0aGUgcmVxdWVzdCBhbmQgY2xlYW5pbmcgdXAgcG9pbnRlcnMsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYSBjYWxsIHRvIGBnYWRnZXRmc191bmJpbmRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHdpdGhpbiBhIGRyaXZlciB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSwgd2hldGhlciB0aHJvdWdoIHRoZSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MuCgpCYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTt2ZSBzZWVuLCBpdCBzZWVtcyB0byBkZXBlbmQgb24gYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYCBiZWluZyBlbmFibGVkLgoKQWxyaWdodCwgd2l0aCBhbGwgdGhhdCBjb25maXJtZWQsIEkmIzM5O20gZ29pbmcgdG8gZ28gYWhlYWQgYW5kIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VURlMmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VURlMmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MzMuNzUzOTI5NDk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNzM5MTcxNzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRGU1wiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTozMy43NTM5MzUyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDY5MjU0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MjAwZDliYjFhNGRmZTlhNTg0ZjBlZGQyMjBkZTE2NmVjNjBiNDU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDY6MzU6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXFxuaW5kZXggZDg3YThhYjUxNTEwNy4uMzY1ZjlhYjRkMGQyYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcXG5AQCAtMTcwMCw3ICsxNzAwLDEzIEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGVub21lbTpcXG4tXFx0Z2FkZ2V0ZnNfdW5iaW5kIChnYWRnZXQpO1xcbitcXHRpZiAoZGV2LVxcdTAwM2VyZXEpIHtcXG4rXFx0XFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtXFx1MDAzZWVwMCwgZGV2LVxcdTAwM2VyZXEpO1xcbitcXHRcXHRkZXYtXFx1MDAzZXJlcSA9IE5VTEw7XFxuK1xcdH1cXG4rXFx0Z2FkZ2V0LVxcdTAwM2VlcDAtXFx1MDAzZWRyaXZlcl9kYXRhID0gTlVMTDtcXG4rXFx0ZGV2LVxcdTAwM2VnYWRnZXQgPSBOVUxMO1xcbitcXHRzZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0LCBOVUxMKTtcXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjM0LjkwMTcxNzQxOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMjU5MTM3MTA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VURlNcIixcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnYWRnZXRmc19iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYGdhZGdldGZzX2JpbmRgIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgaXNzdWUgYnkgbWFudWFsbHkgZnJlZWluZyB0aGUgcmVxdWVzdCBhbmQgY2xlYXJpbmcgcG9pbnRlcnMgaW5zdGVhZCBvZiBjYWxsaW5nIGBnYWRnZXRmc191bmJpbmRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgVVNCIGR1bW15IEhDRCBvciBvdGhlciBVRENzKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzIwMGQ5YmIxYTRkZmU5YTU4NGYwZWRkMjIwZGUxNjZlYzYwYjQ1N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDY6MzU6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbmluZGV4IGQ4N2E4YWI1MTUxMDcuLjM2NWY5YWI0ZDBkMmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xuQEAgLTE3MDAsNyArMTcwMCwxMyBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbiBcdHJldHVybiAwO1xuIFxuIGVub21lbTpcbi1cdGdhZGdldGZzX3VuYmluZCAoZ2FkZ2V0KTtcbitcdGlmIChkZXYtXHUwMDNlcmVxKSB7XG4rXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4rXHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuK1x0fVxuK1x0Z2FkZ2V0LVx1MDAzZWVwMC1cdTAwM2Vkcml2ZXJfZGF0YSA9IE5VTEw7XG4rXHRkZXYtXHUwMDNlZ2FkZ2V0ID0gTlVMTDtcbitcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xuIFx0cmV0dXJuIC1FTk9NRU07XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MzQuOTAxNzE4ODI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMxOTYwMTI3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyBhIFVTQiBHYWRnZXRmcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHBsYXlpbmcgd2l0aCBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBlcnJvciBoYW5kbGluZyBpbiBgZ2FkZ2V0ZnNfYmluZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkludGVyZXN0aW5nLCB0aGV5J3JlIG5vdCB1c2luZyB0aGUgc3RhbmRhcmQgYGdhZGdldGZzX3VuYmluZChnYWRnZXQpYCBpbiB0aGUgZXJyb3IgcGF0aC5cIiBJbnN0ZWFkLCB0aGV5J3ZlIG9wdGVkIGZvciBhIG1vcmUgZGlyZWN0IGFwcHJvYWNoOiBmcmVlaW5nIHRoZSByZXF1ZXN0IG1hbnVhbGx5IGFuZCBjbGVhcmluZyBwb2ludGVycy5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiBraWNrcyBpbjogVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSd2ZSBieXBhc3NlZCB0aGUgdHlwaWNhbCB1bmJpbmRpbmcgcHJvY2Vzcy4gSXMgdGhlcmUgYSBzcGVjaWZpYyByZWFzb24/IFBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IE9wdGltaXphdGlvbiBjb25jZXJucz8gV2hhdGV2ZXIgdGhlIG1vdGl2YXRpb24sIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvbnRleHQgaXMgd2FycmFudGVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBjb2RlIHN1cnJvdW5kaW5nIHRoZSBgZ2FkZ2V0ZnNfYmluZGAgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1hbnVhbCBtZW1vcnkgbWFuYWdlbWVudC4gSSdtIGtlZW4gdG8gZGlzc2VjdCB0aGlzIGNoYW5nZSB0byBncmFzcCBpdHMgaW1wYWN0IGFuZCBhc3Nlc3MgaXRzIGNvcnJlY3RuZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo0My4yMjEzMjMyMTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5MjA3ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfYmluZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXFx0LmZ1bmN0aW9uXFx0PSAoY2hhciAqKSBkcml2ZXJfZGVzYyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcXHQuYmluZFxcdFxcdD0gZ2FkZ2V0ZnNfYmluZCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cXHQudW5iaW5kXFx0XFx0PSBnYWRnZXRmc191bmJpbmQsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XFx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODMtXFx0c3Bpbl91bmxvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NDMuMjgyMjUwNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDA3NjEzMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBnYWRnZXRmc19iaW5kYCBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGdhZGdldGZzX2JpbmRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbid0IGp1c3QgYSByYW5kb20gZnVuY3Rpb247IGl0J3MgYSBrZXkgcGFydCBvZiB0aGUgZ2FkZ2V0ZnMgYmluZGluZyBwcm9jZXNzLiBXaGF0IGV4YWN0bHkgaXMgYmVpbmcgY2hhbmdlZCBoZXJlLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgVVNCIGRldmljZSBlbXVsYXRpb24/XG5cblRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZHJpbGwgZG93biBvbiBpcyB0aGUgY29uZmlndXJhdGlvbi4gKldoeSogaXMgdGhpcyBjb2RlIHBhdGggYmVpbmcgbW9kaWZpZWQ/IFdoYXQgY29uZmlnIG9wdGlvbnMsIGRldmljZSB0cmVlIHNldHRpbmdzLCBvciBidWlsZCBmbGFncyBhcmUgdHJpZ2dlcmluZyB0aGlzIGNvZGUgdG8gYmUgY29tcGlsZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMgYW5kIHVuZGVybHlpbmcgdXNlIGNhc2VzIHRoYXQgZGljdGF0ZSB3aGVuIGBnYWRnZXRmc19iaW5kYCBpcyBjYWxsZWQuIElzIGl0IGEgc3BlY2lmaWMgY29udHJvbGxlciB0eXBlLCBhIGNlcnRhaW4gZ2FkZ2V0IHNldHVwLCBvciBhIGZlYXR1cmUgZmxhZz8gQSBjaGFuZ2UgaGVyZSBjb3VsZCBpbXBhY3QgYSB3aWRlIHJhbmdlIG9mIGRldmljZXMgYW5kIGNvbmZpZ3VyYXRpb25zLCBhbmQgSSBuZWVkIHRvIGtub3cgd2hpY2ggb25lcy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgYnVpbGQgaXMgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo0Ny42ODk4NjU2ODNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwMDQxMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9HQURHRVRGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo0Ny43NDM4OTE2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzY1OTM4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlVTQl9HQURHRVRGUyBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biBhbmQgdmVyaWZ5IHRoZSBjdXJyZW50IGRlcGVuZGVuY2llcyBmb3IgYFVTQl9HQURHRVRGU2AuIEl0J3MgY3J1Y2lhbCwgYXMgYWx3YXlzLCB0byBlbnN1cmUgdGhhdCB0aGUgZm91bmRhdGlvbiBpcyBzb2xpZCBiZWZvcmUgSSBzdGFydCBidWlsZGluZyBhbnl0aGluZyBvbiB0b3Agb2YgaXQuIEknbSBpbWFnaW5pbmcgYSBjb21wbGV4IHdlYiBvZiBjb25maWd1cmF0aW9ucywgZHJpdmVycywgYW5kIHVuZGVybHlpbmcgaGFyZHdhcmUgYXNzdW1wdGlvbnMgaGVyZS4gVGhlIHBvdGVudGlhbCBmb3IgcmVncmVzc2lvbnMgb3IgdW5mb3Jlc2VlbiBjb25mbGljdHMgaXMgYWx3YXlzIHByZXNlbnQsIGVzcGVjaWFsbHkgaW4gYW4gYXJlYSBhcyB0aWdodGx5IGNvdXBsZWQgYXMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBJJ20gZ29pbmcgdG8gd2FudCB0byBtYWtlIHN1cmUgSSBrbm93ICpleGFjdGx5KiB3aGF0J3MgcmVxdWlyZWQsIGFueSBrbm93biBsaW1pdGF0aW9ucywgYW5kIGhvdyBhbnkgcmVjZW50IGtlcm5lbCBjaGFuZ2VzIG1pZ2h0IGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgd2VhayBwb2ludHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTIuMzIwNDg3MzgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MjA1ODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9HQURHRVRGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo1Mi4zNzU2OTg0OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM0MTUyNzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBVU0JfR0FER0VURlNgIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIGdldCBhIGZpcm0gZ3Jhc3Agb24gdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYFVTQl9HQURHRVRGU2AuIEkgY2FuJ3QganVzdCBhc3N1bWUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIE15IGludHVpdGlvbiBzYXlzIHRoZXJlJ3MgbGlrZWx5IGEgd2hvbGUgY2hhaW4gb2YgcmVsYXRlZCBrZXJuZWwgbW9kdWxlcyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCB0aGlzIHNldHRpbmcgdHJpZ2dlcnMgb3IgcmVxdWlyZXMuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgd2hhdCdzIHB1bGxlZCBpbiwgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBmb3IgdGhlIGJ1aWxkLCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHN1YnN5c3RlbXMuIEkgbmVlZCBhIGNsZWFyIHZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZ3JhcGguIE9ubHkgdGhlbiBjYW4gSSBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGNvdXJzZSBvZiBhY3Rpb24uIEkgY2FuJ3Qgb3BlcmF0ZSBvbiBhc3N1bXB0aW9uczsgSSBuZWVkIGRhdGEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo1NS41MDk4NTM4MDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXHQgIG9mIHNldmVyYWwgZXRoZXJuZXQgZnJhbWVzIGludG8gb25lIFVTQiB0cmFuc2ZlciBhbmQgZGlmZmVyZW50XFxuIDIwMTpcXHRcXHQgIGFsaWdubWVudCBwb3NzaWJpbGl0aWVzLlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuIDIwNDpcXHRcXHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFxcXCJnX25jbVxcXCIuXFxuIDIwNTpcXHRcXG4gMjA2OlxcdGNvbmZpZyBVU0JfR0FER0VURlNcXG4gMjA3OlxcdFxcdHRyaXN0YXRlIFxcXCJHYWRnZXQgRmlsZXN5c3RlbVxcXCJcXG4gMjA4OlxcdFxcdGhlbHBcXG4gMjA5OlxcdFxcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBmaWxlc3lzdGVtIGJhc2VkIEFQSSB0aGF0IGxldHMgdXNlciBtb2RlXFxuIDIxMDpcXHRcXHQgIHByb2dyYW1zIGltcGxlbWVudCBhIHNpbmdsZS1jb25maWd1cmF0aW9uIFVTQiBkZXZpY2UsIGluY2x1ZGluZ1xcbiAyMTE6XFx0XFx0ICBlbmRwb2ludCBJL08gYW5kIGNvbnRyb2wgcmVxdWVzdHMgdGhhdCBkb24ndCByZWxhdGUgdG8gZW51bWVyYXRpb24uXFxuIDIxMjpcXHRcXHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxcbiAyMTM6XFx0XFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gMjE2OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdhZGdldGZzXFxcIi5cXG4gMjE3OlxcdFxcbiAyMTg6XFx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiRnVuY3Rpb24gRmlsZXN5c3RlbVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTUuNTA5OTI1Nzc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODg5OTQ3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoYXRldmVyIGl0IGlzLCBhbmQgSSBpbW1lZGlhdGVseSBrbm93IHRoYXQgaXRzIGF2YWlsYWJpbGl0eSBpcyBjaGFpbmVkIHRvIGBVU0JfR0FER0VUYC4gVGhhdCdzIGJlY2F1c2UgdGhlIEtjb25maWcgZmlsZSBmb3IgbGVnYWN5IGdhZGdldCBkcml2ZXJzLCBsb2NhdGVkIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgLCBpcyB0aGUgdXN1YWwgcGxhY2UgZm9yIHRoZXNlIHNvcnRzIG9mIGRlcGVuZGVuY2llcy4gSSd2ZSB3b3JrZWQgd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBsb25nIGVub3VnaCB0byBrbm93IHRoZSBsYXlvdXQgaW5zdGluY3RpdmVseS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBjaGVjayBmb3IgdGhlIG9wdGlvbnMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBvcGVuIHVwIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlYC4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGVsZW1lbnQsIHdoYXRldmVyIGl0IGlzLCBmaXRzIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBvYmplY3QgZmlsZXMgYXJlIGNvbnN0cnVjdGVkLCB3aGF0IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGlzIHVzZWQsIGFuZCBob3cgYFVTQl9HQURHRVRgIGFjdHVhbGx5IGluZmx1ZW5jZXMgdGhlIGluY2x1c2lvbiAob3IgZXhjbHVzaW9uKSBvZiBjb2RlLiBCYXNpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgY29uZmlndXJhdGlvbiwgdGhlIHNvdXJjZSBjb2RlLCBhbmQgdGhlIGZpbmFsIGNvbXBpbGVkIGJpbmFyeS4gU2VlaW5nIHRoZSBtYWtlZmlsZSB3aWxsIGdpdmUgbWUgdGhhdCBjb250ZXh0LiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGluIGEgbXVjaCBiZXR0ZXIgcG9zaXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBvcHRpb24gb24gdGhlIG92ZXJhbGwgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo1OS43OTg5MjM1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxMzE5MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlPTE0PWdfbWlkaS15XFx0XFx0XFx0Oj0gZ21pZGkub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU6MTU6Z2FkZ2V0ZnMteVxcdFxcdFxcdDo9IGlub2RlLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlLTE2LWdfbWFzc19zdG9yYWdlLXlcXHRcXHQ6PSBtYXNzX3N0b3JhZ2Uub1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfVVNCX0VUSClcXHRcXHQrPSBnX2V0aGVyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19VU0JfR0FER0VURlMpXFx0Kz0gZ2FkZ2V0ZnMub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX1VTQl9GVU5DVElPTkZTKVxcdCs9IGdfZmZzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTkuODU0MDU3OTY2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODYzNjY5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0RlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGl0ZW0gYXBwZWFycyB0byBiZSBgQ09ORklHX1VTQl9HQURHRVRGU2AuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIG1vZGlmaWNhdGlvbiBtYWRlIHRvIHRoZSBgZ2FkZ2V0ZnNfYmluZGAgZnVuY3Rpb24uIFRoYXQncyBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZywgXCJJcyB0aGlzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz9cIiBCZWNhdXNlIGxldCdzIGZhY2UgaXQsIGEgbG90IG9mIGRldmVsb3BtZW50IHRoZXNlIGRheXMgaGFwcGVucyB3aXRoaW4gVk1zLiBGb3J0dW5hdGVseSwgSSByZWNhbGwgdGhhdCBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgKmlzKiBlbXVsYXRlZCBpbiBzb21lIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gVGhpbmsgZHVtbXlfaGNkIGFuZCBzaW1pbGFyIGFic3RyYWN0aW9ucy4gU28gdGhhdCdzIGdvb2Q7IGl0J3MgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGFjcm9zcyBhIHdpZGVyIHJhbmdlIG9mIHNjZW5hcmlvcy5cblxuTmV4dCwgSSdtIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHByYWN0aWNhbCBpbXBhY3QuIEl0IHNlZW1zIHRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgd2F5IGVycm9yIGhhbmRsaW5nIHdvcmtzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIGJlLCB0aGF0IGNhbiBsZWFkIHRvIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgc3RhYmlsaXR5IGltcHJvdmVtZW50cy5cblxuTm93LCBsZXQgbWUgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbCBoZXJlOiBgZ2FkZ2V0ZnNfYmluZGAuIFdhaXQgYSBzZWNvbmTigKYgaXNuJ3QgdGhhdCBmdW5jdGlvbiAqc3RhdGljKj8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBMZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgdGhhdCdzIHRoZSBjYXNlLiBJdCdzIGNydWNpYWwsIGJlY2F1c2UgaWYgaXQncyBzdGF0aWMsIGl0J3Mgc2NvcGUgaXMgaW5jcmVkaWJseSBsaW1pdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjA0LjY0MDQyNzQ0M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzMzc5ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfYmluZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXFx0LmZ1bmN0aW9uXFx0PSAoY2hhciAqKSBkcml2ZXJfZGVzYyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcXHQuYmluZFxcdFxcdD0gZ2FkZ2V0ZnNfYmluZCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cXHQudW5iaW5kXFx0XFx0PSBnYWRnZXRmc191bmJpbmQsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XFx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODMtXFx0c3Bpbl91bmxvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6MDQuNjgyNzY5NTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwMTgxMTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBib2xkZWQgaGVhZGVyIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBgZ2FkZ2V0ZnNgIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5BbHJpZ2h0LCBzbyBgZ2FkZ2V0ZnNfYmluZGAgaXMgZGVmaW5pdGl2ZWx5IGEgc3RhdGljIGZ1bmN0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIEl0J3MgdXNlZCBhcyB0aGUgYC5iaW5kYCBtZW1iZXIgd2l0aGluIHRoZSBgZ2FkZ2V0ZnNfZHJpdmVyYCBzdHJ1Y3R1cmUuIE15IG5leHQgdGhvdWdodCBpcywgd2hlcmUgZXhhY3RseSBpcyB0aGF0IGBnYWRnZXRmc19kcml2ZXJgIHN0cnVjdHVyZSBnZXR0aW5nIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWw/IFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBkcml2ZXIgc3RydWN0dXJlIGl0c2VsZiB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIFVTQiBzdWJzeXN0ZW0uIEknbSBhZnRlciB0aGUgcmVnaXN0cmF0aW9uIHBvaW50LCB0aGF0J3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjoxMi4xODQ1ODQxNzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODY4NTkwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnYWRnZXRmc19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTgwPWVwMF9mYXN5bmMgKGludCBmLCBzdHJ1Y3QgZmlsZSAqZmQsIGludCBvbilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTg4OnN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTg5LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTE9ZGV2X3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTk3LVxcdGlmIChkZXYtXFx1MDAzZWdhZGdldF9yZWdpc3RlcmVkKSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExOTg6XFx0XFx0dXNiX2dhZGdldF91bnJlZ2lzdGVyX2RyaXZlciAoXFx1MDAyNmdhZGdldGZzX2RyaXZlcik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExOTktXFx0XFx0ZGV2LVxcdTAwM2VnYWRnZXRfcmVnaXN0ZXJlZCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MzI9Z2FkZ2V0ZnNfc3VzcGVuZCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzUyOnN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUzLVxcdC5mdW5jdGlvblxcdD0gKGNoYXIgKikgZHJpdmVyX2Rlc2MsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODQtXFx0aWYgKGRldi1cXHUwMDNlaHNfY29uZmlnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg1OlxcdFxcdGdhZGdldGZzX2RyaXZlci5tYXhfc3BlZWQgPSBVU0JfU1BFRURfSElHSDtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4Ni1cXHRlbHNlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODc6XFx0XFx0Z2FkZ2V0ZnNfZHJpdmVyLm1heF9zcGVlZCA9IFVTQl9TUEVFRF9GVUxMO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODg4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg5OlxcdHZhbHVlID0gdXNiX2dhZGdldF9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmdhZGdldGZzX2RyaXZlcik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4OTAtXFx0aWYgKHZhbHVlICE9IDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6MTIuNDQzMjc1NzY5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDI0NDcxNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiwgd2hhdGV2ZXIgaXQgaXMsIGlzIHJlZ2lzdGVyZWQsIHByb2JhYmx5IGFzIHBhcnQgb2YgdGhlIHN5c3RlbSBpbml0aWFsaXphdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgaXMgaW4gYGRldl9jb25maWdgLiBUaGF0J3MgdGhlIGtleTogYGRldl9jb25maWdgIGlzIHRoZSBkZXNpZ25hdGVkIHdyaXRlIGhhbmRsZXIgZm9yIHRoZSBkZXZpY2UgZmlsZS4gSXQgaGFuZGxlcyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gd3JpdGVzLiBSaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBkZXZfY29uZmlnYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgaGFuZGxlZCwgdGhlIGNvbnRleHQsIGFuZCBhbnkgYXNzb2NpYXRlZCBlcnJvciBoYW5kbGluZy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjoxNi41NDU3MjYxNTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMzMyMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldl9jb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01NS0gKlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo1NjogKiAtIEZpcnN0LCBkZXZfY29uZmlnKCkgaXMgY2FsbGVkIHdoZW4gL2Rldi9nYWRnZXQvJENISVAgaXMgY29uZmlndXJlZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01Ny0gKiAgIChieSB3cml0aW5nIGNvbmZpZ3VyYXRpb24gYW5kIGRldmljZSBkZXNjcmlwdG9ycykuICBBZnRlcndhcmRzIGl0XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNj1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODA3OmRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk0MC1cXHQucmVhZCA9XFx0XFx0ZXAwX3JlYWQsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NDE6XFx0LndyaXRlID1cXHRkZXZfY29uZmlnLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTQyLVxcdC5mYXN5bmMgPVxcdGVwMF9mYXN5bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjE2LjYzOTA2NzU3OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjEyMjUwOTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR2FkZ2V0RlMgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBkZXZfY29uZmlnYCBpcyB0aGUgY3JpdGljYWwgd3JpdGUgaGFuZGxlciBmb3IgYGVwMF9vcGVyYXRpb25zYC4gQnV0IGlzIGBkZXZfY29uZmlnYCBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gVGhhdCBsaW1pdHMgbXkgaW5pdGlhbCB0YXJnZXQuIEFuZCB3aGF0IGFib3V0IGBlcDBfb3BlcmF0aW9uc2A/IFRoYXQgZ2V0cyB1c2VkIHdoZW4gd2Ugb3BlbiB0aGUgZ2FkZ2V0ZnMgZGV2aWNlLCB3aGljaCBpc24ndCB0aGUgbW9zdCBkeW5hbWljIHBvaW50IG9mIGludGVyYWN0aW9uLlxuXG5JIG5lZWQgdG8gZmluZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdG8gZm9jdXMgb24gZm9yIGRlZXBlciBpbnNwZWN0aW9uLiBMZXQgbWUgdGhpbmsuLi4gQWghIGBnYWRnZXRmc19iaW5kYCDigJMgdGhhdCdzIGNhbGxlZCBieSB0aGUgVVNCIGdhZGdldCBjb3JlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IHdoZW4gYSBkcml2ZXIgcmVnaXN0ZXJzLiBTbyB0aGUga2V5IGVudHJ5IHBvaW50cyBhcmUgZ29pbmcgdG8gYmUgYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCBvciBgdXNiX2dhZGdldF9wcm9iZV9kcml2ZXJgLiBJIGtub3cgSSBjYW4gZmluZCB0aGlzIGNvcmUgZnVuY3Rpb24gaW4gdGhlIGxpbnV4IGtlcm5lbCBzb3VyY2UuXG5cbkJ1dCBJIHJlYWxseSB3YW50IHRvIGZvY3VzIHNwZWNpZmljYWxseSBvbiB0aGUgZ2FkZ2V0ZnMgY29tcG9uZW50LiBMZXQncyBzZWUuLi4gSXMgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBpcyBhY2Nlc3NpYmxlIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYD8gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiB0aGlzIHNlYXJjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3OSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjoyMS44NTEzMjEzMTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MjkwMDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz01Nzk9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTgwOmVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTU4MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NjM4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjYzOTplcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02NDAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMjA9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGdhZGdldGZzX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNS19O1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMTI2Ok1PRFVMRV9BTElBU19GUyhcXFwiZ2FkZ2V0ZnNcXFwiKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6MjEuOTQ1NjE2Mzk5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MjAwMzM5NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBFbnRyeSBQb2ludHMqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IHRoaXMgcGllY2Ugb2YgY29kZSAqYmVnaW5zKiBpdHMgZXhlY3V0aW9uIG9yIGhvdyBpdCdzIGRlc2lnbmVkIHRvIGJlIHVzZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cy4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlIGNvZGUgZm9yIHR3byB0aGluZ3M6IEZpcnN0LCBhbnkgY2xlYXJseSBkZWZpbmVkICpleHBvcnRlZCBmdW5jdGlvbnMqIOKAkyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gVGhlc2UgYXJlIG15IHByaW1lIHN1c3BlY3RzIGZvciB1c2VyLWZhY2luZyBmdW5jdGlvbmFsaXR5IG9yIGNvcmUgb3BlcmF0aW9ucy4gU2Vjb25kLCBJJ2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgYSAqbW9kdWxlIGluaXRpYWxpemF0aW9uKiByb3V0aW5lLCBwZXJoYXBzIHNvbWV0aGluZyB0aGF0IHNldHMgdXAgaW50ZXJuYWwgc3RhdGUgb3IgcmVnaXN0ZXJzIGNhbGxiYWNrcy4gT2Z0ZW4gYSBtb2R1bGUgd2lsbCBoYXZlIHNvbWUgc29ydCBvZiBpbml0aWFsaXplci4gVGhlc2UgdHlwZXMgb2YgZnVuY3Rpb25zIGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgbW9kdWxlIGludGVncmF0ZXMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIGdldCBhIHF1aWNrIG1hcCBvZiB0aGUgY29kZSdzIGJvdW5kYXJpZXMgYW5kIGluaXRpYWwgc2V0dXAgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBtb3JlIGdyYW51bGFyIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MDIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjozOC4xNDU5NTg1NDNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTU4NzYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzA9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTM5LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0MDptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjM4LjYzNzU1NjYxOFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY0MzczNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgYGlub2RlLmNgIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgTGVnYWN5IFVTQiBHYWRnZXQgSW5vZGUgT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgemVyb2luZyBpbiBvbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gVGhhdCB0ZWxscyBtZSByaWdodCBhd2F5IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgbGVnYWN5IFVTQiBnYWRnZXQgaW5mcmFzdHJ1Y3R1cmUsIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZpbGUgc3lzdGVtLiBJbiBvdGhlciB3b3JkcywgaG93IHRoZSBMaW51eCBrZXJuZWwgcHJlc2VudHMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IGFzIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQuIFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGFueSBVU0IgZ2FkZ2V0LCBhcyBpdCdzIHRoZSBpbnRlcmZhY2UgdGhhdCB1c2Vyc3BhY2UgcHJvZ3JhbXMgdXNlIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgZGV2aWNlLlxuXG5JJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgc2V0IHVwLiBXaGF0IGFyZSB0aGUga2V5IGBpbm9kZWAgb3BlcmF0aW9ucyBkZWZpbmVkIGhlcmU/IGBjcmVhdGVgLCBgb3BlbmAsIGByZWxlYXNlYCwgYHJlYWRgLCBgd3JpdGVgLCBgZ2V0YXR0cmAsIGBzZXRhdHRyYCwgZXRjLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGV2aWNlLXNwZWNpZmljIGRhdGEgYW5kIGZ1bmN0aW9ucyBhcmUgYm91bmQgdG8gYSBmaWxlLXN5c3RlbSBpbnRlcmZhY2UuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkLCBhbmQgaG93IGlzIHNlY3VyaXR5IGNvbnNpZGVyZWQ/XG5cbkFyZSB0aGV5IGhhbmRsaW5nIHRoZSBkZXZpY2Utc3BlY2lmaWMgcmVxdWVzdHMsIG9yIGFyZSB0aGVzZSBqdXN0IHdyYXBwZXJzLCBkZWZlcnJpbmcgdG8gb3RoZXIgVVNCIGdhZGdldCBkcml2ZXJzPyBIb3cgaXMgc3RhdGUgbWFuYWdlZD8gSG93IGlzIGNvbmN1cnJlbmN5IGhhbmRsZWQsIGNvbnNpZGVyaW5nIHRoYXQgbXVsdGlwbGUgdXNlcnNwYWNlIHByb2dyYW1zIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBnYWRnZXQgc2ltdWx0YW5lb3VzbHk/IEFyZSB0aGVyZSByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgbHVya2luZyBpbiB0aGlzIGNvZGU/IFRoaXMgaXMgd2hlcmUgdGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLiBXaGF0IGVycm9yIGhhbmRsaW5nIGlzIHRoZXJlLCBhbmQgaG93IHJvYnVzdCBpcyBpdD9cblxuVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gZnVsbHkgZ3Jhc3AgdGhlIGxpZmVjeWNsZSBvZiBob3cgYSB1c2VyLWxldmVsIHByb2dyYW0gaW50ZXJhY3RzIHdpdGggdGhlIFVTQiBnYWRnZXQgZGV2aWNlLCBmcm9tIGZpbGUgb3BlbmluZyB0byBkYXRhIHRyYW5zZmVyLCBhbmQgaG93IHRoYXQgdHJhbnNsYXRlcyB0byB0aGUgaGFyZHdhcmUuIFRoYXQncyB0aGUgY29yZSBvZiBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg2MywiT3V0cHV0VG9rZW5zIjo3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjQzLjIwMTkzMzAxMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM4MTA0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBbYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxPU1PRFVMRV9MSUNFTlNFIChcXFwiR1BMXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MzpzdGF0aWMgaW50IGVwX29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04NC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0zODE9ZXBfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQwMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NDAyOnN0YXRpYyBsb25nIGVwX2lvY3RsKHN0cnVjdCBmaWxlICpmZCwgdW5zaWduZWQgY29kZSwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDAzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz00MzY9c3RydWN0IGtpb2NiX3ByaXYge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NDQ4OnN0YXRpYyBpbnQgZXBfYWlvX2NhbmNlbChzdHJ1Y3Qga2lvY2IgKmlvY2IpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDY2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0Njc6c3RhdGljIHZvaWQgZXBfdXNlcl9jb3B5X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ2OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0ODg6c3RhdGljIHZvaWQgZXBfYWlvX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDg5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01MjYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjUyNzpzdGF0aWMgc3NpemVfdCBlcF9haW8oc3RydWN0IGtpb2NiICppb2NiLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01MjgtXFx0XFx0ICAgICAgc3RydWN0IGtpb2NiX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTgwPWVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjM1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2MzY6c3RhdGljIHNzaXplX3QgZXBfY29uZmlnKHN0cnVjdCBlcF9kYXRhICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjM3LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc5MzpzdGF0aWMgaW50IGlzX3ZhbGlkX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3OTQtXFx0XFx0dW5zaWduZWQgaW50IHRvdGFsKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMjE9Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwODgtLyogXFxcIm1vdW50IC10IGdhZGdldGZzIHBhdGggL2Rldi9nYWRnZXRcXFwiIGVuZHMgdXAgaGVyZSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDg5OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDkwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGdhZGdldGZzX2NvbnRleHRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwOTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwOTg6c3RhdGljIGludCBnYWRnZXRmc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDk5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6NDMuMjU1NzQ4OTc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzAyMjQ2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBmb3IgTm9uLVN0YXRpYyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBNeSBpbW1lZGlhdGUgZ29hbCBoZXJlIGlzIHRvIGlkZW50aWZ5IGFuZCB1bmRlcnN0YW5kIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBmaWxlLiBUaGUgXCJsZWdhY3lcIiBkZXNpZ25hdGlvbiB0ZWxscyBtZSB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIG9sZGVyIFVTQiBnYWRnZXQgaW1wbGVtZW50YXRpb24gY29kZSwgd2hpY2ggYWx3YXlzIG1ha2VzIG1lIGEgbGl0dGxlIGNhdXRpb3VzIOKAkyBleHBlY3RpbmcgcG9zc2libHkgbGVzcyBtb2R1bGFyIGRlc2lnbiBhbmQgcGVyaGFwcyBtb3JlIGdsb2JhbCBzdGF0ZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55dGhpbmcgdGhhdCBpc24ndCBkZWNsYXJlZCBgc3RhdGljYC4gTm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlLCBieSBkZWZpbml0aW9uLCB2aXNpYmxlIG91dHNpZGUgdGhlIGZpbGUgc2NvcGUuIEknbGwgbmVlZCB0byBhc3Nlc3MgaG93IHRoZXNlIGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgdXRpbGl6ZWQsIHRoaW5raW5nIHBhcnRpY3VsYXJseSBhYm91dCB0aGUgcG90ZW50aWFsIGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMgYW5kIHRoZWlyIGltcGxpY2F0aW9ucyBvbiB0aGUgZHJpdmVyJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gQXJlIHRoZXkgcGFydCBvZiBhIGxhcmdlciwgd2VsbC1kZWZpbmVkIEFQSSwgb3IgZG8gdGhleSBmZWVsIGEgYml0IGFkLWhvYz8gQW5kIG9mIGNvdXJzZSwgSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBvYnZpb3VzIGlzc3VlczogcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgaW5jb3JyZWN0IGxvY2tpbmcsIG9yIGV2ZW4ganVzdCBpbmVmZmljaWVudCBjb2RlIGRlc2lnbiDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NzIsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjo0OC40MjU5Nzc3MDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNDQ1NDQ2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiAqXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03Nz1zdGF0aWMgY29uc3QgY2hhciBzaG9ydG5hbWUgW10gPSBcXFwiZ2FkZ2V0ZnNcXFwiO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6Nzk6TU9EVUxFX0RFU0NSSVBUSU9OIChEUklWRVJfREVTQyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgwOk1PRFVMRV9BVVRIT1IgKFxcXCJEYXZpZCBCcm93bmVsbFxcXCIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTpNT0RVTEVfTElDRU5TRSAoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04Mi1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yOTU9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyOTY6Z2V0X3JlYWR5X2VwICh1bnNpZ25lZCBmX2ZsYWdzLCBzdHJ1Y3QgZXBfZGF0YSAqZXBkYXRhLCBib29sIGlzX3dyaXRlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yOTcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTMzNT1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozMzY6ZXBfaW8gKHN0cnVjdCBlcF9kYXRhICplcGRhdGEsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgbGVuKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0zMzcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MD1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjM4MTplcF9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTc5PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjU4MDplcF9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01ODEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTYzOD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2Mzk6ZXBfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjQwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03MjU9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NzI2OmVwX2NvbmZpZyAoc3RydWN0IGVwX2RhdGEgKmRhdGEsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzI3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz04MTc9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTg6ZXBfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04MTkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTkxMj1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo5MTM6ZXAwX3JlYWQgKHN0cnVjdCBmaWxlICpmZCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTkxNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTA4Mj1zdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRmc19ldmVudCAqXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEwODM6bmV4dF9ldmVudCAoc3RydWN0IGRldl9kYXRhICpkZXYsIGVudW0gdXNiX2dhZGdldGZzX2V2ZW50X3R5cGUgdHlwZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTA4NC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTEyND1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTI1OmVwMF93cml0ZSAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTEyNi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTE3OT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExODA6ZXAwX2Zhc3luYyAoaW50IGYsIHN0cnVjdCBmaWxlICpmZCwgaW50IG9uKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTgxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTkwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTE5MTpkZXZfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMjE5PXN0YXRpYyBfX3BvbGxfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMjIwOmVwMF9wb2xsIChzdHJ1Y3QgZmlsZSAqZmQsIHBvbGxfdGFibGUgKndhaXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEzMDY9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMzA3OmNvbmZpZ19idWYgKHN0cnVjdCBkZXZfZGF0YSAqZGV2LCB1OCB0eXBlLCB1bnNpZ25lZCBpbmRleClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTMwOC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTMzMj1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEzMzM6Z2FkZ2V0ZnNfc2V0dXAgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsIGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEzMzQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2Mzk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTY0MDpnYWRnZXRmc191bmJpbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NDEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MTM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTcxNDpnYWRnZXRmc19kaXNjb25uZWN0IChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzMxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE3MzI6Z2FkZ2V0ZnNfc3VzcGVuZCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTczMy17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNj1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODA3OmRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5MTk9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTIwOmdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYzPXN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0X3Blcm0gPSBTX0lSVVNSIHwgU19JV1VTUjtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk2NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2NTptb2R1bGVfcGFyYW0gKGRlZmF1bHRfdWlkLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2Njptb2R1bGVfcGFyYW0gKGRlZmF1bHRfZ2lkLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2Nzptb2R1bGVfcGFyYW0gKGRlZmF1bHRfcGVybSwgdWludCwgMDY0NCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjgtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTk3MD1zdGF0aWMgc3RydWN0IGlub2RlICpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk3MTpnYWRnZXRmc19tYWtlX2lub2RlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTcyLVxcdFxcdHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjAyMD1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwMjE6Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTA0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMDU6Z2FkZ2V0ZnNfa2lsbF9zYiAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEwNi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEyMD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZ2FkZ2V0ZnNfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI1LX07XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMjY6TU9EVUxFX0FMSUFTX0ZTKFxcXCJnYWRnZXRmc1xcXCIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzA9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTM5LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0MDptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxNDI9c3RhdGljIHZvaWQgX19leGl0IGdhZGdldGZzX2NsZWFudXAgKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0Ni19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxNDc6bW9kdWxlX2V4aXQgKGdhZGdldGZzX2NsZWFudXApO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjo0OC45NTA0MzY5NDlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM5OTg1NzEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXRGUyBEcml2ZXIncyBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AgYW5kIGltbWVkaWF0ZWx5IG5vdGljZSBhbGwgdGhlIGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQncyBhIGJpdCBvZiBhIHdyaW5rbGUuIEkgbmVlZCBhIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50LiBJbml0aWFsbHksIEkgdGhvdWdodCBJIG1pZ2h0IGhhdmUgdG8gZmFsbCBiYWNrIG9uIGB1c2JfZ2FkZ2V0X3JlZ2lzdGVyX2RyaXZlcmAsIGJ1dCB0aGF0J3MgYSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBub3Qgc3BlY2lmaWMgdG8gR2FkZ2V0RlMuXG5cbkFoYSEgYGdhZGdldGZzX2JpbmRgLiBUaGF0J3MgdGhlIG9uZSB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2ghIEJ1dCB3YWl0Li4uaXQncyBhbHNvIGBzdGF0aWNgLiBTaG9vdC4gSWYgbm90aGluZydzIG5vbi1zdGF0aWMsIEkgY2FuIGVpdGhlciBwcm92aWRlIG5vIEZvY3VzU3ltYm9scyBhdCBhbGwsIG9yIHBlcmhhcHMgcHJvdmlkZSBgdXNiX2dhZGdldF9yZWdpc3Rlcl9kcml2ZXJgIHdoaWNoIGlzIHRoZSB0b3AtbGV2ZWwuIE5vLCBpdCdzIGEgaG90IHBhdGgsIHNvIGEgYmFkIGNob2ljZS5cblxuVGhlbiBpdCBoaXRzIG1lOiAqZnVuY3Rpb24gcG9pbnRlcnMqLiBgZ2FkZ2V0ZnNfYmluZGAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIChgLmJpbmQgPSBnYWRnZXRmc19iaW5kYCkuIFRoYXQgbWVhbnMgaXQgY2Fubm90IGJlIGlubGluZWQsIGl0IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBhbmQgdGhlcmVmb3JlIGl0ICppcyogYSB2YWxpZCBjaG9pY2UuIFRoYXQncyBleGFjdGx5IHdoYXQgSSdtIGxvb2tpbmcgZm9yLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBjaGVja2VkIHRoZSBkaWZmIGFnYWluLCBhbmQsIHllcywgYGdhZGdldGZzX2JpbmRgIGlzIHRoZSAqb25seSogZnVuY3Rpb24gbW9kaWZpZWQuXG5cblRoZSBjb25maWcgdG8gZW5hYmxlIHRoZSBHYWRnZXRGUyBpcyBgVVNCX0dBREdFVEZTYCwgZWFzeSBlbm91Z2guXG5cbkFscmlnaHQsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBzdXJlLi4uIExldCdzIGNoZWNrIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI5OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjo1Ny4zNTAyOTYwNDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXHQgIG9mIHNldmVyYWwgZXRoZXJuZXQgZnJhbWVzIGludG8gb25lIFVTQiB0cmFuc2ZlciBhbmQgZGlmZmVyZW50XFxuIDIwMTpcXHRcXHQgIGFsaWdubWVudCBwb3NzaWJpbGl0aWVzLlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuIDIwNDpcXHRcXHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFxcXCJnX25jbVxcXCIuXFxuIDIwNTpcXHRcXG4gMjA2OlxcdGNvbmZpZyBVU0JfR0FER0VURlNcXG4gMjA3OlxcdFxcdHRyaXN0YXRlIFxcXCJHYWRnZXQgRmlsZXN5c3RlbVxcXCJcXG4gMjA4OlxcdFxcdGhlbHBcXG4gMjA5OlxcdFxcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBmaWxlc3lzdGVtIGJhc2VkIEFQSSB0aGF0IGxldHMgdXNlciBtb2RlXFxuIDIxMDpcXHRcXHQgIHByb2dyYW1zIGltcGxlbWVudCBhIHNpbmdsZS1jb25maWd1cmF0aW9uIFVTQiBkZXZpY2UsIGluY2x1ZGluZ1xcbiAyMTE6XFx0XFx0ICBlbmRwb2ludCBJL08gYW5kIGNvbnRyb2wgcmVxdWVzdHMgdGhhdCBkb24ndCByZWxhdGUgdG8gZW51bWVyYXRpb24uXFxuIDIxMjpcXHRcXHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxcbiAyMTM6XFx0XFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gMjE2OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdhZGdldGZzXFxcIi5cXG4gMjE3OlxcdFxcbiAyMTg6XFx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiRnVuY3Rpb24gRmlsZXN5c3RlbVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6NTcuMzUwMzY4MzY3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTAyMjc3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBVU0IgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24gc3R1ZmYuIFRoZSBzcGVjaWZpYyBLY29uZmlnIGZpbGUgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXMgbmVzdGxlZCB3aXRoaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIFJpZ2h0LCBsZXQncyB0cmFjZSBob3cgdGhpcyBgbGVnYWN5L0tjb25maWdgIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gcGljdHVyZS4gVG8gZG8gdGhhdCwgSSdsbCBuZWVkIHRvIGhlYWQgdXAgYSBsZXZlbCBhbmQgZXhhbWluZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLiBUaGF0IHNob3VsZCBzaG93IG1lIHRoZSBpbmNsdXNpb24gbWVjaGFuaXNtLCBob3cgdGhlIHN5c3RlbSBrbm93cyB0byBldmVuICpsb29rKiBhdCB0aGUgYGxlZ2FjeWAgcG9ydGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMgaXMgd2hlcmUgdGhlIGRlcGVuZGVuY3kgYW5kIGJ1aWxkIHJ1bGVzIHNob3VsZCBiZSBkZWZpbmVkLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjA0LjM0MDU5Nzg4NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMzQyMDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxlZ2FjeS9LY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01MDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTA5OnNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUxMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MDQuNDkxOTQ1MDY1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTU4MTM2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSdtIHRoZSBvbmUgdGhpbmtpbmcgaXQsIGFuZCB0YWlsb3JlZCBmb3Igc29tZW9uZSB3aG8ga25vd3MgdGhlaXIgd2F5IGFyb3VuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIGxldCdzIHNlZS4gSSdtIGxvb2tpbmcgYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kLCBmcm9tIHdoYXQgSSdtIHVuZGVyc3RhbmRpbmcsIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUgaXMgYmVpbmcgaW5jbHVkZWQgc29tZXdoZXJlIHdpdGhpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgb2YgY291cnNlOyBjb25zb2xpZGF0aW5nIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgaXMgZWZmaWNpZW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBsZXQncyBwaW5wb2ludCB0aGUgZGVmaW5pdGlvbiBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvZiB0aGUgYFVTQl9HQURHRVRgIHN5bWJvbC5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFVTQiBHYWRnZXQgZnVuY3Rpb25hbGl0eSBpcyBjb250cm9sbGVkIGluIHRoZSBjb25maWcuIEtub3dpbmcgdGhhdCBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGlzIHRoZSBsaWtlbHkgc291cmNlLCBpdCBtYWtlcyBzZW5zZSB0byBnbyBzdHJhaWdodCB0aGVyZS4gTGV0J3Mgc2VlIGhvdyBpdCdzIGRlZmluZWQgYW5kIHdoYXQgb3RoZXIgY29uZmlnIG9wdGlvbnMgaXQgbWlnaHQgZGVwZW5kIG9uLiBEaWdnaW5nIGRlZXBlciBpbnRvIHRoZSBndXRzIG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSBpcyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODczLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MDguNTA3NzYyNjcyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg0MDA0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0dBREdFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo4ODpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyBpbiBkZWJ1Z2ZzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXFx0aW50IFxcXCJNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNy1cXHRpbnQgXFxcIk51bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjA4LjU2MjYwNzMxOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA3MDczNjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIENvbnNpZGVyYXRpb25zIGZvciBVU0IgR2FkZ2V0IFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgc2V0dGluZyB1cCBhIFVTQiBnYWRnZXQsIHdoaWNoIG5hdHVyYWxseSBtZWFucyBJJ2xsIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdywgdG8gbWFrZSB0aGlzIGVhc2llciBpbiBhIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnQsIEknbSBhbG1vc3QgY2VydGFpbmx5IGdvaW5nIHRvIG5lZWQgYFVTQl9EVU1NWV9IQ0RgLiBJJ3ZlIHVzZWQgdGhhdCBiZWZvcmUsIGFuZCBpdCdzIHByYWN0aWNhbGx5IGluZGlzcGVuc2FibGUgZm9yIHRoaXMgc29ydCBvZiB0aGluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGlzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyBmb3IgYW5kIHRoYXQgZXZlcnl0aGluZyBpcyBpbiBvcmRlci4gSSdsbCB0YWtlIGEgbG9vayBhdCBpdCBhbmQgbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjE5LjYzMzM0NzAwOVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA2Mjg2NTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRFVNTVlfSENEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXFxcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzoxOS45Mzk2NDE3MzdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxNjM5MDMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBEdW1teSBIQ0QqKlxuXG5BbHJpZ2h0LCBzbyBgVVNCX0RVTU1ZX0hDRGAgbG9va3MgbGlrZSBpdCdzIHdvcnRoIGVuYWJsaW5nLiBJJ20gdGhpbmtpbmcgSSBjYW4gbGV2ZXJhZ2UgaXQgZm9yIGEgc3BlY2lmaWMgdGVzdCBzZXR1cCwgcGVyaGFwcyBmb3Igc2ltdWxhdGluZyBVU0IgdHJhZmZpYyB3aXRob3V0IHJlYWwgaGFyZHdhcmUuIE5vdywgYmVmb3JlIEkganVtcCBpbiBhbmQgc3RhcnQgY29uZmlndXJpbmcsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgZHJpdmVyIGFuZCB0aGF0IEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIG1pZ2h0IGJlY29tZSBhY3RpdmUgYXMgYSByZXN1bHQuIEtub3dpbmcgbXkgZGVwZW5kZW5jaWVzIHNhdmVzIGEgbG90IG9mIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLiBJdCdzIHRpbWUgdG8gbWFwIGl0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwMDAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzoyNC4zNTYwMzQ3NzZaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQyNTpcXHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxcbiA0MjY6XFx0I1xcbiA0Mjc6XFx0XFxuIDQyODpcXHRjb25maWcgVVNCX0RVTU1ZX0hDRFxcbiA0Mjk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcbiA0MzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXFx1MDAyNlxcdTAwMjYgVVNCX0dBREdFVD1tKVxcbiA0MzE6XFx0XFx0aGVscFxcbiA0MzI6XFx0XFx0ICBUaGlzIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZW11bGF0ZXMgVVNCLCBsb29waW5nIGFsbCBkYXRhIHRyYW5zZmVyXFxuIDQzMzpcXHRcXHQgIHJlcXVlc3RzIGJhY2sgdG8gYSBVU0IgXFxcImdhZGdldCBkcml2ZXJcXFwiIGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxcbiA0MzQ6XFx0XFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXFxuIDQzNTpcXHRcXHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xcbiA0MzY6XFx0XFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXFxuIDQzNzpcXHRcXG4gNDM4OlxcdFxcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXFxuIDQzOTpcXHRcXHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XFxuIDQ0MDpcXHRcXHQgIGRyaXZlciB3aXRob3V0IGl0cyBoYXJkd2FyZSBvciBkcml2ZXJzIGJlaW5nIGludm9sdmVkLlxcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHQgIFNpbmNlIHN1Y2ggYSBnYWRnZXQgc2lkZSBkcml2ZXIgbmVlZHMgdG8gaW50ZXJvcGVyYXRlIHdpdGggYSBob3N0XFxuIDQ0MzpcXHRcXHQgIHNpZGUgTGludXgtVVNCIGRldmljZSBkcml2ZXIsIHRoaXMgbWF5IGhlbHAgdG8gZGVidWcgYm90aCBzaWRlc1xcbiA0NDQ6XFx0XFx0ICBvZiBhIFVTQiBwcm90b2NvbCBzdGFjay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MjQuMzU2MTI2NjA2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTY3NTE1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgR2FkZ2V0RlMgQmluZCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQmAuIE1ha2VzIHNlbnNlLiBJJ2xsIGluY2x1ZGUgYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gXG5cbk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYGdhZGdldGZzX2JpbmRgLCB3aGljaCBpcywgSSBiZWxpZXZlLCBkZWNsYXJlZCBzdGF0aWMuIEhtbSwgY2FuIHdlIGZ1enogdGhpcz8gTGV0IG1lIHRoaW5rLi4uIHllcywgdGhpcyBsb29rcyBmdW5jdGlvbmFsbHkgZnV6emVyLWFibGUuIEV4Y2VsbGVudCEgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgdGhlIGZvY3VzIHN5bWJvbHMsIEknbGwgc3BlY2lmeSBgZ2FkZ2V0ZnNfYmluZGAuIFxuXG5UaGUgcmVsZXZhbnQgRW5hYmxlQ29uZmlncyBhcmUgZ29pbmcgdG8gYmUgYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgZ2FkZ2V0ZnNfYmluZGAgaXMgdGhlIG9ubHkgc2lnbmlmaWNhbnQgZnVuY3Rpb24gaW1wYWN0ZWQgaW4gdGhpcyBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjI5LjQ3Mjg4MTE5NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgwMzk2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfYmluZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXFx0LmZ1bmN0aW9uXFx0PSAoY2hhciAqKSBkcml2ZXJfZGVzYyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcXHQuYmluZFxcdFxcdD0gZ2FkZ2V0ZnNfYmluZCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cXHQudW5iaW5kXFx0XFx0PSBnYWRnZXRmc191bmJpbmQsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XFx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODMtXFx0c3Bpbl91bmxvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MjkuNTQwOTI2NTlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwODQzNDA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdhZGdldGZzIFBhdGNoKipcblxuT2theSwgc28gdGhlIHByaW1hcnkgZnVuY3Rpb24gdGhpcyBwYXRjaCB6ZXJvZXMgaW4gb24gaXMgYGdhZGdldGZzX2JpbmRgLiBUaGF0J3MgdGhlIG9uZS4gSSdtIGdvaW5nIHRvIHNldCBteSBgRm9jdXNTeW1ib2xzYCBhcnJheSB0byBpbmNsdWRlIGp1c3QgYFtcImdhZGdldGZzX2JpbmRcIl1gLlxuXG5Ob3csIGxldCdzIHJlY2FwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMuIFRoZSBwYXRjaCBpcyBhbGwgYWJvdXQgdHdlYWtpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYGdhZGdldGZzX2JpbmRgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLiBJdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgaXNzdWUgYnkgZGlyZWN0bHkgZnJlZWluZyB0aGUgcmVxdWVzdCBhbmQgY2xlYW5pbmcgdXAgcG9pbnRlcnMsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYSBjYWxsIHRvIGBnYWRnZXRmc191bmJpbmRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHdpdGhpbiBhIGRyaXZlciB0aGF0J3MgZGVmaW5pdGVseSBhY2Nlc3NpYmxlLCB3aGV0aGVyIHRocm91Z2ggdGhlIFVTQiBkdW1teSBIQ0Qgb3Igb3RoZXIgVURDcy5cblxuQmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gSSd2ZSBzZWVuLCBpdCBzZWVtcyB0byBkZXBlbmQgb24gYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYCBiZWluZyBlbmFibGVkLlxuXG5BbHJpZ2h0LCB3aXRoIGFsbCB0aGF0IGNvbmZpcm1lZCwgSSdtIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM3MSwiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MzcuMzQ5MzYzMDlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM3MTk0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRGU1wiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRGU1wiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowp7g8r[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 06:34:20 +0000 UTC FinishedAt: 2026-08-07 06:37:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGETFS", "USB_GADGET", "USB_DUMMY_HCD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "075b74841bd0065a3bda3440873c747938e69b68", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB_GADGETFS", "USB_GADGET", "USB_DUMMY_HCD" ], "series_id": "4d8b0528-e259-4cec-b2a7-d702dba35ac1" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "gadgetfs_bind" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRmc19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIGBnYWRnZXRmc19iaW5kYCBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIGlzc3VlIGJ5IG1hbnVhbGx5IGZyZWVpbmcgdGhlIHJlcXVlc3QgYW5kIGNsZWFyaW5nIHBvaW50ZXJzIGluc3RlYWQgb2YgY2FsbGluZyBgZ2FkZ2V0ZnNfdW5iaW5kYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFVTQiBkdW1teSBIQ0Qgb3Igb3RoZXIgVURDcykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA3MjAwZDliYjFhNGRmZTlhNTg0ZjBlZGQyMjBkZTE2NmVjNjBiNDU3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAwNjozNTozMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbmluZGV4IGQ4N2E4YWI1MTUxMDcuLjM2NWY5YWI0ZDBkMmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xuQEAgLTE3MDAsNyAmIzQzOzE3MDAsMTMgQEAgc3RhdGljIGludCBnYWRnZXRmc19iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXG4gXHRyZXR1cm4gMDtcbiBcbiBlbm9tZW06XG4tXHRnYWRnZXRmc191bmJpbmQgKGdhZGdldCk7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2VyZXEpIHtcbiYjNDM7XHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4mIzQzO1x0XHRkZXYtXHUwMDNlcmVxID0gTlVMTDtcbiYjNDM7XHR9XG4mIzQzO1x0Z2FkZ2V0LVx1MDAzZWVwMC1cdTAwM2Vkcml2ZXJfZGF0YSA9IE5VTEw7XG4mIzQzO1x0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4mIzQzO1x0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHRyZXR1cm4gLUVOT01FTTtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQl9HQURHRVRGUyYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRmc19iaW5kJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIGluIGBnYWRnZXRmc19iaW5kYCBpbiB0aGUgVVNCIGdhZGdldGZzIGRyaXZlciwgZml4aW5nIGEgcG90ZW50aWFsIGlzc3VlIGJ5IG1hbnVhbGx5IGZyZWVpbmcgdGhlIHJlcXVlc3QgYW5kIGNsZWFyaW5nIHBvaW50ZXJzIGluc3RlYWQgb2YgY2FsbGluZyBgZ2FkZ2V0ZnNfdW5iaW5kYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgcmVhY2hhYmxlIGRyaXZlciAodmlhIFVTQiBkdW1teSBIQ0Qgb3Igb3RoZXIgVURDcykuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3MjAwZDliYjFhNGRmZTlhNTg0ZjBlZGQyMjBkZTE2NmVjNjBiNDU3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgNyAwNjozNTozMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYwppbmRleCBkODdhOGFiNTE1MTA3Li4zNjVmOWFiNGQwZDJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jCkBAIC0xNzAwLDcgJiM0MzsxNzAwLDEzIEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAogCXJldHVybiAwOwogCiBlbm9tZW06Ci0JZ2FkZ2V0ZnNfdW5iaW5kIChnYWRnZXQpOwomIzQzOwlpZiAoZGV2LSZndDtyZXEpIHsKJiM0MzsJCXVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LSZndDtlcDAsIGRldi0mZ3Q7cmVxKTsKJiM0MzsJCWRldi0mZ3Q7cmVxID0gTlVMTDsKJiM0MzsJfQomIzQzOwlnYWRnZXQtJmd0O2VwMC0mZ3Q7ZHJpdmVyX2RhdGEgPSBOVUxMOwomIzQzOwlkZXYtJmd0O2dhZGdldCA9IE5VTEw7CiYjNDM7CXNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpOwogCXJldHVybiAtRU5PTUVNOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIGEgVVNCIEdhZGdldGZzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQmIzM5O3MgcGxheWluZyB3aXRoIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGVycm9yIGhhbmRsaW5nIGluIGBnYWRnZXRmc19iaW5kYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7SW50ZXJlc3RpbmcsIHRoZXkmIzM5O3JlIG5vdCB1c2luZyB0aGUgc3RhbmRhcmQgYGdhZGdldGZzX3VuYmluZChnYWRnZXQpYCBpbiB0aGUgZXJyb3IgcGF0aC4mIzM0OyBJbnN0ZWFkLCB0aGV5JiMzOTt2ZSBvcHRlZCBmb3IgYSBtb3JlIGRpcmVjdCBhcHByb2FjaDogZnJlZWluZyB0aGUgcmVxdWVzdCBtYW51YWxseSBhbmQgY2xlYXJpbmcgcG9pbnRlcnMuCgpNeSBleHBlcnQgaW50dWl0aW9uIGtpY2tzIGluOiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTt2ZSBieXBhc3NlZCB0aGUgdHlwaWNhbCB1bmJpbmRpbmcgcHJvY2Vzcy4gSXMgdGhlcmUgYSBzcGVjaWZpYyByZWFzb24/IFBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IE9wdGltaXphdGlvbiBjb25jZXJucz8gV2hhdGV2ZXIgdGhlIG1vdGl2YXRpb24sIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvbnRleHQgaXMgd2FycmFudGVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBjb2RlIHN1cnJvdW5kaW5nIHRoZSBgZ2FkZ2V0ZnNfYmluZGAgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1hbnVhbCBtZW1vcnkgbWFuYWdlbWVudC4gSSYjMzk7bSBrZWVuIHRvIGRpc3NlY3QgdGhpcyBjaGFuZ2UgdG8gZ3Jhc3AgaXRzIGltcGFjdCBhbmQgYXNzZXNzIGl0cyBjb3JyZWN0bmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnYWRnZXRmc19iaW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBzdHJ1Y3QgZGV2X2RhdGFcdFx0KnRoZV9kZXZpY2U7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NjktXHRcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzUyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXHQuZnVuY3Rpb25cdD0gKGNoYXIgKikgZHJpdmVyX2Rlc2MsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcdC5iaW5kXHRcdD0gZ2FkZ2V0ZnNfYmluZCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzU1LVx0LnVuYmluZFx0XHQ9IGdhZGdldGZzX3VuYmluZCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XHQvKiB0cmlnZ2VycyBnYWRnZXRmc19iaW5kKCk7IHRoZW4gd2UgY2FuIGVudW1lcmF0ZS4gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgzLVx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg0OAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGdhZGdldGZzX2JpbmRgIFBhdGNoKioKCkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGdhZGdldGZzX2JpbmRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgcmFuZG9tIGZ1bmN0aW9uOyBpdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSBnYWRnZXRmcyBiaW5kaW5nIHByb2Nlc3MuIFdoYXQgZXhhY3RseSBpcyBiZWluZyBjaGFuZ2VkIGhlcmUsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBVU0IgZGV2aWNlIGVtdWxhdGlvbj8KClRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZHJpbGwgZG93biBvbiBpcyB0aGUgY29uZmlndXJhdGlvbi4gKldoeSogaXMgdGhpcyBjb2RlIHBhdGggYmVpbmcgbW9kaWZpZWQ/IFdoYXQgY29uZmlnIG9wdGlvbnMsIGRldmljZSB0cmVlIHNldHRpbmdzLCBvciBidWlsZCBmbGFncyBhcmUgdHJpZ2dlcmluZyB0aGlzIGNvZGUgdG8gYmUgY29tcGlsZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMgYW5kIHVuZGVybHlpbmcgdXNlIGNhc2VzIHRoYXQgZGljdGF0ZSB3aGVuIGBnYWRnZXRmc19iaW5kYCBpcyBjYWxsZWQuIElzIGl0IGEgc3BlY2lmaWMgY29udHJvbGxlciB0eXBlLCBhIGNlcnRhaW4gZ2FkZ2V0IHNldHVwLCBvciBhIGZlYXR1cmUgZmxhZz8gQSBjaGFuZ2UgaGVyZSBjb3VsZCBpbXBhY3QgYSB3aWRlIHJhbmdlIG9mIGRldmljZXMgYW5kIGNvbmZpZ3VyYXRpb25zLCBhbmQgSSBuZWVkIHRvIGtub3cgd2hpY2ggb25lcy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgYnVpbGQgaXMgdGhlIGZpcnN0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFVTQl9HQURHRVRGUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTkwPWNvbmZpZyBVU0JfR19OQ01cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjIwNjpjb25maWcgVVNCX0dBREdFVEZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA3LVx0dHJpc3RhdGUgXCYjMzQ7R2FkZ2V0IEZpbGVzeXN0ZW1cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjI1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVVNCX0dBREdFVEZTIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHJlYWxseSBuZWVkIHRvIGRyaWxsIGRvd24gYW5kIHZlcmlmeSB0aGUgY3VycmVudCBkZXBlbmRlbmNpZXMgZm9yIGBVU0JfR0FER0VURlNgLiBJdCYjMzk7cyBjcnVjaWFsLCBhcyBhbHdheXMsIHRvIGVuc3VyZSB0aGF0IHRoZSBmb3VuZGF0aW9uIGlzIHNvbGlkIGJlZm9yZSBJIHN0YXJ0IGJ1aWxkaW5nIGFueXRoaW5nIG9uIHRvcCBvZiBpdC4gSSYjMzk7bSBpbWFnaW5pbmcgYSBjb21wbGV4IHdlYiBvZiBjb25maWd1cmF0aW9ucywgZHJpdmVycywgYW5kIHVuZGVybHlpbmcgaGFyZHdhcmUgYXNzdW1wdGlvbnMgaGVyZS4gVGhlIHBvdGVudGlhbCBmb3IgcmVncmVzc2lvbnMgb3IgdW5mb3Jlc2VlbiBjb25mbGljdHMgaXMgYWx3YXlzIHByZXNlbnQsIGVzcGVjaWFsbHkgaW4gYW4gYXJlYSBhcyB0aWdodGx5IGNvdXBsZWQgYXMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gbWFrZSBzdXJlIEkga25vdyAqZXhhY3RseSogd2hhdCYjMzk7cyByZXF1aXJlZCwgYW55IGtub3duIGxpbWl0YXRpb25zLCBhbmQgaG93IGFueSByZWNlbnQga2VybmVsIGNoYW5nZXMgbWlnaHQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBtb2R1bGUuIEkgbmVlZCB0byBrbm93IHdoZXJlIHRoZSB3ZWFrIHBvaW50cyBhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VVNCX0dBREdFVEZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjA2OmNvbmZpZyBVU0JfR0FER0VURlNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1NTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBVU0JfR0FER0VURlNgIERlcGVuZGVuY3kqKgoKT2theSwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byBnZXQgYSBmaXJtIGdyYXNwIG9uIHRoZSBkZXBlbmRlbmNpZXMgYXNzb2NpYXRlZCB3aXRoIGBVU0JfR0FER0VURlNgLiBJIGNhbiYjMzk7dCBqdXN0IGFzc3VtZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O3MgbGlrZWx5IGEgd2hvbGUgY2hhaW4gb2YgcmVsYXRlZCBrZXJuZWwgbW9kdWxlcyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCB0aGlzIHNldHRpbmcgdHJpZ2dlcnMgb3IgcmVxdWlyZXMuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgd2hhdCYjMzk7cyBwdWxsZWQgaW4sIHdoYXQgdGhlIGltcGxpY2F0aW9ucyBhcmUgZm9yIHRoZSBidWlsZCwgYW5kIHBvdGVudGlhbCBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBzdWJzeXN0ZW1zLiBJIG5lZWQgYSBjbGVhciB2aWV3IG9mIHRoZSBjb25maWd1cmF0aW9uIGdyYXBoLiBPbmx5IHRoZW4gY2FuIEkgZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBjb3Vyc2Ugb2YgYWN0aW9uLiBJIGNhbiYjMzk7dCBvcGVyYXRlIG9uIGFzc3VtcHRpb25zOyBJIG5lZWQgZGF0YS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMDpcdFx0ICBvZiBzZXZlcmFsIGV0aGVybmV0IGZyYW1lcyBpbnRvIG9uZSBVU0IgdHJhbnNmZXIgYW5kIGRpZmZlcmVudFxuIDIwMTpcdFx0ICBhbGlnbm1lbnQgcG9zc2liaWxpdGllcy5cbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDIwNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX25jbVwmIzM0Oy5cbiAyMDU6XHRcbiAyMDY6XHRjb25maWcgVVNCX0dBREdFVEZTXG4gMjA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuIDIwODpcdFx0aGVscFxuIDIwOTpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcbiAyMTA6XHRcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXG4gMjExOlx0XHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbiYjMzk7dCByZWxhdGUgdG8gZW51bWVyYXRpb24uXG4gMjEyOlx0XHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxuIDIxMzpcdFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXG4gMjE0Olx0XG4gMjE1Olx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiAyMTY6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDsuXG4gMjE3Olx0XG4gMjE4Olx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtGdW5jdGlvbiBGaWxlc3lzdGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRpdmluZyBpbnRvIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGF0ZXZlciBpdCBpcywgYW5kIEkgaW1tZWRpYXRlbHkga25vdyB0aGF0IGl0cyBhdmFpbGFiaWxpdHkgaXMgY2hhaW5lZCB0byBgVVNCX0dBREdFVGAuIFRoYXQmIzM5O3MgYmVjYXVzZSB0aGUgS2NvbmZpZyBmaWxlIGZvciBsZWdhY3kgZ2FkZ2V0IGRyaXZlcnMsIGxvY2F0ZWQgaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AsIGlzIHRoZSB1c3VhbCBwbGFjZSBmb3IgdGhlc2Ugc29ydHMgb2YgZGVwZW5kZW5jaWVzLiBJJiMzOTt2ZSB3b3JrZWQgd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBsb25nIGVub3VnaCB0byBrbm93IHRoZSBsYXlvdXQgaW5zdGluY3RpdmVseS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBjaGVjayBmb3IgdGhlIG9wdGlvbnMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gb3BlbiB1cCBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZWAuIEkgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaG93IHRoaXMgcGFydGljdWxhciBlbGVtZW50LCB3aGF0ZXZlciBpdCBpcywgZml0cyBpbnRvIHRoZSBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUgb2JqZWN0IGZpbGVzIGFyZSBjb25zdHJ1Y3RlZCwgd2hhdCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBpcyB1c2VkLCBhbmQgaG93IGBVU0JfR0FER0VUYCBhY3R1YWxseSBpbmZsdWVuY2VzIHRoZSBpbmNsdXNpb24gKG9yIGV4Y2x1c2lvbikgb2YgY29kZS4gQmFzaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbmZpZ3VyYXRpb24sIHRoZSBzb3VyY2UgY29kZSwgYW5kIHRoZSBmaW5hbCBjb21waWxlZCBiaW5hcnkuIFNlZWluZyB0aGUgbWFrZWZpbGUgd2lsbCBnaXZlIG1lIHRoYXQgY29udGV4dC4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgaW4gYSBtdWNoIGJldHRlciBwb3NpdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhlIG9wdGlvbiBvbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dhZGdldGZzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlPTE0PWdfbWlkaS15XHRcdFx0Oj0gZ21pZGkub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZToxNTpnYWRnZXRmcy15XHRcdFx0Oj0gaW5vZGUub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZS0xNi1nX21hc3Nfc3RvcmFnZS15XHRcdDo9IG1hc3Nfc3RvcmFnZS5vXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfVVNCX0VUSClcdFx0JiM0Mzs9IGdfZXRoZXIub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfVVNCX0dBREdFVEZTKVx0JiM0Mzs9IGdhZGdldGZzLm9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX1VTQl9GVU5DVElPTkZTKVx0JiM0Mzs9IGdfZmZzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYwNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXRGUyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBpdGVtIGFwcGVhcnMgdG8gYmUgYENPTkZJR19VU0JfR0FER0VURlNgLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBtb2RpZmljYXRpb24gbWFkZSB0byB0aGUgYGdhZGdldGZzX2JpbmRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBJbW1lZGlhdGVseSwgSSYjMzk7bSB0aGlua2luZywgJiMzNDtJcyB0aGlzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz8mIzM0OyBCZWNhdXNlIGxldCYjMzk7cyBmYWNlIGl0LCBhIGxvdCBvZiBkZXZlbG9wbWVudCB0aGVzZSBkYXlzIGhhcHBlbnMgd2l0aGluIFZNcy4gRm9ydHVuYXRlbHksIEkgcmVjYWxsIHRoYXQgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5ICppcyogZW11bGF0ZWQgaW4gc29tZSB2aXJ0dWFsaXphdGlvbiBzZXR1cHMuIFRoaW5rIGR1bW15X2hjZCBhbmQgc2ltaWxhciBhYnN0cmFjdGlvbnMuIFNvIHRoYXQmIzM5O3MgZ29vZDsgaXQmIzM5O3MgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGFjcm9zcyBhIHdpZGVyIHJhbmdlIG9mIHNjZW5hcmlvcy4KCk5leHQsIEkmIzM5O20gdHJ5aW5nIHRvIGRldGVybWluZSB0aGUgcHJhY3RpY2FsIGltcGFjdC4gSXQgc2VlbXMgdGhlIHBhdGNoIGlzIGFsdGVyaW5nIHRoZSB3YXkgZXJyb3IgaGFuZGxpbmcgd29ya3MuIFRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIGJlLCB0aGF0IGNhbiBsZWFkIHRvIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgc3RhYmlsaXR5IGltcHJvdmVtZW50cy4KCk5vdywgbGV0IG1lIHplcm8gaW4gb24gdGhlIGtleSBzeW1ib2wgaGVyZTogYGdhZGdldGZzX2JpbmRgLiBXYWl0IGEgc2Vjb25k4oCmIGlzbiYjMzk7dCB0aGF0IGZ1bmN0aW9uICpzdGF0aWMqPyBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQuIExldCBtZSBxdWlja2x5IHZlcmlmeSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLiBJdCYjMzk7cyBjcnVjaWFsLCBiZWNhdXNlIGlmIGl0JiMzOTtzIHN0YXRpYywgaXQmIzM5O3Mgc2NvcGUgaXMgaW5jcmVkaWJseSBsaW1pdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtnYWRnZXRmc19iaW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNjY2PXN0YXRpYyBzdHJ1Y3QgZGV2X2RhdGFcdFx0KnRoZV9kZXZpY2U7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY2Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NjktXHRcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzUyPXN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyID0ge1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXHQuZnVuY3Rpb25cdD0gKGNoYXIgKikgZHJpdmVyX2Rlc2MsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcdC5iaW5kXHRcdD0gZ2FkZ2V0ZnNfYmluZCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzU1LVx0LnVuYmluZFx0XHQ9IGdhZGdldGZzX3VuYmluZCxcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XHQvKiB0cmlnZ2VycyBnYWRnZXRmc19iaW5kKCk7IHRoZW4gd2UgY2FuIGVudW1lcmF0ZS4gKi9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODgzLVx0c3Bpbl91bmxvY2tfaXJxIChcdTAwMjZkZXYtXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MTYKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzcywgd2l0aCB0aGUgYm9sZGVkIGhlYWRlciBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIGBnYWRnZXRmc2AgRHJpdmVyIFN0cnVjdHVyZSoqCgpBbHJpZ2h0LCBzbyBgZ2FkZ2V0ZnNfYmluZGAgaXMgZGVmaW5pdGl2ZWx5IGEgc3RhdGljIGZ1bmN0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIEl0JiMzOTtzIHVzZWQgYXMgdGhlIGAuYmluZGAgbWVtYmVyIHdpdGhpbiB0aGUgYGdhZGdldGZzX2RyaXZlcmAgc3RydWN0dXJlLiBNeSBuZXh0IHRob3VnaHQgaXMsIHdoZXJlIGV4YWN0bHkgaXMgdGhhdCBgZ2FkZ2V0ZnNfZHJpdmVyYCBzdHJ1Y3R1cmUgZ2V0dGluZyByZWdpc3RlcmVkIHdpdGhpbiB0aGUga2VybmVsPyBUaGF0JiMzOTtzIHRoZSBrZXkuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhlIGRyaXZlciBzdHJ1Y3R1cmUgaXRzZWxmIHRvIHVuZGVyc3RhbmQgaG93IGl0JiMzOTtzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIFVTQiBzdWJzeXN0ZW0uIEkmIzM5O20gYWZ0ZXIgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2FkZ2V0ZnNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTgwPWVwMF9mYXN5bmMgKGludCBmLCBzdHJ1Y3QgZmlsZSAqZmQsIGludCBvbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE4Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTg4OnN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExODktXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTE9ZGV2X3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE5Ny1cdGlmIChkZXYtXHUwMDNlZ2FkZ2V0X3JlZ2lzdGVyZWQpIHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTk4Olx0XHR1c2JfZ2FkZ2V0X3VucmVnaXN0ZXJfZHJpdmVyIChcdTAwMjZnYWRnZXRmc19kcml2ZXIpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExOTktXHRcdGRldi1cdTAwM2VnYWRnZXRfcmVnaXN0ZXJlZCA9IGZhbHNlO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzMyPWdhZGdldGZzX3N1c3BlbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1MjpzdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyIGdhZGdldGZzX2RyaXZlciA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUzLVx0LmZ1bmN0aW9uXHQ9IChjaGFyICopIGRyaXZlcl9kZXNjLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xODA3PWRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODQtXHRpZiAoZGV2LVx1MDAzZWhzX2NvbmZpZylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg1Olx0XHRnYWRnZXRmc19kcml2ZXIubWF4X3NwZWVkID0gVVNCX1NQRUVEX0hJR0g7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4Ni1cdGVsc2VcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg3Olx0XHRnYWRnZXRmc19kcml2ZXIubWF4X3NwZWVkID0gVVNCX1NQRUVEX0ZVTEw7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg5Olx0dmFsdWUgPSB1c2JfZ2FkZ2V0X3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZnYWRnZXRmc19kcml2ZXIpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4OTAtXHRpZiAodmFsdWUgIT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2Mjc2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBEZXZpY2UgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGlzIGNydWNpYWwgcGllY2Ugb2YgaW5mb3JtYXRpb24sIHdoYXRldmVyIGl0IGlzLCBpcyByZWdpc3RlcmVkLCBwcm9iYWJseSBhcyBwYXJ0IG9mIHRoZSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24uIEl0IHNlZW1zIGxpa2UgdGhlIGVudHJ5IHBvaW50IGZvciB0aGlzIGlzIGluIGBkZXZfY29uZmlnYC4gVGhhdCYjMzk7cyB0aGUga2V5OiBgZGV2X2NvbmZpZ2AgaXMgdGhlIGRlc2lnbmF0ZWQgd3JpdGUgaGFuZGxlciBmb3IgdGhlIGRldmljZSBmaWxlLiBJdCBoYW5kbGVzIGFsbCB0aGUgY29uZmlndXJhdGlvbiB3cml0ZXMuIFJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBkZXZfY29uZmlnYCBhbmQgc2VlIHdoYXQmIzM5O3MgZ29pbmcgb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGlzIGhhbmRsZWQsIHRoZSBjb250ZXh0LCBhbmQgYW55IGFzc29jaWF0ZWQgZXJyb3IgaGFuZGxpbmcuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfY29uZmlnJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01NS0gKlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjU2OiAqIC0gRmlyc3QsIGRldl9jb25maWcoKSBpcyBjYWxsZWQgd2hlbiAvZGV2L2dhZGdldC8kQ0hJUCBpcyBjb25maWd1cmVkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNTctICogICAoYnkgd3JpdGluZyBjb25maWd1cmF0aW9uIGFuZCBkZXZpY2UgZGVzY3JpcHRvcnMpLiAgQWZ0ZXJ3YXJkcyBpdFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xODA2PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTgwNzpkZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTM3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGVwMF9vcGVyYXRpb25zID0ge1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTQwLVx0LnJlYWQgPVx0XHRlcDBfcmVhZCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTQxOlx0LndyaXRlID1cdGRldl9jb25maWcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk0Mi1cdC5mYXN5bmMgPVx0ZXAwX2Zhc3luYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc3OQoJCQkJCQkJb3V0cHV0OiA1MQoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdhZGdldEZTIERyaXZlciBTdHJ1Y3R1cmUqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBkZXZfY29uZmlnYCBpcyB0aGUgY3JpdGljYWwgd3JpdGUgaGFuZGxlciBmb3IgYGVwMF9vcGVyYXRpb25zYC4gQnV0IGlzIGBkZXZfY29uZmlnYCBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gVGhhdCBsaW1pdHMgbXkgaW5pdGlhbCB0YXJnZXQuIEFuZCB3aGF0IGFib3V0IGBlcDBfb3BlcmF0aW9uc2A/IFRoYXQgZ2V0cyB1c2VkIHdoZW4gd2Ugb3BlbiB0aGUgZ2FkZ2V0ZnMgZGV2aWNlLCB3aGljaCBpc24mIzM5O3QgdGhlIG1vc3QgZHluYW1pYyBwb2ludCBvZiBpbnRlcmFjdGlvbi4KCkkgbmVlZCB0byBmaW5kIGEgbm9uLXN0YXRpYyBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZGVlcGVyIGluc3BlY3Rpb24uIExldCBtZSB0aGluay4uLiBBaCEgYGdhZGdldGZzX2JpbmRgIOKAkyB0aGF0JiMzOTtzIGNhbGxlZCBieSB0aGUgVVNCIGdhZGdldCBjb3JlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IHdoZW4gYSBkcml2ZXIgcmVnaXN0ZXJzLiBTbyB0aGUga2V5IGVudHJ5IHBvaW50cyBhcmUgZ29pbmcgdG8gYmUgYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCBvciBgdXNiX2dhZGdldF9wcm9iZV9kcml2ZXJgLiBJIGtub3cgSSBjYW4gZmluZCB0aGlzIGNvcmUgZnVuY3Rpb24gaW4gdGhlIGxpbnV4IGtlcm5lbCBzb3VyY2UuCgpCdXQgSSByZWFsbHkgd2FudCB0byBmb2N1cyBzcGVjaWZpY2FsbHkgb24gdGhlIGdhZGdldGZzIGNvbXBvbmVudC4gTGV0JiMzOTtzIHNlZS4uLiBJcyB0aGVyZSBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbiB0aGF0IGlzIGFjY2Vzc2libGUgd2l0aGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgPyBUaGF0IHNlZW1zIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIHRvIGJlZ2luIHRoaXMgc2VhcmNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKlxcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTc5PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTgwOmVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNTgxLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NjM4PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NjM5OmVwX3dyaXRlX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKmZyb20pXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjQwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEyMD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZ2FkZ2V0ZnNfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNS19O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMjY6TU9EVUxFX0FMSUFTX0ZTKFwmIzM0O2dhZGdldGZzXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTAyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYW4gZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEVudHJ5IFBvaW50cyoqCgpBbHJpZ2h0LCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IHRoaXMgcGllY2Ugb2YgY29kZSAqYmVnaW5zKiBpdHMgZXhlY3V0aW9uIG9yIGhvdyBpdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludHMuIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBmb3IgdHdvIHRoaW5nczogRmlyc3QsIGFueSBjbGVhcmx5IGRlZmluZWQgKmV4cG9ydGVkIGZ1bmN0aW9ucyog4oCTIHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGZyb20gZWxzZXdoZXJlLiBUaGVzZSBhcmUgbXkgcHJpbWUgc3VzcGVjdHMgZm9yIHVzZXItZmFjaW5nIGZ1bmN0aW9uYWxpdHkgb3IgY29yZSBvcGVyYXRpb25zLiBTZWNvbmQsIEkmIzM5O2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgYSAqbW9kdWxlIGluaXRpYWxpemF0aW9uKiByb3V0aW5lLCBwZXJoYXBzIHNvbWV0aGluZyB0aGF0IHNldHMgdXAgaW50ZXJuYWwgc3RhdGUgb3IgcmVnaXN0ZXJzIGNhbGxiYWNrcy4gT2Z0ZW4gYSBtb2R1bGUgd2lsbCBoYXZlIHNvbWUgc29ydCBvZiBpbml0aWFsaXplci4gVGhlc2UgdHlwZXMgb2YgZnVuY3Rpb25zIGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgbW9kdWxlIGludGVncmF0ZXMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEVzc2VudGlhbGx5LCBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBxdWljayBtYXAgb2YgdGhlIGNvZGUmIzM5O3MgYm91bmRhcmllcyBhbmQgaW5pdGlhbCBzZXR1cCBiZWZvcmUgZGl2aW5nIGludG8gdGhlIG1vcmUgZ3JhbnVsYXIgZGV0YWlscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzA9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEzOS19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0MDptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg2MwoJCQkJCQkJb3V0cHV0OiA3MQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBgaW5vZGUuY2AgdGhvdWdodHM6CgoqKkFuYWx5emluZyB0aGUgTGVnYWN5IFVTQiBHYWRnZXQgSW5vZGUgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBkb2luZyBpcyB6ZXJvaW5nIGluIG9uIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBUaGF0IHRlbGxzIG1lIHJpZ2h0IGF3YXkgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgbGVnYWN5IFVTQiBnYWRnZXQgaW5mcmFzdHJ1Y3R1cmUsIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZpbGUgc3lzdGVtLiBJbiBvdGhlciB3b3JkcywgaG93IHRoZSBMaW51eCBrZXJuZWwgcHJlc2VudHMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IGFzIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQuIFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGFueSBVU0IgZ2FkZ2V0LCBhcyBpdCYjMzk7cyB0aGUgaW50ZXJmYWNlIHRoYXQgdXNlcnNwYWNlIHByb2dyYW1zIHVzZSB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgdGhlIGRldmljZS4KCkkmIzM5O20gdGhpbmtpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgc2V0IHVwLiBXaGF0IGFyZSB0aGUga2V5IGBpbm9kZWAgb3BlcmF0aW9ucyBkZWZpbmVkIGhlcmU/IGBjcmVhdGVgLCBgb3BlbmAsIGByZWxlYXNlYCwgYHJlYWRgLCBgd3JpdGVgLCBgZ2V0YXR0cmAsIGBzZXRhdHRyYCwgZXRjLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGV2aWNlLXNwZWNpZmljIGRhdGEgYW5kIGZ1bmN0aW9ucyBhcmUgYm91bmQgdG8gYSBmaWxlLXN5c3RlbSBpbnRlcmZhY2UuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkLCBhbmQgaG93IGlzIHNlY3VyaXR5IGNvbnNpZGVyZWQ/CgpBcmUgdGhleSBoYW5kbGluZyB0aGUgZGV2aWNlLXNwZWNpZmljIHJlcXVlc3RzLCBvciBhcmUgdGhlc2UganVzdCB3cmFwcGVycywgZGVmZXJyaW5nIHRvIG90aGVyIFVTQiBnYWRnZXQgZHJpdmVycz8gSG93IGlzIHN0YXRlIG1hbmFnZWQ/IEhvdyBpcyBjb25jdXJyZW5jeSBoYW5kbGVkLCBjb25zaWRlcmluZyB0aGF0IG11bHRpcGxlIHVzZXJzcGFjZSBwcm9ncmFtcyBjYW4gaW50ZXJhY3Qgd2l0aCB0aGUgZ2FkZ2V0IHNpbXVsdGFuZW91c2x5PyBBcmUgdGhlcmUgcmFjZSBjb25kaXRpb25zIG9yIGxvY2tpbmcgaXNzdWVzIEkgc2hvdWxkIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvd3Mgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGx1cmtpbmcgaW4gdGhpcyBjb2RlPyBUaGlzIGlzIHdoZXJlIHRoZSBkZXZpbCBpcyBpbiB0aGUgZGV0YWlscy4gV2hhdCBlcnJvciBoYW5kbGluZyBpcyB0aGVyZSwgYW5kIGhvdyByb2J1c3QgaXMgaXQ/CgpVbHRpbWF0ZWx5LCB0aGUgZ29hbCBpcyB0byBmdWxseSBncmFzcCB0aGUgbGlmZWN5Y2xlIG9mIGhvdyBhIHVzZXItbGV2ZWwgcHJvZ3JhbSBpbnRlcmFjdHMgd2l0aCB0aGUgVVNCIGdhZGdldCBkZXZpY2UsIGZyb20gZmlsZSBvcGVuaW5nIHRvIGRhdGEgdHJhbnNmZXIsIGFuZCBob3cgdGhhdCB0cmFuc2xhdGVzIHRvIHRoZSBoYXJkd2FyZS4gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBteSBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XnN0YXRpYyBbYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxPU1PRFVMRV9MSUNFTlNFIChcJiMzNDtHUExcJiMzNDspO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgzOnN0YXRpYyBpbnQgZXBfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODQtXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MT1lcF9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQwMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0MDI6c3RhdGljIGxvbmcgZXBfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBjb2RlLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQwMy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTQzNj1zdHJ1Y3Qga2lvY2JfcHJpdiB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ0Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0NDg6c3RhdGljIGludCBlcF9haW9fY2FuY2VsKHN0cnVjdCBraW9jYiAqaW9jYilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy00NDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy00NjYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NDY3OnN0YXRpYyB2b2lkIGVwX3VzZXJfY29weV93b3JrZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ2OC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ4Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0ODg6c3RhdGljIHZvaWQgZXBfYWlvX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy00ODkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01MjYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTI3OnN0YXRpYyBzc2l6ZV90IGVwX2FpbyhzdHJ1Y3Qga2lvY2IgKmlvY2IsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNTI4LVx0XHQgICAgICBzdHJ1Y3Qga2lvY2JfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTgwPWVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTYzNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2MzY6c3RhdGljIHNzaXplX3QgZXBfY29uZmlnKHN0cnVjdCBlcF9kYXRhICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02MzctXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVx0XHQqdGhlX2RldmljZTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2Njg6c3RhdGljIGludCBnYWRnZXRmc19iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTY2OS1cdFx0c3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyICpkcml2ZXIpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3OTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc5MzpzdGF0aWMgaW50IGlzX3ZhbGlkX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc5NC1cdFx0dW5zaWduZWQgaW50IHRvdGFsKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIxPWdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA4OC0vKiBcJiMzNDttb3VudCAtdCBnYWRnZXRmcyBwYXRoIC9kZXYvZ2FkZ2V0XCYjMzQ7IGVuZHMgdXAgaGVyZSAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwODk6c3RhdGljIGludCBnYWRnZXRmc19nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA5MC17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZ2FkZ2V0ZnNfY29udGV4dF9vcHMgPSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwOTctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjA5ODpzdGF0aWMgaW50IGdhZGdldGZzX2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjA5OS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NzIKCQkJCQkJCW91dHB1dDogNTIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AgZm9yIE5vbi1TdGF0aWMgRnVuY3Rpb25zKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBNeSBpbW1lZGlhdGUgZ29hbCBoZXJlIGlzIHRvIGlkZW50aWZ5IGFuZCB1bmRlcnN0YW5kIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBmaWxlLiBUaGUgJiMzNDtsZWdhY3kmIzM0OyBkZXNpZ25hdGlvbiB0ZWxscyBtZSB3ZSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCBvbGRlciBVU0IgZ2FkZ2V0IGltcGxlbWVudGF0aW9uIGNvZGUsIHdoaWNoIGFsd2F5cyBtYWtlcyBtZSBhIGxpdHRsZSBjYXV0aW91cyDigJMgZXhwZWN0aW5nIHBvc3NpYmx5IGxlc3MgbW9kdWxhciBkZXNpZ24gYW5kIHBlcmhhcHMgbW9yZSBnbG9iYWwgc3RhdGUgZGVwZW5kZW5jaWVzLiBUaGlzIG1lYW5zIEkgbmVlZCB0byBxdWlja2x5IHNjYW4gZm9yIGFueXRoaW5nIHRoYXQgaXNuJiMzOTt0IGRlY2xhcmVkIGBzdGF0aWNgLiBOb24tc3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIHZpc2libGUgb3V0c2lkZSB0aGUgZmlsZSBzY29wZS4gSSYjMzk7bGwgbmVlZCB0byBhc3Nlc3MgaG93IHRoZXNlIGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgdXRpbGl6ZWQsIHRoaW5raW5nIHBhcnRpY3VsYXJseSBhYm91dCB0aGUgcG90ZW50aWFsIGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMgYW5kIHRoZWlyIGltcGxpY2F0aW9ucyBvbiB0aGUgZHJpdmVyJiMzOTtzIG92ZXJhbGwgYmVoYXZpb3IuIEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIsIHdlbGwtZGVmaW5lZCBBUEksIG9yIGRvIHRoZXkgZmVlbCBhIGJpdCBhZC1ob2M/IEFuZCBvZiBjb3Vyc2UsIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IG9idmlvdXMgaXNzdWVzOiBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBpbmNvcnJlY3QgbG9ja2luZywgb3IgZXZlbiBqdXN0IGluZWZmaWNpZW50IGNvZGUgZGVzaWduIOKAkyB0aGUgdXN1YWwgc3VzcGVjdHMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteW2EtekEtWl9dW2EtekEtWjAtOV9dKiAqXFwoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03Nz1zdGF0aWMgY29uc3QgY2hhciBzaG9ydG5hbWUgW10gPSBcJiMzNDtnYWRnZXRmc1wmIzM0OztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3OTpNT0RVTEVfREVTQ1JJUFRJT04gKERSSVZFUl9ERVNDKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MDpNT0RVTEVfQVVUSE9SIChcJiMzNDtEYXZpZCBCcm93bmVsbFwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODE6TU9EVUxFX0xJQ0VOU0UgKFwmIzM0O0dQTFwmIzM0Oyk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtODItXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTI5NT1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6Mjk2OmdldF9yZWFkeV9lcCAodW5zaWduZWQgZl9mbGFncywgc3RydWN0IGVwX2RhdGEgKmVwZGF0YSwgYm9vbCBpc193cml0ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yOTcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0zMzU9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozMzY6ZXBfaW8gKHN0cnVjdCBlcF9kYXRhICplcGRhdGEsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgbGVuKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTMzNy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MD1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MzgxOmVwX3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0zODIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz01Nzk9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo1ODA6ZXBfcmVhZF9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICp0bylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01ODEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz02Mzg9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2Mzk6ZXBfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02NDAte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03MjU9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo3MjY6ZXBfY29uZmlnIChzdHJ1Y3QgZXBfZGF0YSAqZGF0YSwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTcyNy17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxNz1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6ODE4OmVwX29wZW4gKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04MTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz05MTI9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo5MTM6ZXAwX3JlYWQgKHN0cnVjdCBmaWxlICpmZCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtOTE0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTA4Mj1zdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRmc19ldmVudCAqXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTA4MzpuZXh0X2V2ZW50IChzdHJ1Y3QgZGV2X2RhdGEgKmRldiwgZW51bSB1c2JfZ2FkZ2V0ZnNfZXZlbnRfdHlwZSB0eXBlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEwODQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTI0PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTEyNTplcDBfd3JpdGUgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTEyNi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExNzk9c3RhdGljIGludFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExODA6ZXAwX2Zhc3luYyAoaW50IGYsIHN0cnVjdCBmaWxlICpmZCwgaW50IG9uKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExODEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTkwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTkxOmRldl9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTE5Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEyMTk9c3RhdGljIF9fcG9sbF90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTIyMDplcDBfcG9sbCAoc3RydWN0IGZpbGUgKmZkLCBwb2xsX3RhYmxlICp3YWl0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEyMjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMzA2PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMzA3OmNvbmZpZ19idWYgKHN0cnVjdCBkZXZfZGF0YSAqZGV2LCB1OCB0eXBlLCB1bnNpZ25lZCBpbmRleClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMzA4LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTMzMj1zdGF0aWMgaW50XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTMzMzpnYWRnZXRmc19zZXR1cCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCwgY29uc3Qgc3RydWN0IHVzYl9jdHJscmVxdWVzdCAqY3RybClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMzM0LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTYzOT1zdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE2NDA6Z2FkZ2V0ZnNfdW5iaW5kIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NDEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzEzPXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTcxNDpnYWRnZXRmc19kaXNjb25uZWN0IChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3MTUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzMxPXN0YXRpYyB2b2lkXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTczMjpnYWRnZXRmc19zdXNwZW5kIChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3MzMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xODA2PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTgwNzpkZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTE5PXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTIwOmdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5MjEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYzPXN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0X3Blcm0gPSBTX0lSVVNSIHwgU19JV1VTUjtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTY0LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NjU6bW9kdWxlX3BhcmFtIChkZWZhdWx0X3VpZCwgdWludCwgMDY0NCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2Njptb2R1bGVfcGFyYW0gKGRlZmF1bHRfZ2lkLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTY3Om1vZHVsZV9wYXJhbSAoZGVmYXVsdF9wZXJtLCB1aW50LCAwNjQ0KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTY4LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTcwPXN0YXRpYyBzdHJ1Y3QgaW5vZGUgKlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NzE6Z2FkZ2V0ZnNfbWFrZV9pbm9kZSAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYixcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTcyLVx0XHR2b2lkICpkYXRhLCBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDIwPXN0YXRpYyBpbnRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDIxOmdhZGdldGZzX2ZpbGxfc3VwZXIgKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDIyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEwND1zdGF0aWMgdm9pZFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMDU6Z2FkZ2V0ZnNfa2lsbF9zYiAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTA2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEyMD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZ2FkZ2V0ZnNfdHlwZSA9IHtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNS19O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMjY6TU9EVUxFX0FMSUFTX0ZTKFwmIzM0O2dhZGdldGZzXCYjMzQ7KTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTMwPXN0YXRpYyBpbnQgX19pbml0IGdhZGdldGZzX2luaXQgKHZvaWQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxMzktfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxNDA6bW9kdWxlX2luaXQgKGdhZGdldGZzX2luaXQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjE0Mj1zdGF0aWMgdm9pZCBfX2V4aXQgZ2FkZ2V0ZnNfY2xlYW51cCAodm9pZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0Ni19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0Nzptb2R1bGVfZXhpdCAoZ2FkZ2V0ZnNfY2xlYW51cCk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIyOTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA1NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0RlMgRHJpdmVyJiMzOTtzIEVudHJ5IFBvaW50KioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgIGFuZCBpbW1lZGlhdGVseSBub3RpY2UgYWxsIHRoZSBmdW5jdGlvbnMgYXJlIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0JiMzOTtzIGEgYml0IG9mIGEgd3JpbmtsZS4gSSBuZWVkIGEgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgZW50cnkgcG9pbnQuIEluaXRpYWxseSwgSSB0aG91Z2h0IEkgbWlnaHQgaGF2ZSB0byBmYWxsIGJhY2sgb24gYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCwgYnV0IHRoYXQmIzM5O3MgYSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBub3Qgc3BlY2lmaWMgdG8gR2FkZ2V0RlMuCgpBaGEhIGBnYWRnZXRmc19iaW5kYC4gVGhhdCYjMzk7cyB0aGUgb25lIHRoYXQgd2FzIG1vZGlmaWVkIGluIHRoZSBwYXRjaCEgQnV0IHdhaXQuLi5pdCYjMzk7cyBhbHNvIGBzdGF0aWNgLiBTaG9vdC4gSWYgbm90aGluZyYjMzk7cyBub24tc3RhdGljLCBJIGNhbiBlaXRoZXIgcHJvdmlkZSBubyBGb2N1c1N5bWJvbHMgYXQgYWxsLCBvciBwZXJoYXBzIHByb3ZpZGUgYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCB3aGljaCBpcyB0aGUgdG9wLWxldmVsLiBObywgaXQmIzM5O3MgYSBob3QgcGF0aCwgc28gYSBiYWQgY2hvaWNlLgoKVGhlbiBpdCBoaXRzIG1lOiAqZnVuY3Rpb24gcG9pbnRlcnMqLiBgZ2FkZ2V0ZnNfYmluZGAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIChgLmJpbmQgPSBnYWRnZXRmc19iaW5kYCkuIFRoYXQgbWVhbnMgaXQgY2Fubm90IGJlIGlubGluZWQsIGl0IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBhbmQgdGhlcmVmb3JlIGl0ICppcyogYSB2YWxpZCBjaG9pY2UuIFRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IuCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIEkgY2hlY2tlZCB0aGUgZGlmZiBhZ2FpbiwgYW5kLCB5ZXMsIGBnYWRnZXRmc19iaW5kYCBpcyB0aGUgKm9ubHkqIGZ1bmN0aW9uIG1vZGlmaWVkLgoKVGhlIGNvbmZpZyB0byBlbmFibGUgdGhlIEdhZGdldEZTIGlzIGBVU0JfR0FER0VURlNgLCBlYXN5IGVub3VnaC4KCkFscmlnaHQsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBzdXJlLi4uIExldCYjMzk7cyBjaGVjayBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIwMDpcdFx0ICBvZiBzZXZlcmFsIGV0aGVybmV0IGZyYW1lcyBpbnRvIG9uZSBVU0IgdHJhbnNmZXIgYW5kIGRpZmZlcmVudFxuIDIwMTpcdFx0ICBhbGlnbm1lbnQgcG9zc2liaWxpdGllcy5cbiAyMDI6XHRcbiAyMDM6XHRcdCAgU2F5IFwmIzM0O3lcJiMzNDsgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFwmIzM0O21cJiMzNDsgdG8gYnVpbGQgYVxuIDIwNDpcdFx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtnX25jbVwmIzM0Oy5cbiAyMDU6XHRcbiAyMDY6XHRjb25maWcgVVNCX0dBREdFVEZTXG4gMjA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtHYWRnZXQgRmlsZXN5c3RlbVwmIzM0O1xuIDIwODpcdFx0aGVscFxuIDIwOTpcdFx0ICBUaGlzIGRyaXZlciBwcm92aWRlcyBhIGZpbGVzeXN0ZW0gYmFzZWQgQVBJIHRoYXQgbGV0cyB1c2VyIG1vZGVcbiAyMTA6XHRcdCAgcHJvZ3JhbXMgaW1wbGVtZW50IGEgc2luZ2xlLWNvbmZpZ3VyYXRpb24gVVNCIGRldmljZSwgaW5jbHVkaW5nXG4gMjExOlx0XHQgIGVuZHBvaW50IEkvTyBhbmQgY29udHJvbCByZXF1ZXN0cyB0aGF0IGRvbiYjMzk7dCByZWxhdGUgdG8gZW51bWVyYXRpb24uXG4gMjEyOlx0XHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxuIDIxMzpcdFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXG4gMjE0Olx0XG4gMjE1Olx0XHQgIFNheSBcJiMzNDt5XCYjMzQ7IHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcJiMzNDttXCYjMzQ7IHRvIGJ1aWxkIGFcbiAyMTY6XHRcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXCYjMzQ7Z2FkZ2V0ZnNcJiMzNDsuXG4gMjE3Olx0XG4gMjE4Olx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXG4gMjE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtGdW5jdGlvbiBGaWxlc3lzdGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNTQ5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbiBzdHVmZi4gVGhlIHNwZWNpZmljIEtjb25maWcgZmlsZSBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpcyBuZXN0bGVkIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnYC4gUmlnaHQsIGxldCYjMzk7cyB0cmFjZSBob3cgdGhpcyBgbGVnYWN5L0tjb25maWdgIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gcGljdHVyZS4gVG8gZG8gdGhhdCwgSSYjMzk7bGwgbmVlZCB0byBoZWFkIHVwIGEgbGV2ZWwgYW5kIGV4YW1pbmUgYGRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnYC4gVGhhdCBzaG91bGQgc2hvdyBtZSB0aGUgaW5jbHVzaW9uIG1lY2hhbmlzbSwgaG93IHRoZSBzeXN0ZW0ga25vd3MgdG8gZXZlbiAqbG9vayogYXQgdGhlIGBsZWdhY3lgIHBvcnRpb24gaW4gdGhlIGZpcnN0IHBsYWNlLiBUaGlzIGlzIHdoZXJlIHRoZSBkZXBlbmRlbmN5IGFuZCBidWlsZCBydWxlcyBzaG91bGQgYmUgZGVmaW5lZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsZWdhY3kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTA4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTA5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUxMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM4NzMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSYjMzk7bSB0aGUgb25lIHRoaW5raW5nIGl0LCBhbmQgdGFpbG9yZWQgZm9yIHNvbWVvbmUgd2hvIGtub3dzIHRoZWlyIHdheSBhcm91bmQga2VybmVsIGNvbmZpZ3VyYXRpb246CgoqKk5hdmlnYXRpbmcgdGhlIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbiBMYW5kc2NhcGUqKgoKUmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbG9va2luZyBhdCBrZXJuZWwgY29uZmlndXJhdGlvbiBhbmQsIGZyb20gd2hhdCBJJiMzOTttIHVuZGVyc3RhbmRpbmcsIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUgaXMgYmVpbmcgaW5jbHVkZWQgc29tZXdoZXJlIHdpdGhpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgcHJhY3RpY2UsIG9mIGNvdXJzZTsgY29uc29saWRhdGluZyByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIGlzIGVmZmljaWVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgbGV0JiMzOTtzIHBpbnBvaW50IHRoZSBkZWZpbml0aW9uIGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzIG9mIHRoZSBgVVNCX0dBREdFVGAgc3ltYm9sLiYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgVVNCIEdhZGdldCBmdW5jdGlvbmFsaXR5IGlzIGNvbnRyb2xsZWQgaW4gdGhlIGNvbmZpZy4gS25vd2luZyB0aGF0IGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgaXMgdGhlIGxpa2VseSBzb3VyY2UsIGl0IG1ha2VzIHNlbnNlIHRvIGdvIHN0cmFpZ2h0IHRoZXJlLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBkZWZpbmVkIGFuZCB3aGF0IG90aGVyIGNvbmZpZyBvcHRpb25zIGl0IG1pZ2h0IGRlcGVuZCBvbi4gRGlnZ2luZyBkZWVwZXIgaW50byB0aGUgZ3V0cyBvZiB0aGUgVVNCIGdhZGdldCBzdWJzeXN0ZW0gaXMgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ3PWlmIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk6Y29uZmlnIFVTQl9HQURHRVRfREVCVUdcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUwLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgbWVzc2FnZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTYyLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NjM6Y29uZmlnIFVTQl9HQURHRVRfVkVSQk9TRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgZGVidWdnaW5nIE1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03Ni1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy03OC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjg4OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVwmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTk4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTk6Y29uZmlnIFVTQl9HQURHRVRfVkJVU19EUkFXXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXHRpbnQgXCYjMzQ7TWF4aW11bSBWQlVTIFBvd2VyIHVzYWdlICgyLTUwMCBtQSlcJiMzNDtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTE3LVx0aW50IFwmIzM0O051bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2NDcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIENvbnNpZGVyYXRpb25zIGZvciBVU0IgR2FkZ2V0IFRlc3RpbmcqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCBzZXR0aW5nIHVwIGEgVVNCIGdhZGdldCwgd2hpY2ggbmF0dXJhbGx5IG1lYW5zIEkmIzM5O2xsIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGJhc2VsaW5lLiBOb3csIHRvIG1ha2UgdGhpcyBlYXNpZXIgaW4gYSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50LCBJJiMzOTttIGFsbW9zdCBjZXJ0YWlubHkgZ29pbmcgdG8gbmVlZCBgVVNCX0RVTU1ZX0hDRGAuIEkmIzM5O3ZlIHVzZWQgdGhhdCBiZWZvcmUsIGFuZCBpdCYjMzk7cyBwcmFjdGljYWxseSBpbmRpc3BlbnNhYmxlIGZvciB0aGlzIHNvcnQgb2YgdGhpbmcuIExldCBtZSBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBVU0JfRFVNTVlfSENEYCBpcyBleGFjdGx5IHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciBhbmQgdGhhdCBldmVyeXRoaW5nIGlzIGluIG9yZGVyLiBJJiMzOTtsbCB0YWtlIGEgbG9vayBhdCBpdCBhbmQgbWFrZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0RVTU1ZX0hDRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXHR0cmlzdGF0ZSBcJiMzNDtEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTAwMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6CgoqKkRpdmluZyBpbnRvIHRoZSBVU0IgRHVtbXkgSENEKioKCkFscmlnaHQsIHNvIGBVU0JfRFVNTVlfSENEYCBsb29rcyBsaWtlIGl0JiMzOTtzIHdvcnRoIGVuYWJsaW5nLiBJJiMzOTttIHRoaW5raW5nIEkgY2FuIGxldmVyYWdlIGl0IGZvciBhIHNwZWNpZmljIHRlc3Qgc2V0dXAsIHBlcmhhcHMgZm9yIHNpbXVsYXRpbmcgVVNCIHRyYWZmaWMgd2l0aG91dCByZWFsIGhhcmR3YXJlLiBOb3csIGJlZm9yZSBJIGp1bXAgaW4gYW5kIHN0YXJ0IGNvbmZpZ3VyaW5nLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgYWxsIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgdGhpcyBkcml2ZXIgYW5kIHRoYXQgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIG1pZ2h0IGJlY29tZSBhY3RpdmUgYXMgYSByZXN1bHQuIEtub3dpbmcgbXkgZGVwZW5kZW5jaWVzIHNhdmVzIGEgbG90IG9mIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLiBJdCYjMzk7cyB0aW1lIHRvIG1hcCBpdCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MjU6XHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxuIDQyNjpcdCNcbiA0Mjc6XHRcbiA0Mjg6XHRjb25maWcgVVNCX0RVTU1ZX0hDRFxuIDQyOTpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbiA0MzA6XHRcdGRlcGVuZHMgb24gVVNCPXkgfHwgKFVTQj1tIFx1MDAyNlx1MDAyNiBVU0JfR0FER0VUPW0pXG4gNDMxOlx0XHRoZWxwXG4gNDMyOlx0XHQgIFRoaXMgaG9zdCBjb250cm9sbGVyIGRyaXZlciBlbXVsYXRlcyBVU0IsIGxvb3BpbmcgYWxsIGRhdGEgdHJhbnNmZXJcbiA0MzM6XHRcdCAgcmVxdWVzdHMgYmFjayB0byBhIFVTQiBcJiMzNDtnYWRnZXQgZHJpdmVyXCYjMzQ7IGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxuIDQzNDpcdFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXG4gNDM1Olx0XHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xuIDQzNjpcdFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXG4gNDM3Olx0XG4gNDM4Olx0XHQgIFRoaXMgbWF5IGhlbHAgaW4gc29tZSBzdGFnZXMgb2YgY3JlYXRpbmcgYSBkcml2ZXIgdG8gZW1iZWQgaW4gYVxuIDQzOTpcdFx0ICBMaW51eCBkZXZpY2UsIHNpbmNlIGl0IGxldHMgeW91IGRlYnVnIHNldmVyYWwgcGFydHMgb2YgdGhlIGdhZGdldFxuIDQ0MDpcdFx0ICBkcml2ZXIgd2l0aG91dCBpdHMgaGFyZHdhcmUgb3IgZHJpdmVycyBiZWluZyBpbnZvbHZlZC5cbiA0NDE6XHRcbiA0NDI6XHRcdCAgU2luY2Ugc3VjaCBhIGdhZGdldCBzaWRlIGRyaXZlciBuZWVkcyB0byBpbnRlcm9wZXJhdGUgd2l0aCBhIGhvc3RcbiA0NDM6XHRcdCAgc2lkZSBMaW51eC1VU0IgZGV2aWNlIGRyaXZlciwgdGhpcyBtYXkgaGVscCB0byBkZWJ1ZyBib3RoIHNpZGVzXG4gNDQ0Olx0XHQgIG9mIGEgVVNCIHByb3RvY29sIHN0YWNrLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBHYWRnZXRGUyBCaW5kKioKCk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQmAuIE1ha2VzIHNlbnNlLiBJJiMzOTtsbCBpbmNsdWRlIGBVU0JfR0FER0VURlNgLCBgVVNCX0dBREdFVGAsIGFuZCBgVVNCX0RVTU1ZX0hDRGAgaW4gdGhlIGNvbmZpZ3VyYXRpb24uIAoKTm93LCB0aGUgcGF0Y2ggdG91Y2hlcyBgZ2FkZ2V0ZnNfYmluZGAsIHdoaWNoIGlzLCBJIGJlbGlldmUsIGRlY2xhcmVkIHN0YXRpYy4gSG1tLCBjYW4gd2UgZnV6eiB0aGlzPyBMZXQgbWUgdGhpbmsuLi4geWVzLCB0aGlzIGxvb2tzIGZ1bmN0aW9uYWxseSBmdXp6ZXItYWJsZS4gRXhjZWxsZW50ISBJIHdpbGwgc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpGb3IgdGhlIGZvY3VzIHN5bWJvbHMsIEkmIzM5O2xsIHNwZWNpZnkgYGdhZGdldGZzX2JpbmRgLiAKClRoZSByZWxldmFudCBFbmFibGVDb25maWdzIGFyZSBnb2luZyB0byBiZSBgVVNCX0dBREdFVEZTYCwgYFVTQl9HQURHRVRgLCBhbmQgYFVTQl9EVU1NWV9IQ0RgLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEkmIzM5O2xsIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYGdhZGdldGZzX2JpbmRgIGlzIHRoZSBvbmx5IHNpZ25pZmljYW50IGZ1bmN0aW9uIGltcGFjdGVkIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMDY6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z2FkZ2V0ZnNfYmluZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTY2Nj1zdGF0aWMgc3RydWN0IGRldl9kYXRhXHRcdCp0aGVfZGV2aWNlO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTY2ODpzdGF0aWMgaW50IGdhZGdldGZzX2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVx0XHRzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTc1Mj1zdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyIGdhZGdldGZzX2RyaXZlciA9IHtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUzLVx0LmZ1bmN0aW9uXHQ9IChjaGFyICopIGRyaXZlcl9kZXNjLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE3NTQ6XHQuYmluZFx0XHQ9IGdhZGdldGZzX2JpbmQsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cdC51bmJpbmRcdFx0PSBnYWRnZXRmc191bmJpbmQsXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE4MDc9ZGV2X2NvbmZpZyAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODgyOlx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4My1cdHNwaW5fdW5sb2NrX2lycSAoXHUwMDI2ZGV2LVx1MDAzZWxvY2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAwNjozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjM3MQoJCQkJCQkJb3V0cHV0OiAxMjcKCQkJCQkJCXRob3VnaHRzOiAxNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBHYWRnZXRmcyBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgcHJpbWFyeSBmdW5jdGlvbiB0aGlzIHBhdGNoIHplcm9lcyBpbiBvbiBpcyBgZ2FkZ2V0ZnNfYmluZGAuIFRoYXQmIzM5O3MgdGhlIG9uZS4gSSYjMzk7bSBnb2luZyB0byBzZXQgbXkgYEZvY3VzU3ltYm9sc2AgYXJyYXkgdG8gaW5jbHVkZSBqdXN0IGBbJiMzNDtnYWRnZXRmc19iaW5kJiMzNDtdYC4KCk5vdywgbGV0JiMzOTtzIHJlY2FwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMuIFRoZSBwYXRjaCBpcyBhbGwgYWJvdXQgdHdlYWtpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYGdhZGdldGZzX2JpbmRgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLiBJdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgaXNzdWUgYnkgZGlyZWN0bHkgZnJlZWluZyB0aGUgcmVxdWVzdCBhbmQgY2xlYW5pbmcgdXAgcG9pbnRlcnMsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYSBjYWxsIHRvIGBnYWRnZXRmc191bmJpbmRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHdpdGhpbiBhIGRyaXZlciB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYWNjZXNzaWJsZSwgd2hldGhlciB0aHJvdWdoIHRoZSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MuCgpCYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBJJiMzOTt2ZSBzZWVuLCBpdCBzZWVtcyB0byBkZXBlbmQgb24gYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYCBiZWluZyBlbmFibGVkLgoKQWxyaWdodCwgd2l0aCBhbGwgdGhhdCBjb25maXJtZWQsIEkmIzM5O20gZ29pbmcgdG8gZ28gYWhlYWQgYW5kIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDA2OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VURlMmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0JfR0FER0VURlMmIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0ZnNfYmluZCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MzMuNzUzOTI5NDk5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIzNzM5MTcxNzgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRGU1wiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTozMy43NTM5MzUyNDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDY5MjU0NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MjAwZDliYjFhNGRmZTlhNTg0ZjBlZGQyMjBkZTE2NmVjNjBiNDU3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMDY6MzU6MzIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXFxuaW5kZXggZDg3YThhYjUxNTEwNy4uMzY1ZjlhYjRkMGQyYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcXG5AQCAtMTcwMCw3ICsxNzAwLDEzIEBAIHN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIGVub21lbTpcXG4tXFx0Z2FkZ2V0ZnNfdW5iaW5kIChnYWRnZXQpO1xcbitcXHRpZiAoZGV2LVxcdTAwM2VyZXEpIHtcXG4rXFx0XFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtXFx1MDAzZWVwMCwgZGV2LVxcdTAwM2VyZXEpO1xcbitcXHRcXHRkZXYtXFx1MDAzZXJlcSA9IE5VTEw7XFxuK1xcdH1cXG4rXFx0Z2FkZ2V0LVxcdTAwM2VlcDAtXFx1MDAzZWRyaXZlcl9kYXRhID0gTlVMTDtcXG4rXFx0ZGV2LVxcdTAwM2VnYWRnZXQgPSBOVUxMO1xcbitcXHRzZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0LCBOVUxMKTtcXG4gXFx0cmV0dXJuIC1FTk9NRU07XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM1OjM0LjkwMTcxNzQxOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyMjU5MTM3MTA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JfR0FER0VURlNcIixcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnYWRnZXRmc19iaW5kXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGVycm9yIGhhbmRsaW5nIHBhdGggaW4gYGdhZGdldGZzX2JpbmRgIGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLCBmaXhpbmcgYSBwb3RlbnRpYWwgaXNzdWUgYnkgbWFudWFsbHkgZnJlZWluZyB0aGUgcmVxdWVzdCBhbmQgY2xlYXJpbmcgcG9pbnRlcnMgaW5zdGVhZCBvZiBjYWxsaW5nIGBnYWRnZXRmc191bmJpbmRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSByZWFjaGFibGUgZHJpdmVyICh2aWEgVVNCIGR1bW15IEhDRCBvciBvdGhlciBVRENzKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzIwMGQ5YmIxYTRkZmU5YTU4NGYwZWRkMjIwZGUxNjZlYzYwYjQ1N1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMDY6MzU6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbmluZGV4IGQ4N2E4YWI1MTUxMDcuLjM2NWY5YWI0ZDBkMmMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcbisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY1xuQEAgLTE3MDAsNyArMTcwMCwxMyBAQCBzdGF0aWMgaW50IGdhZGdldGZzX2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbiBcdHJldHVybiAwO1xuIFxuIGVub21lbTpcbi1cdGdhZGdldGZzX3VuYmluZCAoZ2FkZ2V0KTtcbitcdGlmIChkZXYtXHUwMDNlcmVxKSB7XG4rXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4rXHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuK1x0fVxuK1x0Z2FkZ2V0LVx1MDAzZWVwMC1cdTAwM2Vkcml2ZXJfZGF0YSA9IE5VTEw7XG4rXHRkZXYtXHUwMDNlZ2FkZ2V0ID0gTlVMTDtcbitcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xuIFx0cmV0dXJuIC1FTk9NRU07XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6MzQuOTAxNzE4ODI5WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODMxOTYwMTI3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqSW52ZXN0aWdhdGluZyBhIFVTQiBHYWRnZXRmcyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCdzIHBsYXlpbmcgd2l0aCBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCwgc3BlY2lmaWNhbGx5IHRoZSBlcnJvciBoYW5kbGluZyBpbiBgZ2FkZ2V0ZnNfYmluZGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkludGVyZXN0aW5nLCB0aGV5J3JlIG5vdCB1c2luZyB0aGUgc3RhbmRhcmQgYGdhZGdldGZzX3VuYmluZChnYWRnZXQpYCBpbiB0aGUgZXJyb3IgcGF0aC5cIiBJbnN0ZWFkLCB0aGV5J3ZlIG9wdGVkIGZvciBhIG1vcmUgZGlyZWN0IGFwcHJvYWNoOiBmcmVlaW5nIHRoZSByZXF1ZXN0IG1hbnVhbGx5IGFuZCBjbGVhcmluZyBwb2ludGVycy5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiBraWNrcyBpbjogVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSd2ZSBieXBhc3NlZCB0aGUgdHlwaWNhbCB1bmJpbmRpbmcgcHJvY2Vzcy4gSXMgdGhlcmUgYSBzcGVjaWZpYyByZWFzb24/IFBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnM/IE9wdGltaXphdGlvbiBjb25jZXJucz8gV2hhdGV2ZXIgdGhlIG1vdGl2YXRpb24sIGEgZGVlcCBkaXZlIGludG8gdGhlIGNvbnRleHQgaXMgd2FycmFudGVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBjb2RlIHN1cnJvdW5kaW5nIHRoZSBgZ2FkZ2V0ZnNfYmluZGAgZnVuY3Rpb24uIEkgbmVlZCB0byB0cmFjZSB0aGUgY29udHJvbCBmbG93IGFuZCB1bmRlcnN0YW5kIHRoZSBzdXJyb3VuZGluZyBsb2dpYyB0byBncmFzcCB0aGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIG1hbnVhbCBtZW1vcnkgbWFuYWdlbWVudC4gSSdtIGtlZW4gdG8gZGlzc2VjdCB0aGlzIGNoYW5nZSB0byBncmFzcCBpdHMgaW1wYWN0IGFuZCBhc3Nlc3MgaXRzIGNvcnJlY3RuZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDk3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODksIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo0My4yMjEzMjMyMTVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA5MjA3ODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfYmluZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXFx0LmZ1bmN0aW9uXFx0PSAoY2hhciAqKSBkcml2ZXJfZGVzYyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcXHQuYmluZFxcdFxcdD0gZ2FkZ2V0ZnNfYmluZCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cXHQudW5iaW5kXFx0XFx0PSBnYWRnZXRmc191bmJpbmQsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XFx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODMtXFx0c3Bpbl91bmxvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NDMuMjgyMjUwNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDA3NjEzMzczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIGBnYWRnZXRmc19iaW5kYCBQYXRjaCoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGdhZGdldGZzX2JpbmRgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGlzbid0IGp1c3QgYSByYW5kb20gZnVuY3Rpb247IGl0J3MgYSBrZXkgcGFydCBvZiB0aGUgZ2FkZ2V0ZnMgYmluZGluZyBwcm9jZXNzLiBXaGF0IGV4YWN0bHkgaXMgYmVpbmcgY2hhbmdlZCBoZXJlLCBhbmQgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgVVNCIGRldmljZSBlbXVsYXRpb24/XG5cblRoZSBmaXJzdCB0aGluZyBJIHdhbnQgdG8gZHJpbGwgZG93biBvbiBpcyB0aGUgY29uZmlndXJhdGlvbi4gKldoeSogaXMgdGhpcyBjb2RlIHBhdGggYmVpbmcgbW9kaWZpZWQ/IFdoYXQgY29uZmlnIG9wdGlvbnMsIGRldmljZSB0cmVlIHNldHRpbmdzLCBvciBidWlsZCBmbGFncyBhcmUgdHJpZ2dlcmluZyB0aGlzIGNvZGUgdG8gYmUgY29tcGlsZWQgaW4gdGhlIGZpcnN0IHBsYWNlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBkZWNpc2lvbnMgYW5kIHVuZGVybHlpbmcgdXNlIGNhc2VzIHRoYXQgZGljdGF0ZSB3aGVuIGBnYWRnZXRmc19iaW5kYCBpcyBjYWxsZWQuIElzIGl0IGEgc3BlY2lmaWMgY29udHJvbGxlciB0eXBlLCBhIGNlcnRhaW4gZ2FkZ2V0IHNldHVwLCBvciBhIGZlYXR1cmUgZmxhZz8gQSBjaGFuZ2UgaGVyZSBjb3VsZCBpbXBhY3QgYSB3aWRlIHJhbmdlIG9mIGRldmljZXMgYW5kIGNvbmZpZ3VyYXRpb25zLCBhbmQgSSBuZWVkIHRvIGtub3cgd2hpY2ggb25lcy4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgYnVpbGQgaXMgdGhlIGZpcnN0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo0Ny42ODk4NjU2ODNaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwMDQxMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFVTQl9HQURHRVRGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo0Ny43NDM4OTE2NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NzY1OTM4NzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlVTQl9HQURHRVRGUyBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgcmVhbGx5IG5lZWQgdG8gZHJpbGwgZG93biBhbmQgdmVyaWZ5IHRoZSBjdXJyZW50IGRlcGVuZGVuY2llcyBmb3IgYFVTQl9HQURHRVRGU2AuIEl0J3MgY3J1Y2lhbCwgYXMgYWx3YXlzLCB0byBlbnN1cmUgdGhhdCB0aGUgZm91bmRhdGlvbiBpcyBzb2xpZCBiZWZvcmUgSSBzdGFydCBidWlsZGluZyBhbnl0aGluZyBvbiB0b3Agb2YgaXQuIEknbSBpbWFnaW5pbmcgYSBjb21wbGV4IHdlYiBvZiBjb25maWd1cmF0aW9ucywgZHJpdmVycywgYW5kIHVuZGVybHlpbmcgaGFyZHdhcmUgYXNzdW1wdGlvbnMgaGVyZS4gVGhlIHBvdGVudGlhbCBmb3IgcmVncmVzc2lvbnMgb3IgdW5mb3Jlc2VlbiBjb25mbGljdHMgaXMgYWx3YXlzIHByZXNlbnQsIGVzcGVjaWFsbHkgaW4gYW4gYXJlYSBhcyB0aWdodGx5IGNvdXBsZWQgYXMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5LiBJJ20gZ29pbmcgdG8gd2FudCB0byBtYWtlIHN1cmUgSSBrbm93ICpleGFjdGx5KiB3aGF0J3MgcmVxdWlyZWQsIGFueSBrbm93biBsaW1pdGF0aW9ucywgYW5kIGhvdyBhbnkgcmVjZW50IGtlcm5lbCBjaGFuZ2VzIG1pZ2h0IGltcGFjdCB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGUgd2VhayBwb2ludHMgYXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTIuMzIwNDg3MzgxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MjA1ODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlVTQl9HQURHRVRGU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjA1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMDY6Y29uZmlnIFVTQl9HQURHRVRGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMDctXFx0dHJpc3RhdGUgXFxcIkdhZGdldCBGaWxlc3lzdGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo1Mi4zNzU2OTg0OTdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTM0MTUyNzUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBVU0JfR0FER0VURlNgIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIGdldCBhIGZpcm0gZ3Jhc3Agb24gdGhlIGRlcGVuZGVuY2llcyBhc3NvY2lhdGVkIHdpdGggYFVTQl9HQURHRVRGU2AuIEkgY2FuJ3QganVzdCBhc3N1bWUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIE15IGludHVpdGlvbiBzYXlzIHRoZXJlJ3MgbGlrZWx5IGEgd2hvbGUgY2hhaW4gb2YgcmVsYXRlZCBrZXJuZWwgbW9kdWxlcyBhbmQgY29uZmlndXJhdGlvbnMgdGhhdCB0aGlzIHNldHRpbmcgdHJpZ2dlcnMgb3IgcmVxdWlyZXMuIEkgbmVlZCB0byBrbm93IGV4YWN0bHkgd2hhdCdzIHB1bGxlZCBpbiwgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSBmb3IgdGhlIGJ1aWxkLCBhbmQgcG90ZW50aWFsIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHN1YnN5c3RlbXMuIEkgbmVlZCBhIGNsZWFyIHZpZXcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZ3JhcGguIE9ubHkgdGhlbiBjYW4gSSBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIGNvdXJzZSBvZiBhY3Rpb24uIEkgY2FuJ3Qgb3BlcmF0ZSBvbiBhc3N1bXB0aW9uczsgSSBuZWVkIGRhdGEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo1NS41MDk4NTM4MDlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzAwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXHQgIG9mIHNldmVyYWwgZXRoZXJuZXQgZnJhbWVzIGludG8gb25lIFVTQiB0cmFuc2ZlciBhbmQgZGlmZmVyZW50XFxuIDIwMTpcXHRcXHQgIGFsaWdubWVudCBwb3NzaWJpbGl0aWVzLlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuIDIwNDpcXHRcXHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFxcXCJnX25jbVxcXCIuXFxuIDIwNTpcXHRcXG4gMjA2OlxcdGNvbmZpZyBVU0JfR0FER0VURlNcXG4gMjA3OlxcdFxcdHRyaXN0YXRlIFxcXCJHYWRnZXQgRmlsZXN5c3RlbVxcXCJcXG4gMjA4OlxcdFxcdGhlbHBcXG4gMjA5OlxcdFxcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBmaWxlc3lzdGVtIGJhc2VkIEFQSSB0aGF0IGxldHMgdXNlciBtb2RlXFxuIDIxMDpcXHRcXHQgIHByb2dyYW1zIGltcGxlbWVudCBhIHNpbmdsZS1jb25maWd1cmF0aW9uIFVTQiBkZXZpY2UsIGluY2x1ZGluZ1xcbiAyMTE6XFx0XFx0ICBlbmRwb2ludCBJL08gYW5kIGNvbnRyb2wgcmVxdWVzdHMgdGhhdCBkb24ndCByZWxhdGUgdG8gZW51bWVyYXRpb24uXFxuIDIxMjpcXHRcXHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxcbiAyMTM6XFx0XFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gMjE2OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdhZGdldGZzXFxcIi5cXG4gMjE3OlxcdFxcbiAyMTg6XFx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiRnVuY3Rpb24gRmlsZXN5c3RlbVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTUuNTA5OTI1Nzc5WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODg5OTQ3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEaXZpbmcgaW50byBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBJJ20gc2VlaW5nIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIHdoYXRldmVyIGl0IGlzLCBhbmQgSSBpbW1lZGlhdGVseSBrbm93IHRoYXQgaXRzIGF2YWlsYWJpbGl0eSBpcyBjaGFpbmVkIHRvIGBVU0JfR0FER0VUYC4gVGhhdCdzIGJlY2F1c2UgdGhlIEtjb25maWcgZmlsZSBmb3IgbGVnYWN5IGdhZGdldCBkcml2ZXJzLCBsb2NhdGVkIGluIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgLCBpcyB0aGUgdXN1YWwgcGxhY2UgZm9yIHRoZXNlIHNvcnRzIG9mIGRlcGVuZGVuY2llcy4gSSd2ZSB3b3JrZWQgd2l0aCB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbSBsb25nIGVub3VnaCB0byBrbm93IHRoZSBsYXlvdXQgaW5zdGluY3RpdmVseS4gVGhlIEtjb25maWcgZmlsZXMgYXJlIHRoZSBzdGFuZGFyZCBwbGFjZSB0byBjaGVjayBmb3IgdGhlIG9wdGlvbnMuXG5cbk15IG5leHQgc3RlcCBpcyB0byBvcGVuIHVwIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlYC4gSSB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdGhpcyBwYXJ0aWN1bGFyIGVsZW1lbnQsIHdoYXRldmVyIGl0IGlzLCBmaXRzIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBvYmplY3QgZmlsZXMgYXJlIGNvbnN0cnVjdGVkLCB3aGF0IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGlzIHVzZWQsIGFuZCBob3cgYFVTQl9HQURHRVRgIGFjdHVhbGx5IGluZmx1ZW5jZXMgdGhlIGluY2x1c2lvbiAob3IgZXhjbHVzaW9uKSBvZiBjb2RlLiBCYXNpY2FsbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgY29uZmlndXJhdGlvbiwgdGhlIHNvdXJjZSBjb2RlLCBhbmQgdGhlIGZpbmFsIGNvbXBpbGVkIGJpbmFyeS4gU2VlaW5nIHRoZSBtYWtlZmlsZSB3aWxsIGdpdmUgbWUgdGhhdCBjb250ZXh0LiBGcm9tIHRoZXJlLCBJJ2xsIGJlIGluIGEgbXVjaCBiZXR0ZXIgcG9zaXRpb24gdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZSBvcHRpb24gb24gdGhlIG92ZXJhbGwgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDc1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNTo1OS43OTg5MjM1MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxMzE5MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlPTE0PWdfbWlkaS15XFx0XFx0XFx0Oj0gZ21pZGkub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGU6MTU6Z2FkZ2V0ZnMteVxcdFxcdFxcdDo9IGlub2RlLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlLTE2LWdfbWFzc19zdG9yYWdlLXlcXHRcXHQ6PSBtYXNzX3N0b3JhZ2Uub1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfVVNCX0VUSClcXHRcXHQrPSBnX2V0aGVyLm9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlOjMxOm9iai0kKENPTkZJR19VU0JfR0FER0VURlMpXFx0Kz0gZ2FkZ2V0ZnMub1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGUtMzItb2JqLSQoQ09ORklHX1VTQl9GVU5DVElPTkZTKVxcdCs9IGdfZmZzLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzU6NTkuODU0MDU3OTY2WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3ODYzNjY5NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0RlMgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0aGUgY29yZSBjb25maWd1cmF0aW9uIGl0ZW0gYXBwZWFycyB0byBiZSBgQ09ORklHX1VTQl9HQURHRVRGU2AuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlIG1vZGlmaWNhdGlvbiBtYWRlIHRvIHRoZSBgZ2FkZ2V0ZnNfYmluZGAgZnVuY3Rpb24uIFRoYXQncyBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gSW1tZWRpYXRlbHksIEknbSB0aGlua2luZywgXCJJcyB0aGlzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cz9cIiBCZWNhdXNlIGxldCdzIGZhY2UgaXQsIGEgbG90IG9mIGRldmVsb3BtZW50IHRoZXNlIGRheXMgaGFwcGVucyB3aXRoaW4gVk1zLiBGb3J0dW5hdGVseSwgSSByZWNhbGwgdGhhdCBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgKmlzKiBlbXVsYXRlZCBpbiBzb21lIHZpcnR1YWxpemF0aW9uIHNldHVwcy4gVGhpbmsgZHVtbXlfaGNkIGFuZCBzaW1pbGFyIGFic3RyYWN0aW9ucy4gU28gdGhhdCdzIGdvb2Q7IGl0J3MgcG90ZW50aWFsbHkgaW1wYWN0ZnVsIGFjcm9zcyBhIHdpZGVyIHJhbmdlIG9mIHNjZW5hcmlvcy5cblxuTmV4dCwgSSdtIHRyeWluZyB0byBkZXRlcm1pbmUgdGhlIHByYWN0aWNhbCBpbXBhY3QuIEl0IHNlZW1zIHRoZSBwYXRjaCBpcyBhbHRlcmluZyB0aGUgd2F5IGVycm9yIGhhbmRsaW5nIHdvcmtzLiBUaGF0J3MgYSBnb29kIHBsYWNlIHRvIGJlLCB0aGF0IGNhbiBsZWFkIHRvIHN1YnRsZSBidXQgc2lnbmlmaWNhbnQgc3RhYmlsaXR5IGltcHJvdmVtZW50cy5cblxuTm93LCBsZXQgbWUgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbCBoZXJlOiBgZ2FkZ2V0ZnNfYmluZGAuIFdhaXQgYSBzZWNvbmTigKYgaXNuJ3QgdGhhdCBmdW5jdGlvbiAqc3RhdGljKj8gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0LiBMZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgdGhhdCdzIHRoZSBjYXNlLiBJdCdzIGNydWNpYWwsIGJlY2F1c2UgaWYgaXQncyBzdGF0aWMsIGl0J3Mgc2NvcGUgaXMgaW5jcmVkaWJseSBsaW1pdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjA2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjA0LjY0MDQyNzQ0M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDIzMzc5ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfYmluZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXFx0LmZ1bmN0aW9uXFx0PSAoY2hhciAqKSBkcml2ZXJfZGVzYyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcXHQuYmluZFxcdFxcdD0gZ2FkZ2V0ZnNfYmluZCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cXHQudW5iaW5kXFx0XFx0PSBnYWRnZXRmc191bmJpbmQsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XFx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODMtXFx0c3Bpbl91bmxvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6MDQuNjgyNzY5NTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwMTgxMTY0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBib2xkZWQgaGVhZGVyIGFzIHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBgZ2FkZ2V0ZnNgIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5BbHJpZ2h0LCBzbyBgZ2FkZ2V0ZnNfYmluZGAgaXMgZGVmaW5pdGl2ZWx5IGEgc3RhdGljIGZ1bmN0aW9uLiBObyBzdXJwcmlzZXMgdGhlcmUuIEl0J3MgdXNlZCBhcyB0aGUgYC5iaW5kYCBtZW1iZXIgd2l0aGluIHRoZSBgZ2FkZ2V0ZnNfZHJpdmVyYCBzdHJ1Y3R1cmUuIE15IG5leHQgdGhvdWdodCBpcywgd2hlcmUgZXhhY3RseSBpcyB0aGF0IGBnYWRnZXRmc19kcml2ZXJgIHN0cnVjdHVyZSBnZXR0aW5nIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWw/IFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoZSBkcml2ZXIgc3RydWN0dXJlIGl0c2VsZiB0byB1bmRlcnN0YW5kIGhvdyBpdCdzIGludGVncmF0ZWQgaW50byB0aGUgbGFyZ2VyIFVTQiBzdWJzeXN0ZW0uIEknbSBhZnRlciB0aGUgcmVnaXN0cmF0aW9uIHBvaW50LCB0aGF0J3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTYsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjoxMi4xODQ1ODQxNzdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1ODY4NTkwMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJnYWRnZXRmc19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTgwPWVwMF9mYXN5bmMgKGludCBmLCBzdHJ1Y3QgZmlsZSAqZmQsIGludCBvbilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTg4OnN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTg5LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTExOTE9ZGV2X3JlbGVhc2UgKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTk3LVxcdGlmIChkZXYtXFx1MDAzZWdhZGdldF9yZWdpc3RlcmVkKSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExOTg6XFx0XFx0dXNiX2dhZGdldF91bnJlZ2lzdGVyX2RyaXZlciAoXFx1MDAyNmdhZGdldGZzX2RyaXZlcik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTExOTktXFx0XFx0ZGV2LVxcdTAwM2VnYWRnZXRfcmVnaXN0ZXJlZCA9IGZhbHNlO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MzI9Z2FkZ2V0ZnNfc3VzcGVuZCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNzUyOnN0YXRpYyBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgZ2FkZ2V0ZnNfZHJpdmVyID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzUzLVxcdC5mdW5jdGlvblxcdD0gKGNoYXIgKikgZHJpdmVyX2Rlc2MsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODQtXFx0aWYgKGRldi1cXHUwMDNlaHNfY29uZmlnKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg1OlxcdFxcdGdhZGdldGZzX2RyaXZlci5tYXhfc3BlZWQgPSBVU0JfU1BFRURfSElHSDtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTg4Ni1cXHRlbHNlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODc6XFx0XFx0Z2FkZ2V0ZnNfZHJpdmVyLm1heF9zcGVlZCA9IFVTQl9TUEVFRF9GVUxMO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xODg4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODg5OlxcdHZhbHVlID0gdXNiX2dhZGdldF9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmdhZGdldGZzX2RyaXZlcik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4OTAtXFx0aWYgKHZhbHVlICE9IDApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6MTIuNDQzMjc1NzY5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDI0NDcxNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBEZXZpY2UgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgY3J1Y2lhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiwgd2hhdGV2ZXIgaXQgaXMsIGlzIHJlZ2lzdGVyZWQsIHByb2JhYmx5IGFzIHBhcnQgb2YgdGhlIHN5c3RlbSBpbml0aWFsaXphdGlvbi4gSXQgc2VlbXMgbGlrZSB0aGUgZW50cnkgcG9pbnQgZm9yIHRoaXMgaXMgaW4gYGRldl9jb25maWdgLiBUaGF0J3MgdGhlIGtleTogYGRldl9jb25maWdgIGlzIHRoZSBkZXNpZ25hdGVkIHdyaXRlIGhhbmRsZXIgZm9yIHRoZSBkZXZpY2UgZmlsZS4gSXQgaGFuZGxlcyBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gd3JpdGVzLiBSaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBkZXZfY29uZmlnYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgaGFuZGxlZCwgdGhlIGNvbnRleHQsIGFuZCBhbnkgYXNzb2NpYXRlZCBlcnJvciBoYW5kbGluZy4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjoxNi41NDU3MjYxNTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzMzMyMDQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldl9jb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01NS0gKlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo1NjogKiAtIEZpcnN0LCBkZXZfY29uZmlnKCkgaXMgY2FsbGVkIHdoZW4gL2Rldi9nYWRnZXQvJENISVAgaXMgY29uZmlndXJlZFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01Ny0gKiAgIChieSB3cml0aW5nIGNvbmZpZ3VyYXRpb24gYW5kIGRldmljZSBkZXNjcmlwdG9ycykuICBBZnRlcndhcmRzIGl0XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNj1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODA3OmRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZXAwX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk0MC1cXHQucmVhZCA9XFx0XFx0ZXAwX3JlYWQsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE5NDE6XFx0LndyaXRlID1cXHRkZXZfY29uZmlnLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTQyLVxcdC5mYXN5bmMgPVxcdGVwMF9mYXN5bmMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjE2LjYzOTA2NzU3OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjEyMjUwOTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR2FkZ2V0RlMgRHJpdmVyIFN0cnVjdHVyZSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBkZXZfY29uZmlnYCBpcyB0aGUgY3JpdGljYWwgd3JpdGUgaGFuZGxlciBmb3IgYGVwMF9vcGVyYXRpb25zYC4gQnV0IGlzIGBkZXZfY29uZmlnYCBzdGF0aWM/IFllcywgaXQgYXBwZWFycyB0byBiZS4gVGhhdCBsaW1pdHMgbXkgaW5pdGlhbCB0YXJnZXQuIEFuZCB3aGF0IGFib3V0IGBlcDBfb3BlcmF0aW9uc2A/IFRoYXQgZ2V0cyB1c2VkIHdoZW4gd2Ugb3BlbiB0aGUgZ2FkZ2V0ZnMgZGV2aWNlLCB3aGljaCBpc24ndCB0aGUgbW9zdCBkeW5hbWljIHBvaW50IG9mIGludGVyYWN0aW9uLlxuXG5JIG5lZWQgdG8gZmluZCBhIG5vbi1zdGF0aWMgZnVuY3Rpb24gdG8gZm9jdXMgb24gZm9yIGRlZXBlciBpbnNwZWN0aW9uLiBMZXQgbWUgdGhpbmsuLi4gQWghIGBnYWRnZXRmc19iaW5kYCDigJMgdGhhdCdzIGNhbGxlZCBieSB0aGUgVVNCIGdhZGdldCBjb3JlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IHdoZW4gYSBkcml2ZXIgcmVnaXN0ZXJzLiBTbyB0aGUga2V5IGVudHJ5IHBvaW50cyBhcmUgZ29pbmcgdG8gYmUgYHVzYl9nYWRnZXRfcmVnaXN0ZXJfZHJpdmVyYCBvciBgdXNiX2dhZGdldF9wcm9iZV9kcml2ZXJgLiBJIGtub3cgSSBjYW4gZmluZCB0aGlzIGNvcmUgZnVuY3Rpb24gaW4gdGhlIGxpbnV4IGtlcm5lbCBzb3VyY2UuXG5cbkJ1dCBJIHJlYWxseSB3YW50IHRvIGZvY3VzIHNwZWNpZmljYWxseSBvbiB0aGUgZ2FkZ2V0ZnMgY29tcG9uZW50LiBMZXQncyBzZWUuLi4gSXMgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBpcyBhY2Nlc3NpYmxlIHdpdGhpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYD8gVGhhdCBzZWVtcyBsaWtlIHRoZSByaWdodCBwbGFjZSB0byBiZWdpbiB0aGlzIHNlYXJjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6Njc3OSwiT3V0cHV0VG9rZW5zIjo1MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjoyMS44NTEzMjEzMTZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk0MjkwMDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5bYS16QS1aX11bYS16QS1aMC05X10qXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz01Nzk9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NTgwOmVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTU4MS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NjM4PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjYzOTplcF93cml0ZV9pdGVyKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy02NDAte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMjA9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGdhZGdldGZzX3R5cGUgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNS19O1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMTI2Ok1PRFVMRV9BTElBU19GUyhcXFwiZ2FkZ2V0ZnNcXFwiKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEyNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6MjEuOTQ1NjE2Mzk5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MjAwMzM5NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhbiBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBFbnRyeSBQb2ludHMqKlxuXG5BbHJpZ2h0LCBteSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gaG93IHRoaXMgcGllY2Ugb2YgY29kZSAqYmVnaW5zKiBpdHMgZXhlY3V0aW9uIG9yIGhvdyBpdCdzIGRlc2lnbmVkIHRvIGJlIHVzZWQuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50cy4gSSdtIGdvaW5nIHRvIHNjYW4gdGhlIGNvZGUgZm9yIHR3byB0aGluZ3M6IEZpcnN0LCBhbnkgY2xlYXJseSBkZWZpbmVkICpleHBvcnRlZCBmdW5jdGlvbnMqIOKAkyB0aGUgZnVuY3Rpb25zIHRoYXQgYXJlIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gVGhlc2UgYXJlIG15IHByaW1lIHN1c3BlY3RzIGZvciB1c2VyLWZhY2luZyBmdW5jdGlvbmFsaXR5IG9yIGNvcmUgb3BlcmF0aW9ucy4gU2Vjb25kLCBJJ2xsIGJlIGxvb2tpbmcgY2xvc2VseSBmb3IgYSAqbW9kdWxlIGluaXRpYWxpemF0aW9uKiByb3V0aW5lLCBwZXJoYXBzIHNvbWV0aGluZyB0aGF0IHNldHMgdXAgaW50ZXJuYWwgc3RhdGUgb3IgcmVnaXN0ZXJzIGNhbGxiYWNrcy4gT2Z0ZW4gYSBtb2R1bGUgd2lsbCBoYXZlIHNvbWUgc29ydCBvZiBpbml0aWFsaXplci4gVGhlc2UgdHlwZXMgb2YgZnVuY3Rpb25zIGFyZSBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgbW9kdWxlIGludGVncmF0ZXMgd2l0aCB0aGUgYnJvYWRlciBzeXN0ZW0uIEVzc2VudGlhbGx5LCBJJ20gdHJ5aW5nIHRvIGdldCBhIHF1aWNrIG1hcCBvZiB0aGUgY29kZSdzIGJvdW5kYXJpZXMgYW5kIGluaXRpYWwgc2V0dXAgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBtb3JlIGdyYW51bGFyIGRldGFpbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MDIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjozOC4xNDU5NTg1NDNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MTU4NzYyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfaW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzA9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTM5LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0MDptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjM4LjYzNzU1NjYxOFoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTY0MzczNjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgYGlub2RlLmNgIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyB0aGUgTGVnYWN5IFVTQiBHYWRnZXQgSW5vZGUgT3BlcmF0aW9ucyoqXG5cbkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyBJJ20gZG9pbmcgaXMgemVyb2luZyBpbiBvbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYC4gVGhhdCB0ZWxscyBtZSByaWdodCBhd2F5IHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgbGVnYWN5IFVTQiBnYWRnZXQgaW5mcmFzdHJ1Y3R1cmUsIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGZpbGUgc3lzdGVtLiBJbiBvdGhlciB3b3JkcywgaG93IHRoZSBMaW51eCBrZXJuZWwgcHJlc2VudHMgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IGFzIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGhvdyB1c2Vyc3BhY2UgaW50ZXJhY3RzIHdpdGggaXQuIFRoaXMgaXMgZnVuZGFtZW50YWwgZm9yIGFueSBVU0IgZ2FkZ2V0LCBhcyBpdCdzIHRoZSBpbnRlcmZhY2UgdGhhdCB1c2Vyc3BhY2UgcHJvZ3JhbXMgdXNlIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgZGV2aWNlLlxuXG5JJ20gdGhpbmtpbmcgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IHRoZSBzeXN0ZW0gaXMgc2V0IHVwLiBXaGF0IGFyZSB0aGUga2V5IGBpbm9kZWAgb3BlcmF0aW9ucyBkZWZpbmVkIGhlcmU/IGBjcmVhdGVgLCBgb3BlbmAsIGByZWxlYXNlYCwgYHJlYWRgLCBgd3JpdGVgLCBgZ2V0YXR0cmAsIGBzZXRhdHRyYCwgZXRjLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGUgZGV2aWNlLXNwZWNpZmljIGRhdGEgYW5kIGZ1bmN0aW9ucyBhcmUgYm91bmQgdG8gYSBmaWxlLXN5c3RlbSBpbnRlcmZhY2UuIFdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkLCBhbmQgaG93IGlzIHNlY3VyaXR5IGNvbnNpZGVyZWQ/XG5cbkFyZSB0aGV5IGhhbmRsaW5nIHRoZSBkZXZpY2Utc3BlY2lmaWMgcmVxdWVzdHMsIG9yIGFyZSB0aGVzZSBqdXN0IHdyYXBwZXJzLCBkZWZlcnJpbmcgdG8gb3RoZXIgVVNCIGdhZGdldCBkcml2ZXJzPyBIb3cgaXMgc3RhdGUgbWFuYWdlZD8gSG93IGlzIGNvbmN1cnJlbmN5IGhhbmRsZWQsIGNvbnNpZGVyaW5nIHRoYXQgbXVsdGlwbGUgdXNlcnNwYWNlIHByb2dyYW1zIGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBnYWRnZXQgc2ltdWx0YW5lb3VzbHk/IEFyZSB0aGVyZSByYWNlIGNvbmRpdGlvbnMgb3IgbG9ja2luZyBpc3N1ZXMgSSBzaG91bGQgYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93cyBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgbHVya2luZyBpbiB0aGlzIGNvZGU/IFRoaXMgaXMgd2hlcmUgdGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLiBXaGF0IGVycm9yIGhhbmRsaW5nIGlzIHRoZXJlLCBhbmQgaG93IHJvYnVzdCBpcyBpdD9cblxuVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gZnVsbHkgZ3Jhc3AgdGhlIGxpZmVjeWNsZSBvZiBob3cgYSB1c2VyLWxldmVsIHByb2dyYW0gaW50ZXJhY3RzIHdpdGggdGhlIFVTQiBnYWRnZXQgZGV2aWNlLCBmcm9tIGZpbGUgb3BlbmluZyB0byBkYXRhIHRyYW5zZmVyLCBhbmQgaG93IHRoYXQgdHJhbnNsYXRlcyB0byB0aGUgaGFyZHdhcmUuIFRoYXQncyB0aGUgY29yZSBvZiBteSBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzg2MywiT3V0cHV0VG9rZW5zIjo3MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM2OjQzLjIwMTkzMzAxMVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM4MTA0NDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYyBbYS16QS1aX11bYS16QS1aMC05X10qIFthLXpBLVpfXVthLXpBLVowLTlfXSpcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTgxPU1PRFVMRV9MSUNFTlNFIChcXFwiR1BMXFxcIik7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTgyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MzpzdGF0aWMgaW50IGVwX29wZW4oc3RydWN0IGlub2RlICosIHN0cnVjdCBmaWxlICopO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04NC1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0zODE9ZXBfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQwMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NDAyOnN0YXRpYyBsb25nIGVwX2lvY3RsKHN0cnVjdCBmaWxlICpmZCwgdW5zaWduZWQgY29kZSwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDAzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz00MzY9c3RydWN0IGtpb2NiX3ByaXYge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NDQ4OnN0YXRpYyBpbnQgZXBfYWlvX2NhbmNlbChzdHJ1Y3Qga2lvY2IgKmlvY2IpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDY2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0Njc6c3RhdGljIHZvaWQgZXBfdXNlcl9jb3B5X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTQ2OC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDg3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo0ODg6c3RhdGljIHZvaWQgZXBfYWlvX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNDg5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01MjYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjUyNzpzdGF0aWMgc3NpemVfdCBlcF9haW8oc3RydWN0IGtpb2NiICppb2NiLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01MjgtXFx0XFx0ICAgICAgc3RydWN0IGtpb2NiX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTgwPWVwX3JlYWRfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqdG8pXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjM1LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2MzY6c3RhdGljIHNzaXplX3QgZXBfY29uZmlnKHN0cnVjdCBlcF9kYXRhICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjM3LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc5Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc5MzpzdGF0aWMgaW50IGlzX3ZhbGlkX2NvbmZpZyhzdHJ1Y3QgdXNiX2NvbmZpZ19kZXNjcmlwdG9yICpjb25maWcsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3OTQtXFx0XFx0dW5zaWduZWQgaW50IHRvdGFsKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIwMjE9Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwODgtLyogXFxcIm1vdW50IC10IGdhZGdldGZzIHBhdGggL2Rldi9nYWRnZXRcXFwiIGVuZHMgdXAgaGVyZSAqL1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyMDg5OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfZ2V0X3RyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDkwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMDk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZnNfY29udGV4dF9vcGVyYXRpb25zIGdhZGdldGZzX2NvbnRleHRfb3BzID0ge1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIwOTctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwOTg6c3RhdGljIGludCBnYWRnZXRmc19pbml0X2ZzX2NvbnRleHQoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDk5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6NDMuMjU1NzQ4OTc3WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNzAyMjQ2NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jYCBmb3IgTm9uLVN0YXRpYyBGdW5jdGlvbnMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNgLiBNeSBpbW1lZGlhdGUgZ29hbCBoZXJlIGlzIHRvIGlkZW50aWZ5IGFuZCB1bmRlcnN0YW5kIHRoZSBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhpcyBmaWxlLiBUaGUgXCJsZWdhY3lcIiBkZXNpZ25hdGlvbiB0ZWxscyBtZSB3ZSdyZSBsaWtlbHkgZGVhbGluZyB3aXRoIG9sZGVyIFVTQiBnYWRnZXQgaW1wbGVtZW50YXRpb24gY29kZSwgd2hpY2ggYWx3YXlzIG1ha2VzIG1lIGEgbGl0dGxlIGNhdXRpb3VzIOKAkyBleHBlY3RpbmcgcG9zc2libHkgbGVzcyBtb2R1bGFyIGRlc2lnbiBhbmQgcGVyaGFwcyBtb3JlIGdsb2JhbCBzdGF0ZSBkZXBlbmRlbmNpZXMuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIHF1aWNrbHkgc2NhbiBmb3IgYW55dGhpbmcgdGhhdCBpc24ndCBkZWNsYXJlZCBgc3RhdGljYC4gTm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlLCBieSBkZWZpbml0aW9uLCB2aXNpYmxlIG91dHNpZGUgdGhlIGZpbGUgc2NvcGUuIEknbGwgbmVlZCB0byBhc3Nlc3MgaG93IHRoZXNlIGV4cG9ydGVkIGZ1bmN0aW9ucyBhcmUgdXRpbGl6ZWQsIHRoaW5raW5nIHBhcnRpY3VsYXJseSBhYm91dCB0aGUgcG90ZW50aWFsIGZvciBleHRlcm5hbCBpbnRlcmFjdGlvbnMgYW5kIHRoZWlyIGltcGxpY2F0aW9ucyBvbiB0aGUgZHJpdmVyJ3Mgb3ZlcmFsbCBiZWhhdmlvci4gQXJlIHRoZXkgcGFydCBvZiBhIGxhcmdlciwgd2VsbC1kZWZpbmVkIEFQSSwgb3IgZG8gdGhleSBmZWVsIGEgYml0IGFkLWhvYz8gQW5kIG9mIGNvdXJzZSwgSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIGFueSBvYnZpb3VzIGlzc3VlczogcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgaW5jb3JyZWN0IGxvY2tpbmcsIG9yIGV2ZW4ganVzdCBpbmVmZmljaWVudCBjb2RlIGRlc2lnbiDigJMgdGhlIHVzdWFsIHN1c3BlY3RzLiBMZXQncyBzZWUgd2hhdCB3ZSd2ZSBnb3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NzIsIk91dHB1dFRva2VucyI6NTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjo0OC40MjU5Nzc3MDZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyNDQ1NDQ2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeW2EtekEtWl9dW2EtekEtWjAtOV9dKiAqXFxcXChcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03Nz1zdGF0aWMgY29uc3QgY2hhciBzaG9ydG5hbWUgW10gPSBcXFwiZ2FkZ2V0ZnNcXFwiO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy03OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6Nzk6TU9EVUxFX0RFU0NSSVBUSU9OIChEUklWRVJfREVTQyk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjgwOk1PRFVMRV9BVVRIT1IgKFxcXCJEYXZpZCBCcm93bmVsbFxcXCIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTpNT0RVTEVfTElDRU5TRSAoXFxcIkdQTFxcXCIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04Mi1cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yOTU9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoyOTY6Z2V0X3JlYWR5X2VwICh1bnNpZ25lZCBmX2ZsYWdzLCBzdHJ1Y3QgZXBfZGF0YSAqZXBkYXRhLCBib29sIGlzX3dyaXRlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yOTcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTMzNT1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzozMzY6ZXBfaW8gKHN0cnVjdCBlcF9kYXRhICplcGRhdGEsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgbGVuKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0zMzcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTM4MD1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjM4MTplcF9yZWxlYXNlIChzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTM4Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9NTc5PXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjU4MDplcF9yZWFkX2l0ZXIoc3RydWN0IGtpb2NiICppb2NiLCBzdHJ1Y3QgaW92X2l0ZXIgKnRvKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy01ODEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTYzOD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo2Mzk6ZXBfd3JpdGVfaXRlcihzdHJ1Y3Qga2lvY2IgKmlvY2IsIHN0cnVjdCBpb3ZfaXRlciAqZnJvbSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNjQwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz03MjU9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6NzI2OmVwX2NvbmZpZyAoc3RydWN0IGVwX2RhdGEgKmRhdGEsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtNzI3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz04MTc9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo4MTg6ZXBfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy04MTkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTkxMj1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzo5MTM6ZXAwX3JlYWQgKHN0cnVjdCBmaWxlICpmZCwgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTkxNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTA4Mj1zdGF0aWMgc3RydWN0IHVzYl9nYWRnZXRmc19ldmVudCAqXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEwODM6bmV4dF9ldmVudCAoc3RydWN0IGRldl9kYXRhICpkZXYsIGVudW0gdXNiX2dhZGdldGZzX2V2ZW50X3R5cGUgdHlwZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTA4NC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTEyND1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMTI1OmVwMF93cml0ZSAoc3RydWN0IGZpbGUgKmZkLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgbGVuLCBsb2ZmX3QgKnB0cilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTEyNi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTE3OT1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjExODA6ZXAwX2Zhc3luYyAoaW50IGYsIHN0cnVjdCBmaWxlICpmZCwgaW50IG9uKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTgxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMTkwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTE5MTpkZXZfcmVsZWFzZSAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xMTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xMjE5PXN0YXRpYyBfX3BvbGxfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMjIwOmVwMF9wb2xsIChzdHJ1Y3QgZmlsZSAqZmQsIHBvbGxfdGFibGUgKndhaXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEyMjEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTEzMDY9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxMzA3OmNvbmZpZ19idWYgKHN0cnVjdCBkZXZfZGF0YSAqZGV2LCB1OCB0eXBlLCB1bnNpZ25lZCBpbmRleClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTMwOC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTMzMj1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjEzMzM6Z2FkZ2V0ZnNfc2V0dXAgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsIGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTEzMzQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2Mzk9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTY0MDpnYWRnZXRmc191bmJpbmQgKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE2NDEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3MTM9c3RhdGljIHZvaWRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTcxNDpnYWRnZXRmc19kaXNjb25uZWN0IChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNzE1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xNzMxPXN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE3MzI6Z2FkZ2V0ZnNfc3VzcGVuZCAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTczMy17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNj1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxODA3OmRldl9jb25maWcgKHN0cnVjdCBmaWxlICpmZCwgY29uc3QgY2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGxlbiwgbG9mZl90ICpwdHIpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4MDgte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE5MTk9c3RhdGljIGludFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxOTIwOmdhZGdldF9kZXZfb3BlbiAoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTIxLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0xOTYzPXN0YXRpYyB1bnNpZ25lZCBkZWZhdWx0X3Blcm0gPSBTX0lSVVNSIHwgU19JV1VTUjtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTk2NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2NTptb2R1bGVfcGFyYW0gKGRlZmF1bHRfdWlkLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2Njptb2R1bGVfcGFyYW0gKGRlZmF1bHRfZ2lkLCB1aW50LCAwNjQ0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk2Nzptb2R1bGVfcGFyYW0gKGRlZmF1bHRfcGVybSwgdWludCwgMDY0NCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE5NjgtXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTk3MD1zdGF0aWMgc3RydWN0IGlub2RlICpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTk3MTpnYWRnZXRmc19tYWtlX2lub2RlIChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xOTcyLVxcdFxcdHZvaWQgKmRhdGEsIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHMsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjAyMD1zdGF0aWMgaW50XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIwMjE6Z2FkZ2V0ZnNfZmlsbF9zdXBlciAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGZzX2NvbnRleHQgKmZjKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMDIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYz0yMTA0PXN0YXRpYyB2b2lkXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMDU6Z2FkZ2V0ZnNfa2lsbF9zYiAoc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjEwNi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MjEyMD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZ2FkZ2V0ZnNfdHlwZSA9IHtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI1LX07XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxMjY6TU9EVUxFX0FMSUFTX0ZTKFxcXCJnYWRnZXRmc1xcXCIpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTI3LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxMzA9c3RhdGljIGludCBfX2luaXQgZ2FkZ2V0ZnNfaW5pdCAodm9pZClcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTM5LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MjE0MDptb2R1bGVfaW5pdCAoZ2FkZ2V0ZnNfaW5pdCk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTIxNDEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTIxNDI9c3RhdGljIHZvaWQgX19leGl0IGdhZGdldGZzX2NsZWFudXAgKHZvaWQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMjE0Ni19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjIxNDc6bW9kdWxlX2V4aXQgKGdhZGdldGZzX2NsZWFudXApO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0yMTQ4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjo0OC45NTA0MzY5NDlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM5OTg1NzEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXRGUyBEcml2ZXIncyBFbnRyeSBQb2ludCoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuY2AgYW5kIGltbWVkaWF0ZWx5IG5vdGljZSBhbGwgdGhlIGZ1bmN0aW9ucyBhcmUgZGVjbGFyZWQgYHN0YXRpY2AuIFRoYXQncyBhIGJpdCBvZiBhIHdyaW5rbGUuIEkgbmVlZCBhIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5IHBvaW50LiBJbml0aWFsbHksIEkgdGhvdWdodCBJIG1pZ2h0IGhhdmUgdG8gZmFsbCBiYWNrIG9uIGB1c2JfZ2FkZ2V0X3JlZ2lzdGVyX2RyaXZlcmAsIGJ1dCB0aGF0J3MgYSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBub3Qgc3BlY2lmaWMgdG8gR2FkZ2V0RlMuXG5cbkFoYSEgYGdhZGdldGZzX2JpbmRgLiBUaGF0J3MgdGhlIG9uZSB0aGF0IHdhcyBtb2RpZmllZCBpbiB0aGUgcGF0Y2ghIEJ1dCB3YWl0Li4uaXQncyBhbHNvIGBzdGF0aWNgLiBTaG9vdC4gSWYgbm90aGluZydzIG5vbi1zdGF0aWMsIEkgY2FuIGVpdGhlciBwcm92aWRlIG5vIEZvY3VzU3ltYm9scyBhdCBhbGwsIG9yIHBlcmhhcHMgcHJvdmlkZSBgdXNiX2dhZGdldF9yZWdpc3Rlcl9kcml2ZXJgIHdoaWNoIGlzIHRoZSB0b3AtbGV2ZWwuIE5vLCBpdCdzIGEgaG90IHBhdGgsIHNvIGEgYmFkIGNob2ljZS5cblxuVGhlbiBpdCBoaXRzIG1lOiAqZnVuY3Rpb24gcG9pbnRlcnMqLiBgZ2FkZ2V0ZnNfYmluZGAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIChgLmJpbmQgPSBnYWRnZXRmc19iaW5kYCkuIFRoYXQgbWVhbnMgaXQgY2Fubm90IGJlIGlubGluZWQsIGl0IGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLCBhbmQgdGhlcmVmb3JlIGl0ICppcyogYSB2YWxpZCBjaG9pY2UuIFRoYXQncyBleGFjdGx5IHdoYXQgSSdtIGxvb2tpbmcgZm9yLlxuXG5JIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBjaGVja2VkIHRoZSBkaWZmIGFnYWluLCBhbmQsIHllcywgYGdhZGdldGZzX2JpbmRgIGlzIHRoZSAqb25seSogZnVuY3Rpb24gbW9kaWZpZWQuXG5cblRoZSBjb25maWcgdG8gZW5hYmxlIHRoZSBHYWRnZXRGUyBpcyBgVVNCX0dBREdFVEZTYCwgZWFzeSBlbm91Z2guXG5cbkFscmlnaHQsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBkZXBlbmRlbmNpZXMganVzdCB0byBiZSBzdXJlLi4uIExldCdzIGNoZWNrIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjI5OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNjo1Ny4zNTAyOTYwNDdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXHQgIG9mIHNldmVyYWwgZXRoZXJuZXQgZnJhbWVzIGludG8gb25lIFVTQiB0cmFuc2ZlciBhbmQgZGlmZmVyZW50XFxuIDIwMTpcXHRcXHQgIGFsaWdubWVudCBwb3NzaWJpbGl0aWVzLlxcbiAyMDI6XFx0XFxuIDIwMzpcXHRcXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuIDIwNDpcXHRcXHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFxcXCJnX25jbVxcXCIuXFxuIDIwNTpcXHRcXG4gMjA2OlxcdGNvbmZpZyBVU0JfR0FER0VURlNcXG4gMjA3OlxcdFxcdHRyaXN0YXRlIFxcXCJHYWRnZXQgRmlsZXN5c3RlbVxcXCJcXG4gMjA4OlxcdFxcdGhlbHBcXG4gMjA5OlxcdFxcdCAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBmaWxlc3lzdGVtIGJhc2VkIEFQSSB0aGF0IGxldHMgdXNlciBtb2RlXFxuIDIxMDpcXHRcXHQgIHByb2dyYW1zIGltcGxlbWVudCBhIHNpbmdsZS1jb25maWd1cmF0aW9uIFVTQiBkZXZpY2UsIGluY2x1ZGluZ1xcbiAyMTE6XFx0XFx0ICBlbmRwb2ludCBJL08gYW5kIGNvbnRyb2wgcmVxdWVzdHMgdGhhdCBkb24ndCByZWxhdGUgdG8gZW51bWVyYXRpb24uXFxuIDIxMjpcXHRcXHQgIEFsbCBlbmRwb2ludHMsIHRyYW5zZmVyIHNwZWVkcywgYW5kIHRyYW5zZmVyIHR5cGVzIHN1cHBvcnRlZCBieVxcbiAyMTM6XFx0XFx0ICB0aGUgaGFyZHdhcmUgYXJlIGF2YWlsYWJsZSwgdGhyb3VnaCByZWFkKCkgYW5kIHdyaXRlKCkgY2FsbHMuXFxuIDIxNDpcXHRcXG4gMjE1OlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gMjE2OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdhZGdldGZzXFxcIi5cXG4gMjE3OlxcdFxcbiAyMTg6XFx0Y29uZmlnIFVTQl9GVU5DVElPTkZTXFxuIDIxOTpcXHRcXHR0cmlzdGF0ZSBcXFwiRnVuY3Rpb24gRmlsZXN5c3RlbVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6MzY6NTcuMzUwMzY4MzY3WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5OTAyMjc3OTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBVU0IgZ2FkZ2V0IGNvbmZpZ3VyYXRpb24gc3R1ZmYuIFRoZSBzcGVjaWZpYyBLY29uZmlnIGZpbGUgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXMgbmVzdGxlZCB3aXRoaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AuIFJpZ2h0LCBsZXQncyB0cmFjZSBob3cgdGhpcyBgbGVnYWN5L0tjb25maWdgIGZpbGUgaXMgYnJvdWdodCBpbnRvIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gcGljdHVyZS4gVG8gZG8gdGhhdCwgSSdsbCBuZWVkIHRvIGhlYWQgdXAgYSBsZXZlbCBhbmQgZXhhbWluZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgLiBUaGF0IHNob3VsZCBzaG93IG1lIHRoZSBpbmNsdXNpb24gbWVjaGFuaXNtLCBob3cgdGhlIHN5c3RlbSBrbm93cyB0byBldmVuICpsb29rKiBhdCB0aGUgYGxlZ2FjeWAgcG9ydGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UuIFRoaXMgaXMgd2hlcmUgdGhlIGRlcGVuZGVuY3kgYW5kIGJ1aWxkIHJ1bGVzIHNob3VsZCBiZSBkZWZpbmVkLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM1NDksIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjA0LjM0MDU5Nzg4NloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUxMzQyMDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxlZ2FjeS9LY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01MDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTA5OnNvdXJjZSBcXFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUxMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MDQuNDkxOTQ1MDY1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMTU4MTM2NzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSdtIHRoZSBvbmUgdGhpbmtpbmcgaXQsIGFuZCB0YWlsb3JlZCBmb3Igc29tZW9uZSB3aG8ga25vd3MgdGhlaXIgd2F5IGFyb3VuZCBrZXJuZWwgY29uZmlndXJhdGlvbjpcblxuKipOYXZpZ2F0aW5nIHRoZSBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuUmlnaHQsIGxldCdzIHNlZS4gSSdtIGxvb2tpbmcgYXQga2VybmVsIGNvbmZpZ3VyYXRpb24gYW5kLCBmcm9tIHdoYXQgSSdtIHVuZGVyc3RhbmRpbmcsIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUgaXMgYmVpbmcgaW5jbHVkZWQgc29tZXdoZXJlIHdpdGhpbiBgZHJpdmVycy91c2IvS2NvbmZpZ2AuIFRoYXQncyBzdGFuZGFyZCBwcmFjdGljZSwgb2YgY291cnNlOyBjb25zb2xpZGF0aW5nIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMgaXMgZWZmaWNpZW50LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBsZXQncyBwaW5wb2ludCB0aGUgZGVmaW5pdGlvbiBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvZiB0aGUgYFVTQl9HQURHRVRgIHN5bWJvbC5cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFVTQiBHYWRnZXQgZnVuY3Rpb25hbGl0eSBpcyBjb250cm9sbGVkIGluIHRoZSBjb25maWcuIEtub3dpbmcgdGhhdCBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGlzIHRoZSBsaWtlbHkgc291cmNlLCBpdCBtYWtlcyBzZW5zZSB0byBnbyBzdHJhaWdodCB0aGVyZS4gTGV0J3Mgc2VlIGhvdyBpdCdzIGRlZmluZWQgYW5kIHdoYXQgb3RoZXIgY29uZmlnIG9wdGlvbnMgaXQgbWlnaHQgZGVwZW5kIG9uLiBEaWdnaW5nIGRlZXBlciBpbnRvIHRoZSBndXRzIG9mIHRoZSBVU0IgZ2FkZ2V0IHN1YnN5c3RlbSBpcyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODczLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MDguNTA3NzYyNjcyWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDg0MDA0NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0dBREdFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cXHR0cmlzdGF0ZSBcXFwiVVNCIEdhZGdldCBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDc9aWYgVVNCX0dBREdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Mi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2Mzpjb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc2LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc3OmNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZJTEVTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNzgtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo4ODpjb25maWcgVVNCX0dBREdFVF9ERUJVR19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyBpbiBkZWJ1Z2ZzIChERVZFTE9QTUVOVClcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5OTpjb25maWcgVVNCX0dBREdFVF9WQlVTX0RSQVdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMDAtXFx0aW50IFxcXCJNYXhpbXVtIFZCVVMgUG93ZXIgdXNhZ2UgKDItNTAwIG1BKVxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxMTY6Y29uZmlnIFVTQl9HQURHRVRfU1RPUkFHRV9OVU1fQlVGRkVSU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTExNy1cXHRpbnQgXFxcIk51bWJlciBvZiBzdG9yYWdlIHBpcGVsaW5lIGJ1ZmZlcnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjA4LjU2MjYwNzMxOFoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTA3MDczNjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIENvbnNpZGVyYXRpb25zIGZvciBVU0IgR2FkZ2V0IFRlc3RpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgc2V0dGluZyB1cCBhIFVTQiBnYWRnZXQsIHdoaWNoIG5hdHVyYWxseSBtZWFucyBJJ2xsIG5lZWQgYFVTQl9HQURHRVRgIGVuYWJsZWQuIFRoYXQncyB0aGUgYmFzZWxpbmUuIE5vdywgdG8gbWFrZSB0aGlzIGVhc2llciBpbiBhIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnQsIEknbSBhbG1vc3QgY2VydGFpbmx5IGdvaW5nIHRvIG5lZWQgYFVTQl9EVU1NWV9IQ0RgLiBJJ3ZlIHVzZWQgdGhhdCBiZWZvcmUsIGFuZCBpdCdzIHByYWN0aWNhbGx5IGluZGlzcGVuc2FibGUgZm9yIHRoaXMgc29ydCBvZiB0aGluZy4gTGV0IG1lIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGlzIGV4YWN0bHkgd2hhdCBJJ20gbG9va2luZyBmb3IgYW5kIHRoYXQgZXZlcnl0aGluZyBpcyBpbiBvcmRlci4gSSdsbCB0YWtlIGEgbG9vayBhdCBpdCBhbmQgbWFrZSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjE5LjYzMzM0NzAwOVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA2Mjg2NTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfRFVNTVlfSENEXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXFxcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvY2RuczIvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQyODpjb25maWcgVVNCX0RVTU1ZX0hDRFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzoxOS45Mzk2NDE3MzdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQxNjM5MDMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91cnNlbGY6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBEdW1teSBIQ0QqKlxuXG5BbHJpZ2h0LCBzbyBgVVNCX0RVTU1ZX0hDRGAgbG9va3MgbGlrZSBpdCdzIHdvcnRoIGVuYWJsaW5nLiBJJ20gdGhpbmtpbmcgSSBjYW4gbGV2ZXJhZ2UgaXQgZm9yIGEgc3BlY2lmaWMgdGVzdCBzZXR1cCwgcGVyaGFwcyBmb3Igc2ltdWxhdGluZyBVU0IgdHJhZmZpYyB3aXRob3V0IHJlYWwgaGFyZHdhcmUuIE5vdywgYmVmb3JlIEkganVtcCBpbiBhbmQgc3RhcnQgY29uZmlndXJpbmcsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGFsbCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMgZHJpdmVyIGFuZCB0aGF0IEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZlYXR1cmVzIG1pZ2h0IGJlY29tZSBhY3RpdmUgYXMgYSByZXN1bHQuIEtub3dpbmcgbXkgZGVwZW5kZW5jaWVzIHNhdmVzIGEgbG90IG9mIGhlYWRhY2hlcyBkb3duIHRoZSBsaW5lLiBJdCdzIHRpbWUgdG8gbWFwIGl0IG91dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUwMDAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QwNjozNzoyNC4zNTYwMzQ3NzZaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQyNSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDQyNTpcXHQjIExBU1QgLS0gZHVtbXkvZW11bGF0ZWQgY29udHJvbGxlclxcbiA0MjY6XFx0I1xcbiA0Mjc6XFx0XFxuIDQyODpcXHRjb25maWcgVVNCX0RVTU1ZX0hDRFxcbiA0Mjk6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IEhDRCAoREVWRUxPUE1FTlQpXFxcIlxcbiA0MzA6XFx0XFx0ZGVwZW5kcyBvbiBVU0I9eSB8fCAoVVNCPW0gXFx1MDAyNlxcdTAwMjYgVVNCX0dBREdFVD1tKVxcbiA0MzE6XFx0XFx0aGVscFxcbiA0MzI6XFx0XFx0ICBUaGlzIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZW11bGF0ZXMgVVNCLCBsb29waW5nIGFsbCBkYXRhIHRyYW5zZmVyXFxuIDQzMzpcXHRcXHQgIHJlcXVlc3RzIGJhY2sgdG8gYSBVU0IgXFxcImdhZGdldCBkcml2ZXJcXFwiIGluIHRoZSBzYW1lIGhvc3QuICBUaGUgaG9zdFxcbiA0MzQ6XFx0XFx0ICBzaWRlIGlzIHRoZSBjb250cm9sbGVyOyB0aGUgZ2FkZ2V0IHNpZGUgaXMgdGhlIGRldmljZS4gIEdhZGdldCBkcml2ZXJzXFxuIDQzNTpcXHRcXHQgIGNhbiBiZSBoaWdoLCBmdWxsLCBvciBsb3cgc3BlZWQ7IGFuZCB0aGV5IGhhdmUgYWNjZXNzIHRvIGVuZHBvaW50c1xcbiA0MzY6XFx0XFx0ICBsaWtlIHRob3NlIGZyb20gTkVUMjI4MCwgUFhBMnh4LCBvciBTQTExMDAgaGFyZHdhcmUuXFxuIDQzNzpcXHRcXG4gNDM4OlxcdFxcdCAgVGhpcyBtYXkgaGVscCBpbiBzb21lIHN0YWdlcyBvZiBjcmVhdGluZyBhIGRyaXZlciB0byBlbWJlZCBpbiBhXFxuIDQzOTpcXHRcXHQgIExpbnV4IGRldmljZSwgc2luY2UgaXQgbGV0cyB5b3UgZGVidWcgc2V2ZXJhbCBwYXJ0cyBvZiB0aGUgZ2FkZ2V0XFxuIDQ0MDpcXHRcXHQgIGRyaXZlciB3aXRob3V0IGl0cyBoYXJkd2FyZSBvciBkcml2ZXJzIGJlaW5nIGludm9sdmVkLlxcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHQgIFNpbmNlIHN1Y2ggYSBnYWRnZXQgc2lkZSBkcml2ZXIgbmVlZHMgdG8gaW50ZXJvcGVyYXRlIHdpdGggYSBob3N0XFxuIDQ0MzpcXHRcXHQgIHNpZGUgTGludXgtVVNCIGRldmljZSBkcml2ZXIsIHRoaXMgbWF5IGhlbHAgdG8gZGVidWcgYm90aCBzaWRlc1xcbiA0NDQ6XFx0XFx0ICBvZiBhIFVTQiBwcm90b2NvbCBzdGFjay5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MjQuMzU2MTI2NjA2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTY3NTE1MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgR2FkZ2V0RlMgQmluZCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFVTQmAuIE1ha2VzIHNlbnNlLiBJJ2xsIGluY2x1ZGUgYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYCBpbiB0aGUgY29uZmlndXJhdGlvbi4gXG5cbk5vdywgdGhlIHBhdGNoIHRvdWNoZXMgYGdhZGdldGZzX2JpbmRgLCB3aGljaCBpcywgSSBiZWxpZXZlLCBkZWNsYXJlZCBzdGF0aWMuIEhtbSwgY2FuIHdlIGZ1enogdGhpcz8gTGV0IG1lIHRoaW5rLi4uIHllcywgdGhpcyBsb29rcyBmdW5jdGlvbmFsbHkgZnV6emVyLWFibGUuIEV4Y2VsbGVudCEgSSB3aWxsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgdGhlIGZvY3VzIHN5bWJvbHMsIEknbGwgc3BlY2lmeSBgZ2FkZ2V0ZnNfYmluZGAuIFxuXG5UaGUgcmVsZXZhbnQgRW5hYmxlQ29uZmlncyBhcmUgZ29pbmcgdG8gYmUgYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYC5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgZ2FkZ2V0ZnNfYmluZGAgaXMgdGhlIG9ubHkgc2lnbmlmaWNhbnQgZnVuY3Rpb24gaW1wYWN0ZWQgaW4gdGhpcyBhcmVhLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTU5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDA2OjM3OjI5LjQ3Mjg4MTE5NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjgwMzk2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ2FkZ2V0ZnNfYmluZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE2NjY9c3RhdGljIHN0cnVjdCBkZXZfZGF0YVxcdFxcdCp0aGVfZGV2aWNlO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYzoxNjY4OnN0YXRpYyBpbnQgZ2FkZ2V0ZnNfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvaW5vZGUuYy0xNjY5LVxcdFxcdHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciAqZHJpdmVyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jPTE3NTI9c3RhdGljIHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlciBnYWRnZXRmc19kcml2ZXIgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE3NTMtXFx0LmZ1bmN0aW9uXFx0PSAoY2hhciAqKSBkcml2ZXJfZGVzYyxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM6MTc1NDpcXHQuYmluZFxcdFxcdD0gZ2FkZ2V0ZnNfYmluZCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmMtMTc1NS1cXHQudW5iaW5kXFx0XFx0PSBnYWRnZXRmc191bmJpbmQsXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L2lub2RlLmM9MTgwNz1kZXZfY29uZmlnIChzdHJ1Y3QgZmlsZSAqZmQsIGNvbnN0IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBsZW4sIGxvZmZfdCAqcHRyKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jOjE4ODI6XFx0LyogdHJpZ2dlcnMgZ2FkZ2V0ZnNfYmluZCgpOyB0aGVuIHdlIGNhbiBlbnVtZXJhdGUuICovXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9pbm9kZS5jLTE4ODMtXFx0c3Bpbl91bmxvY2tfaXJxIChcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MjkuNTQwOTI2NTlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzgwODQzNDA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdhZGdldGZzIFBhdGNoKipcblxuT2theSwgc28gdGhlIHByaW1hcnkgZnVuY3Rpb24gdGhpcyBwYXRjaCB6ZXJvZXMgaW4gb24gaXMgYGdhZGdldGZzX2JpbmRgLiBUaGF0J3MgdGhlIG9uZS4gSSdtIGdvaW5nIHRvIHNldCBteSBgRm9jdXNTeW1ib2xzYCBhcnJheSB0byBpbmNsdWRlIGp1c3QgYFtcImdhZGdldGZzX2JpbmRcIl1gLlxuXG5Ob3csIGxldCdzIHJlY2FwIHRoZSByYXRpb25hbGUgYmVoaW5kIHRoaXMuIFRoZSBwYXRjaCBpcyBhbGwgYWJvdXQgdHdlYWtpbmcgdGhlIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYGdhZGdldGZzX2JpbmRgIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBVU0IgZ2FkZ2V0ZnMgZHJpdmVyLiBJdCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgaXNzdWUgYnkgZGlyZWN0bHkgZnJlZWluZyB0aGUgcmVxdWVzdCBhbmQgY2xlYW5pbmcgdXAgcG9pbnRlcnMsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gYSBjYWxsIHRvIGBnYWRnZXRmc191bmJpbmRgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBhZGp1c3RtZW50IHdpdGhpbiBhIGRyaXZlciB0aGF0J3MgZGVmaW5pdGVseSBhY2Nlc3NpYmxlLCB3aGV0aGVyIHRocm91Z2ggdGhlIFVTQiBkdW1teSBIQ0Qgb3Igb3RoZXIgVURDcy5cblxuQmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gSSd2ZSBzZWVuLCBpdCBzZWVtcyB0byBkZXBlbmQgb24gYFVTQl9HQURHRVRGU2AsIGBVU0JfR0FER0VUYCwgYW5kIGBVU0JfRFVNTVlfSENEYCBiZWluZyBlbmFibGVkLlxuXG5BbHJpZ2h0LCB3aXRoIGFsbCB0aGF0IGNvbmZpcm1lZCwgSSdtIGdvaW5nIHRvIGdvIGFoZWFkIGFuZCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjM3MSwiT3V0cHV0VG9rZW5zIjoxMjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMDY6Mzc6MzcuMzQ5MzYzMDlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM3MTk0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRGU1wiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQl9HQURHRVRGU1wiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldGZzX2JpbmRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCBpbiBgZ2FkZ2V0ZnNfYmluZGAgaW4gdGhlIFVTQiBnYWRnZXRmcyBkcml2ZXIsIGZpeGluZyBhIHBvdGVudGlhbCBpc3N1ZSBieSBtYW51YWxseSBmcmVlaW5nIHRoZSByZXF1ZXN0IGFuZCBjbGVhcmluZyBwb2ludGVycyBpbnN0ZWFkIG9mIGNhbGxpbmcgYGdhZGdldGZzX3VuYmluZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIHJlYWNoYWJsZSBkcml2ZXIgKHZpYSBVU0IgZHVtbXkgSENEIG9yIG90aGVyIFVEQ3MpLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowp7g8r[1] Phase: Succeeded StartedAt: 2026-08-07 06:37:48 +0000 UTC FinishedAt: 2026-08-07 06:37:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 06:37:48 +0000 UTC FinishedAt: 2026-08-07 06:37:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2] Phase: Succeeded StartedAt: 2026-08-07 06:37:48 +0000 UTC FinishedAt: 2026-08-07 10:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 06:37:48 +0000 UTC FinishedAt: 2026-08-07 10:26:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 06:37:48 +0000 UTC FinishedAt: 2026-08-07 06:37:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 06:37:48 +0000 UTC FinishedAt: 2026-08-07 06:37:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowp7g8r/series-workflowp7g8r-convert-artifact-3170891783/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 06:37:58 +0000 UTC FinishedAt: 2026-08-07 06:57:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 06:37:58 +0000 UTC FinishedAt: 2026-08-07 06:57:25 +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:*efd5f3db-591a-482d-b032-14ac524a6116,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-workflowp7g8r/series-workflowp7g8r-convert-artifact-3170891783/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": "77e9d5c2-d68b-44d3-a0e1-bd46e16ed7e4", "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-workflowp7g8r/series-workflowp7g8r-build-action-2230404765/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 06:37:58 +0000 UTC FinishedAt: 2026-08-07 06:57:15 +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:*efd5f3db-591a-482d-b032-14ac524a6116,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-workflowp7g8r/series-workflowp7g8r-convert-artifact-3170891783/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": "77e9d5c2-d68b-44d3-a0e1-bd46e16ed7e4", "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-workflowp7g8r/series-workflowp7g8r-build-action-2230404765/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 06:57:25 +0000 UTC FinishedAt: 2026-08-07 06:57:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 06:57:25 +0000 UTC FinishedAt: 2026-08-07 06:57:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 06:57:25 +0000 UTC FinishedAt: 2026-08-07 06:57:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 06:57:25 +0000 UTC FinishedAt: 2026-08-07 06:57:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.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-workflowp7g8r/series-workflowp7g8r-convert-artifact-4086201910/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 06:57:35 +0000 UTC FinishedAt: 2026-08-07 06:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 06:57:35 +0000 UTC FinishedAt: 2026-08-07 06:59:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77e9d5c2-d68b-44d3-a0e1-bd46e16ed7e4,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-workflowp7g8r/series-workflowp7g8r-build-action-2230404765/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-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 06:59:56 +0000 UTC FinishedAt: 2026-08-07 06:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 06:59:56 +0000 UTC FinishedAt: 2026-08-07 06:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 06:59:56 +0000 UTC FinishedAt: 2026-08-07 07:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 06:59:56 +0000 UTC FinishedAt: 2026-08-07 07:21:31 +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:*efd5f3db-591a-482d-b032-14ac524a6116,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-workflowp7g8r/series-workflowp7g8r-convert-artifact-4086201910/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": "8f85b9d1-9866-4e03-8390-f0a1cb50d7f2", "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-workflowp7g8r/series-workflowp7g8r-build-action-1434895162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 06:59:56 +0000 UTC FinishedAt: 2026-08-07 07:21:07 +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:*efd5f3db-591a-482d-b032-14ac524a6116,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-workflowp7g8r/series-workflowp7g8r-convert-artifact-4086201910/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": "8f85b9d1-9866-4e03-8390-f0a1cb50d7f2", "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-workflowp7g8r/series-workflowp7g8r-build-action-1434895162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 07:21:31 +0000 UTC FinishedAt: 2026-08-07 07:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 07:21:31 +0000 UTC FinishedAt: 2026-08-07 07:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 07:21:31 +0000 UTC FinishedAt: 2026-08-07 07:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 07:21:31 +0000 UTC FinishedAt: 2026-08-07 07:23:21 +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:*8f85b9d1-9866-4e03-8390-f0a1cb50d7f2,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-workflowp7g8r/series-workflowp7g8r-build-action-1434895162/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-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 10:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 10:26:16 +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":["gadgetfs_bind"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*77e9d5c2-d68b-44d3-a0e1-bd46e16ed7e4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8f85b9d1-9866-4e03-8390-f0a1cb50d7f2,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-workflowp7g8r/series-workflowp7g8r-build-action-2230404765/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-workflowp7g8r/series-workflowp7g8r-build-action-1434895162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 07:23:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 07:23:36 +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":["gadgetfs_bind"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowp7g8r/series-workflowp7g8r-convert-artifact-3762477659/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 07:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 07:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 07:23:31 +0000 UTC FinishedAt: 2026-08-07 07:23:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 07:23:41 +0000 UTC FinishedAt: 2026-08-07 10:26:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowp7g8r[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadgetfs_bind"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"075b74841bd0065a3bda3440873c747938e69b68","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB_GADGETFS","USB_GADGET","USB_DUMMY_HCD"],"series_id":"4d8b0528-e259-4cec-b2a7-d702dba35ac1","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 07:23:41 +0000 UTC FinishedAt: 2026-08-07 10:26:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77e9d5c2-d68b-44d3-a0e1-bd46e16ed7e4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8f85b9d1-9866-4e03-8390-f0a1cb50d7f2,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-workflowp7g8r/series-workflowp7g8r-build-action-2230404765/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-workflowp7g8r/series-workflowp7g8r-build-action-1434895162/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-workflowp7g8r/series-workflowp7g8r-convert-artifact-3762477659/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,}