Name: series-workflowlhhsx Phase: Succeeded StartedAt: 2026-07-31 00:27:12 +0000 UTC FinishedAt: 2026-07-31 05:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[0] Phase: Succeeded StartedAt: 2026-07-31 00:27:12 +0000 UTC FinishedAt: 2026-07-31 01:55:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[0].run-triage Phase: Succeeded StartedAt: 2026-07-31 00:27:12 +0000 UTC FinishedAt: 2026-07-31 01:55:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "2a261c10-c982-4f2c-9546-81dac01b21bd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_retransmit", "sctp_outq_tail", "sctp_outq_uncork" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3RhaWwmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYjY0YzU5ODE0YWI4OWY4ZWNjNzIzZjBjZTkwMjA5NjE5MzE3NDMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6NTM6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmNcbmluZGV4IGY2YjhjMTNkYWZhNGEuLmU5MmZiOWRhNDY0N2EgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jXG5AQCAtNjUwLDYgJiM0Mzs2NTAsNyBAQCBzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbiBcdFx0aWYgKGNodW5rLVx1MDAzZXRzbl9nYXBfYWNrZWQpIHtcbiBcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZjaHVuay1cdTAwM2V0cmFuc21pdHRlZF9saXN0LFxuIFx0XHRcdFx0ICAgICAgIFx1MDAyNnRyYW5zcG9ydC1cdTAwM2V0cmFuc21pdHRlZCk7XG4mIzQzO1x0XHRcdGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9yZXRyYW5zbWl0JiMzNDssCiAgICAmIzM0O3NjdHBfb3V0cV90YWlsJiMzNDssCiAgICAmIzM0O3NjdHBfb3V0cV91bmNvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NUUCBvdXRxdWV1ZSBsb2dpYyBieSBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHJldHJhbnNtaXNzaW9uIGZsdXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBTQ1RQIHNvY2tldCBvcGVyYXRpb25zIGFuZCBwYWNrZXQgcHJvY2Vzc2luZywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmI2NGM1OTgxNGFiODlmOGVjYzcyM2YwY2U5MDIwOTYxOTMxNzQzMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmMKaW5kZXggZjZiOGMxM2RhZmE0YS4uZTkyZmI5ZGE0NjQ3YSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvb3V0cXVldWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jCkBAIC02NTAsNiAmIzQzOzY1MCw3IEBAIHN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LAogCQlpZiAoY2h1bmstJmd0O3Rzbl9nYXBfYWNrZWQpIHsKIAkJCWxpc3RfbW92ZV90YWlsKCZhbXA7Y2h1bmstJmd0O3RyYW5zbWl0dGVkX2xpc3QsCiAJCQkJICAgICAgICZhbXA7dHJhbnNwb3J0LSZndDt0cmFuc21pdHRlZCk7CiYjNDM7CQkJY2h1bmstJmd0O3RyYW5zcG9ydCA9IHRyYW5zcG9ydDsKIAkJCWNvbnRpbnVlOwogCQl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcGF0Y2ggYW5kIHJlbGV2YW50IGNvZGU6CgoqKkFuYWx5emluZyBhIFNDVFAgT3V0cXVldWUgUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQmIzM5O3MgbWFraW5nIGEgbW9kaWZpY2F0aW9uIGluIGBuZXQvc2N0cC9vdXRxdWV1ZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBgY2h1bmstJmd0O3RyYW5zcG9ydCA9IHRyYW5zcG9ydDtgIHdpdGhpbiB0aGUgYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgcHVycG9zZS4gVGhpcyBhc3NpZ25tZW50IGxvb2tzIGxpa2UgaXQmIzM5O3Mgc2V0dGluZyBhIHRyYW5zcG9ydCBhc3NvY2lhdGlvbiBmb3IgYSBjaHVuay4KClRvIGdldCBhIGJldHRlciBncmlwLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBfX3NjdHBfb3V0cV9mbHVzaF9ydHhgIGl0c2VsZiB3aXRoaW4gdGhlIGBuZXQvc2N0cC9vdXRxdWV1ZS5jYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGxvY2F0aW9uIG9mIHRoYXQgZnVuY3Rpb24gYW5kIGlkZW50aWZ5IGl0JiMzOTtzIGV4YWN0IGRlZmluaXRpb24uIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzb3VyY2UgZmlsZSB0byB2ZXJpZnkgdGhlIGZpbGUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZmlsZSwgaWYgbmVlZGVkLiBLbm93aW5nIHRoZSBmdW5jdGlvbiYjMzk7cyBkZWNsYXJhdGlvbiB3aWxsIHJlYWxseSBoZWxwIG1lIHNlZSBob3cgdGhpcyBuZXcgYXNzaWdubWVudCBmaXRzIGluIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljIG9mIHJldHJhbnNtaXR0aW5nIGNodW5rcy4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYXNzZXNzIHdoZXRoZXIgdGhpcyBhc3NpZ25tZW50IGlzIGNvcnJlY3QsIG9yIGlmIGl0IG1pZ2h0IGJlIG1pc3Npbmcgb3IgcmVkdW5kYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2N0cF9vdXRxX2ZsdXNoX3J0eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cXVldWUuYz01Mzc9dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTEtICogVHJhbnNtaXQgREFUQSBjaHVua3Mgb24gdGhlIHJldHJhbnNtaXQgcXVldWUuICBVcG9uIHJldHVybiBmcm9tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICYjMzk7cGt0JiMzOTsgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5My0gKiBuZWVkIHRvIGJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBjYWxsZXIuXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5ODpzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVx0XHRcdFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9OTkyPXN0YXRpYyBib29sIHNjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDEyLVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDEzOlx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVx1MDAzZXEsIGN0eC1cdTAwM2VwYWNrZXQsIHJ0eF90aW1lb3V0LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVx0XHRcdFx0ICAgICAgXHUwMDI2c3RhcnRfdGltZXIsIGN0eC1cdTAwM2VnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFNDVFAgUmV0cmFuc21pc3Npb24gTG9naWMqKgoKUmlnaHQsIHRoZSB0cmFjZSBwb2ludHMgdG8gYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJldHggcmV0cmFuc21pc3Npb24gbG9naWMgc2VlbXMgdG8gYmUgcmVzaWRpbmcsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LiBUaW1lIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlIGFuZCBzZWUgd2hhdCB0aGUgaXNzdWUgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MzA6XHRcdCAqIHBhY2tldCBvZiByZXRyYW5zbWl0dGVkIGRhdGEuXVxuIDYzMTpcdFx0ICpcbiA2MzI6XHRcdCAqIEZvciBmYXN0IHJldHJhbnNtaXNzaW9ucyB3ZSBhbHNvIHNlbmQgb25seSBPTkUgcGFja2V0LiAgSG93ZXZlcixcbiA2MzM6XHRcdCAqIGlmIHdlIGFyZSBqdXN0IGZsdXNoaW5nIHRoZSBxdWV1ZSBkdWUgdG8gb3BlbiB3aW5kb3csIHdlJiMzOTtsbFxuIDYzNDpcdFx0ICogdHJ5IHRvIHNlbmQgYXMgbXVjaCBhcyBwb3NzaWJsZS5cbiA2MzU6XHRcdCAqL1xuIDYzNjpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNodW5rLCBjaHVuazEsIGxxdWV1ZSwgdHJhbnNtaXR0ZWRfbGlzdCkge1xuIDYzNzpcdFx0XHQvKiBJZiB0aGUgY2h1bmsgaXMgYWJhbmRvbmVkLCBtb3ZlIGl0IHRvIGFiYW5kb25lZCBsaXN0LiAqL1xuIDYzODpcdFx0XHRpZiAoc2N0cF9jaHVua19hYmFuZG9uZWQoY2h1bmspKSB7XG4gNjM5Olx0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZjaHVuay1cdTAwM2V0cmFuc21pdHRlZF9saXN0KTtcbiA2NDA6XHRcdFx0XHRzY3RwX2luc2VydF9saXN0KFx1MDAyNnEtXHUwMDNlYWJhbmRvbmVkLFxuIDY0MTpcdFx0XHRcdFx0XHQgXHUwMDI2Y2h1bmstXHUwMDNldHJhbnNtaXR0ZWRfbGlzdCk7XG4gNjQyOlx0XHRcdFx0Y29udGludWU7XG4gNjQzOlx0XHRcdH1cbiA2NDQ6XHRcbiA2NDU6XHRcdFx0LyogTWFrZSBzdXJlIHRoYXQgR2FwIEFja2VkIFRTTnMgYXJlIG5vdCByZXRyYW5zbWl0dGVkLiAgQVxuIDY0NjpcdFx0XHQgKiBzaW1wbGUgYXBwcm9hY2ggaXMganVzdCB0byBtb3ZlIHN1Y2ggVFNOcyBvdXQgb2YgdGhlXG4gNjQ3Olx0XHRcdCAqIHdheSBhbmQgaW50byBhICYjMzk7dHJhbnNtaXR0ZWQmIzM5OyBxdWV1ZSBhbmQgc2tpcCB0byB0aGVcbiA2NDg6XHRcdFx0ICogbmV4dCBjaHVuay5cbiA2NDk6XHRcdFx0ICovXG4gNjUwOlx0XHRcdGlmIChjaHVuay1cdTAwM2V0c25fZ2FwX2Fja2VkKSB7XG4gNjUxOlx0XHRcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2Y2h1bmstXHUwMDNldHJhbnNtaXR0ZWRfbGlzdCxcbiA2NTI6XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0cmFuc3BvcnQtXHUwMDNldHJhbnNtaXR0ZWQpO1xuIDY1MzpcdFx0XHRcdGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiA2NTQ6XHRcdFx0XHRjb250aW51ZTtcbiA2NTU6XHRcdFx0fVxuIDY1NjpcdFxuIDY1NzpcdFx0XHQvKiBJZiB3ZSBhcmUgZG9pbmcgZmFzdCByZXRyYW5zbWl0LCBpZ25vcmUgbm9uLWZhc3RfcnRyYW5zbWl0XG4gNjU4Olx0XHRcdCAqIGNodW5rc1xuIDY1OTpcdFx0XHQgKi9cbiA2NjA6XHRcdFx0aWYgKGZhc3RfcnR4IFx1MDAyNlx1MDAyNiAhY2h1bmstXHUwMDNlZmFzdF9yZXRyYW5zbWl0KVxuIDY2MTpcdFx0XHRcdGNvbnRpbnVlO1xuIDY2MjpcdFxuIDY2MzpcdHJlZG86XG4gNjY0Olx0XHRcdC8qIEF0dGVtcHQgdG8gYXBwZW5kIHRoaXMgY2h1bmsgdG8gdGhlIHBhY2tldC4gKi9cbiA2NjU6XHRcdFx0c3RhdHVzID0gc2N0cF9wYWNrZXRfYXBwZW5kX2NodW5rKHBrdCwgY2h1bmspO1xuIDY2NjpcdFxuIDY2NzpcdFx0XHRzd2l0Y2ggKHN0YXR1cykge1xuIDY2ODpcdFx0XHRjYXNlIFNDVFBfWE1JVF9QTVRVX0ZVTEw6XG4gNjY5Olx0XHRcdFx0aWYgKCFwa3QtXHUwMDNlaGFzX2RhdGEgXHUwMDI2XHUwMDI2ICFwa3QtXHUwMDNlaGFzX2Nvb2tpZV9lY2hvKSB7XG4gNjcwOlx0XHRcdFx0XHQvKiBJZiB0aGlzIHBhY2tldCBkaWQgbm90IGNvbnRhaW4gREFUQSB0aGVuXG4gNjcxOlx0XHRcdFx0XHQgKiByZXRyYW5zbWlzc2lvbiBkaWQgbm90IGhhcHBlbiwgc28gZG8gaXRcbiA2NzI6XHRcdFx0XHRcdCAqIGFnYWluLiAgV2UmIzM5O2xsIGlnbm9yZSB0aGUgZXJyb3IgaGVyZSBzaW5jZVxuIDY3MzpcdFx0XHRcdFx0ICogY29udHJvbCBjaHVua3MgYXJlIGFscmVhZHkgZnJlZWQgc28gdGhlcmVcbiA2NzQ6XHRcdFx0XHRcdCAqIGlzIG5vdGhpbmcgd2UgY2FuIGRvLlxuIDY3NTpcdFx0XHRcdFx0ICovXG4gNjc2Olx0XHRcdFx0XHRzY3RwX3BhY2tldF90cmFuc21pdChwa3QsIGdmcCk7XG4gNjc3Olx0XHRcdFx0XHRnb3RvIHJlZG87XG4gNjc4Olx0XHRcdFx0fVxuIDY3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIFJUWCBGbHVzaCBhbmQgVHJhbnNwb3J0IEFzc2lnbm1lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBjaHVuay0mZ3Q7dHJhbnNwb3J0ID0gdHJhbnNwb3J0O2Agd2l0aGluIHRoZSBgX19zY3RwX291dHFfZmx1c2hfcnR4YCBmdW5jdGlvbi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCYjMzk7cyBhc3NpZ25pbmcgYSB0cmFuc3BvcnQgcG9pbnRlciB0byBhIGNodW5rIGJlaW5nIHJldHJhbnNtaXR0ZWQuIFRoZSBjb250ZXh0IGhlcmUgaXMgZGVmaW5pdGVseSBTQ1RQLCB3aGljaCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZS4gQmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBkZXRhaWxzIG9mICp3aHkqIHRoaXMgYXNzaWdubWVudCBpcyBiZWluZyBtYWRlIHdpdGhpbiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlnIG9wdGlvbnMuIEkgd2FudCB0byBlbnN1cmUgdGhpcyBhZGRpdGlvbiBhbGlnbnMgd2l0aCBob3cgU0NUUCBpcyBjb25maWd1cmVkIGluIHRoaXMgcGFydGljdWxhciBlbnZpcm9ubWVudC4gTXkgYWltIGlzIHRvIGxvb2sgYXQgaG93IHdlIGhhdmUgU0NUUCBjb25maWd1cmVkIGFuZCBlbnN1cmUgdGhhdCB0aGlzIHRyYW5zcG9ydCBhc3NpZ25tZW50IGlzIG5vdCBnb2luZyB0byBicmVhayBhbnl0aGluZyB3ZSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNDVFAgT3V0Z29pbmcgUXVldWUgRmx1c2ggRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgSVBfU0NUUGAuIEdvdCBpdC4gTXkgcHJpbWFyeSBnb2FsIG5vdyBpcyB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIHNwZWNpZmljIGFzcGVjdCBvZiB0aGUgU0NUUCBpbXBsZW1lbnRhdGlvbi4gTXkgYXR0ZW50aW9uIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHRoZSBmdW5jdGlvbiBgX19zY3RwX291dHFfZmx1c2hfcnR4YC4gSXQmIzM5O3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlLiBLbm93aW5nIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvZGUuIFVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIHdoZW4gYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgaXMgaW52b2tlZCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIGl0cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zY3RwX291dHFfZmx1c2hfcnR4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5MS0gKiBUcmFuc21pdCBEQVRBIGNodW5rcyBvbiB0aGUgcmV0cmFuc21pdCBxdWV1ZS4gIFVwb24gcmV0dXJuIGZyb21cbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJiMzOTtwa3QmIzM5OyBtYXkgY29udGFpbiBjaHVua3Mgd2hpY2hcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkzLSAqIG5lZWQgdG8gYmUgdHJhbnNtaXR0ZWQgYnkgdGhlIGNhbGxlci5cbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5Ny0gKi9cbm5ldC9zY3RwL291dHF1ZXVlLmM6NTk4OnN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXHRcdFx0XHQgaW50IHJ0eF90aW1lb3V0LCBpbnQgKnN0YXJ0X3RpbWVyLCBnZnBfdCBnZnApXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTItXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XHRlcnJvciA9IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChjdHgtXHUwMDNlcSwgY3R4LVx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTQtXHRcdFx0XHQgICAgICBcdTAwMjZzdGFydF90aW1lciwgY3R4LVx1MDAzZWdmcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBgc2N0cF9vdXRxX2ZsdXNoX3J0eGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgc2N0cF9vdXRxX2ZsdXNoX3J0eGAgaXMgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLiBJbnRlcmVzdGluZy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBzdGF0aWMsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBjYWxsIHNpdGVzIHRvIHVuZGVyc3RhbmQgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgc2NvcGVkIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCBzbyB0cmFjaW5nIHRob3NlIGNhbGxzIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcmV0cmFuc21pc3Npb24gbG9naWMuIExldCYjMzk7cyBnZXQgdG8gaXQgYW5kIHNlZSB3aG8mIzM5O3MgY2FsbGluZyB0aGlzIG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9vdXRxX2ZsdXNoX3J0eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cXVldWUuYz01Mzc9dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTEtICogVHJhbnNtaXQgREFUQSBjaHVua3Mgb24gdGhlIHJldHJhbnNtaXQgcXVldWUuICBVcG9uIHJldHVybiBmcm9tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICYjMzk7cGt0JiMzOTsgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5My0gKiBuZWVkIHRvIGJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBjYWxsZXIuXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5ODpzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVx0XHRcdFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9ODgwPXN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9jdHJsKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4KVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtOTkxLS8qIFJldHVybnMgZmFsc2UgaWYgbmV3IGRhdGEgc2hvdWxkbiYjMzk7dCBiZSBzZW50ICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjk5MjpzdGF0aWMgYm9vbCBzY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxubmV0L3NjdHAvb3V0cXVldWUuYy05OTMtXHRcdFx0XHRpbnQgcnR4X3RpbWVvdXQpXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDEyLVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDEzOlx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVx1MDAzZXEsIGN0eC1cdTAwM2VwYWNrZXQsIHJ0eF90aW1lb3V0LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVx0XHRcdFx0ICAgICAgXHUwMDI2c3RhcnRfdGltZXIsIGN0eC1cdTAwM2VnZnApO1xuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9MTAzOD1zdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2hfZGF0YShzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzItXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2Y3R4LVx1MDAzZXEtXHUwMDNlcmV0cmFuc21pdCkgXHUwMDI2XHUwMDI2XG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XHQgICAgIXNjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LCBydHhfdGltZW91dCkpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzQtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU2NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGljIEZ1bmN0aW9uOiBgc2N0cF9vdXRxX2ZsdXNoX2RhdGFgKioKCk9rYXksIHNvIGBzY3RwX291dHFfZmx1c2hfZGF0YWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gU3RhdGljIGZ1bmN0aW9ucywgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoLCB0eXBpY2FsbHkgcG9pbnQgdG8gaW50ZXJuYWwsIHRpZ2h0bHkgc2NvcGVkIGZ1bmN0aW9uYWxpdHkuIEl0IG1lYW5zIGl0JiMzOTtzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIGl0JiMzOTtzIGRlZmluZWQsIHdoaWNoIGluIHR1cm4gbWVhbnMgaXTigJlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBpdHMgaW1tZWRpYXRlIGRlcGVuZGVuY2llcy4gU28sIG15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSBwcmVjaXNlbHkgKndobyogaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIGlzIGtleSB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBTQ1RQIGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgYW5kIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIHJvdXRpbmUgaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9vdXRxX2ZsdXNoX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmM9OTkyPXN0YXRpYyBib29sIHNjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM3LVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDM4OnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9kYXRhKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM5LVx0XHRcdFx0IGludCBydHhfdGltZW91dClcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTExOTM9c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoKHN0cnVjdCBzY3RwX291dHEgKnEsIGludCBydHhfdGltZW91dCwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIxNy1cbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxODpcdHNjdHBfb3V0cV9mbHVzaF9kYXRhKFx1MDAyNmN0eCwgcnR4X3RpbWVvdXQpO1xubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgc2N0cF9vdXRxX2ZsdXNoYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgc2N0cF9vdXRxX2ZsdXNoYCBpcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBTdGF0aWMgZnVuY3Rpb25zLCB3aXRoaW4gYSBsYXJnZSBjb2RlYmFzZSBsaWtlIFNDVFAsIGFyZSBvZnRlbiBjcnVjaWFsIGZvciBpbnRlcm5hbCBzdGF0ZSBtYW5hZ2VtZW50IG9yIGhpZ2hseSBzcGVjaWZpYyBvcGVyYXRpb25zLiBUaGV5IGFyZW4mIzM5O3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBpZGVudGlmeSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIFNDVFAgc3RhY2suIElzIGl0IGNhbGxlZCBmcm9tIHRoZSBjb21tb24gcGF0aCBvciBzb21ldGhpbmcgbW9yZSBlc290ZXJpYz8gVGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSB0aGUga2V5IHRvIHVubG9ja2luZyBpdHMgbWVhbmluZy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgYWNjZXNzIHBhdHRlcm5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX291dHFfZmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmM9NTA9c3RhdGljIHZvaWQgc2N0cF9tYXJrX21pc3Npbmcoc3RydWN0IHNjdHBfb3V0cSAqcSxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU1LVxubmV0L3NjdHAvb3V0cXVldWUuYzo1NjpzdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2goc3RydWN0IHNjdHBfb3V0cSAqcSwgaW50IHJ0eF90aW1lb3V0LCBnZnBfdCBnZnApO1xubmV0L3NjdHAvb3V0cXVldWUuYy01Ny1cbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTI4MT12b2lkIHNjdHBfb3V0cV90YWlsKHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX2NodW5rICpjaHVuaywgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMzEyLVx0aWYgKCFxLVx1MDAzZWNvcmspXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjMxMzpcdFx0c2N0cF9vdXRxX2ZsdXNoKHEsIDAsIGdmcCk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTMxNC19XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYz01Mzc9dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01ODYtXHRpZiAocmVhc29uICE9IFNDVFBfUlRYUl9GQVNUX1JUWClcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTg3Olx0XHRzY3RwX291dHFfZmx1c2gocSwgLyogcnR4X3RpbWVvdXQgKi8gMSwgR0ZQX0FUT01JQyk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU4OC19XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTEtICogVHJhbnNtaXQgREFUQSBjaHVua3Mgb24gdGhlIHJldHJhbnNtaXQgcXVldWUuICBVcG9uIHJldHVybiBmcm9tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICYjMzk7cGt0JiMzOTsgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5My0gKiBuZWVkIHRvIGJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBjYWxsZXIuXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5ODpzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVx0XHRcdFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9NzYwPXZvaWQgc2N0cF9vdXRxX3VuY29yayhzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBnZnBfdCBnZnApXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy03NjQtXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjc2NTpcdHNjdHBfb3V0cV9mbHVzaChxLCAwLCBnZnApO1xubmV0L3NjdHAvb3V0cXVldWUuYy03NjYtfVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9ODAxPXN0YXRpYyB2b2lkIHNjdHBfb3V0cV9zZWxlY3RfdHJhbnNwb3J0KHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtODc5LVxubmV0L3NjdHAvb3V0cXVldWUuYzo4ODA6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX2N0cmwoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTg4MS17XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy05OTEtLyogUmV0dXJucyBmYWxzZSBpZiBuZXcgZGF0YSBzaG91bGRuJiMzOTt0IGJlIHNlbnQgKi9cbm5ldC9zY3RwL291dHF1ZXVlLmM6OTkyOnN0YXRpYyBib29sIHNjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTk5My1cdFx0XHRcdGludCBydHhfdGltZW91dClcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTItXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XHRlcnJvciA9IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChjdHgtXHUwMDNlcSwgY3R4LVx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTQtXHRcdFx0XHQgICAgICBcdTAwMjZzdGFydF90aW1lciwgY3R4LVx1MDAzZWdmcCk7XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM3LVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDM4OnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9kYXRhKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM5LVx0XHRcdFx0IGludCBydHhfdGltZW91dClcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzItXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2Y3R4LVx1MDAzZXEtXHUwMDNlcmV0cmFuc21pdCkgXHUwMDI2XHUwMDI2XG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XHQgICAgIXNjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LCBydHhfdGltZW91dCkpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzQtXHRcdHJldHVybjtcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExNTUtXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjExNTY6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX3RyYW5zcG9ydHMoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExNTcte1xuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMTE5Mi1cbm5ldC9zY3RwL291dHF1ZXVlLmM6MTE5MzpzdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2goc3RydWN0IHNjdHBfb3V0cSAqcSwgaW50IHJ0eF90aW1lb3V0LCBnZnBfdCBnZnApXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExOTQte1xuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIxMi1cbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxMzpcdHNjdHBfb3V0cV9mbHVzaF9jdHJsKFx1MDAyNmN0eCk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTQtXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE3LVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjE4Olx0c2N0cF9vdXRxX2ZsdXNoX2RhdGEoXHUwMDI2Y3R4LCBydHhfdGltZW91dCk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTktXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjIxLVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjIyOlx0c2N0cF9vdXRxX2ZsdXNoX3RyYW5zcG9ydHMoXHUwMDI2Y3R4KTtcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIyMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgU0NUUCBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBzY3RwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBhcmUgdGhlc2UgZnVuY3Rpb25zICpleHBvcnRlZCo/IEFyZSB0aGV5IHZpc2libGUgb3V0c2lkZSB0aGVpciBjb21waWxhdGlvbiB1bml0PyBJZiB0aGV5IGFyZSwgaXQmIzM5O3MgZ29pbmcgdG8gaW5mbHVlbmNlIGhvdyBJIGFuYWx5emUgdGhlIGNvZGUsIGhvdyBJIGNvbnNpZGVyIHRoZWlyIHBvdGVudGlhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIG1vZHVsZXMsIGFuZCB1bHRpbWF0ZWx5LCBob3cgZWFzaWx5IEkgY2FuIHVuZGVyc3RhbmQgYW5kIHBvdGVudGlhbGx5IG1vZGlmeSB0aGUgU0NUUCBzdGFjayYjMzk7cyBiZWhhdmlvci4gSSBuZWVkIHRvIGtub3cgaWYgdGhleSYjMzk7cmUgc3RyaWN0bHkgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvciBwYXJ0IG9mIGEgZGVmaW5lZCBBUEkuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHRoZSBzeW1ib2wgdGFibGVzIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgdGhlaXIgdmlzaWJpbGl0eS4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBiZWZvcmUgSSBjYW4gcHJvY2VlZCB3aXRoIGEgZGVlcGVyIGRpdmUgaW50byB0aGVpciBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnNjdHBfcmV0cmFuc21pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeS4gSGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHByb3ZpZGVkIHRleHQgYXMgdGhlIGJhc2lzIGZvciBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipJbnRlcm5hbCBBc3Nlc3NtZW50OiBIZWFkZXIgUHJlc2VuY2UgJmFtcDsgU2lnbmlmaWNhbmNlKioKClJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIGEgcXVpY2sgY2hlY2sgaGVyZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgKnN0cnVjdHVyZSogb2YgdGhpcyBpbmZvcm1hdGlvbi4gVGhlIHByb21wdCBtZW50aW9ucyAmIzM0O2hlYWRlcnMmIzM0OyBzbyBJJiMzOTttIGltbWVkaWF0ZWx5IHNjYW5uaW5nIHRoZSB0ZXh0IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55LCBhbmQgdGhlaXIgcHJlc2VuY2UgbWF5IGJlIHNpZ25pZmljYW50LiBJZiB0aGV5JiMzOTtyZSBwcmVzZW50LCB3aGF0IGtpbmQgb2YgaGVhZGVycyBhcmUgdGhleT8gQXJlIHRoZXkgaW5mb3JtYXRpdmUsIGRlc2NyaXB0aXZlLCBvciBqdXN0IHVzZWQgZm9yIGZvcm1hdHRpbmc/IFRoZSBleGlzdGVuY2Ugb2YgaGVhZGVycyBjb3VsZCB0ZWxsIG1lIHNvbWV0aGluZyBhYm91dCB0aGUgb3JnYW5pemF0aW9uIGFuZCB1bmRlcmx5aW5nIGxvZ2ljLiBUaGlzIGlzIGZvdW5kYXRpb25hbDsgZGVwZW5kaW5nIG9uIGlmIGFuZCBob3cgdGhleSBhcmUgdXNlZCwgaXQgd2lsbCBpbmZvcm0gbXkgYXBwcm9hY2ggdG8gc3VtbWFyaXppbmcuIFNvLCB0aGlzIGluaXRpYWwgYXNzZXNzbWVudCBvZiBzdHJ1Y3R1cmUgY291bGQgY2hhbmdlIHRoZSBlbnRpcmUgYXBwcm9hY2ggdG8gbXkgc3VtbWFyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9yZXRyYW5zbWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaD0zNTI9ZW51bSB7XG4tLVxuaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaC0zODItLyogUmVhc29ucyB0byByZXRyYW5zbWl0LiAqL1xuaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaDozODM6ZW51bSBzY3RwX3JldHJhbnNtaXRfcmVhc29uIHtcbmluY2x1ZGUvbmV0L3NjdHAvY29uc3RhbnRzLmgtMzg0LVx0U0NUUF9SVFhSX1QzX1JUWCxcbi0tXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaD0xMTEzPWludCBzY3RwX291dHFfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHNjdHBfb3V0cSAqKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjExMTQ6dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTE1Olx0XHQgICAgIGVudW0gc2N0cF9yZXRyYW5zbWl0X3JlYXNvbiByZWFzb24pO1xuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNjp2b2lkIHNjdHBfcmV0cmFuc21pdF9tYXJrKHN0cnVjdCBzY3RwX291dHEgKiwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICosIF9fdTgpO1xuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMTExNy12b2lkIHNjdHBfb3V0cV91bmNvcmsoc3RydWN0IHNjdHBfb3V0cSAqLCBnZnBfdCBnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzEzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNDVFAgUmV0cmFuc21pc3Npb24gQ2FuZGlkYXRlcyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBwb3RlbnRpYWwgYXJlYXMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB3aXRoaW4gdGhlIFNDVFAgY29kZWJhc2UuIEkmIzM5O20gdGhpbmtpbmcgdGhhdCBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYCBsb29rIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy4gVGhleSBhbGwgc2VlbSBsb2dpY2FsbHkgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBpcGVsaW5lIGFuZCBhcmUgbGlrZWx5IGtleSB0byBwZXJmb3JtYW5jZSBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHNjdHBfb3V0cV90YWlsYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSB3aXRoaW4gdGhlIGRhdGEgcXVldWUgaXMgY3JpdGljYWwuIFRoYXQgdGFpbCBwb2ludGVyIGxpa2VseSBpbnRlcmFjdHMgd2l0aCByZXRyYW5zbWlzc2lvbiBhbmQgZmxvdyBjb250cm9sIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBhcm91bmQgdGhpcyBmdW5jdGlvbiB0byBzZWUgd2hhdCBpbnNpZ2h0cyBpdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX291dHFfdGFpbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTExMTA9dm9pZCBzY3RwX291dHFfZnJlZShzdHJ1Y3Qgc2N0cF9vdXRxKik7XG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTExOnZvaWQgc2N0cF9vdXRxX3RhaWwoc3RydWN0IHNjdHBfb3V0cSAqLCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssIGdmcF90KTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTItaW50IHNjdHBfb3V0cV9zYWNrKHN0cnVjdCBzY3RwX291dHEgKiwgc3RydWN0IHNjdHBfY2h1bmsgKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwOTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBgc2N0cF9vdXRxX3VuY29ya2A6CgoqKkFuYWx5emluZyBgc2N0cF9vdXRxX3VuY29ya2AqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgc2N0cF9vdXRxX3VuY29ya2AuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwgZm9yIFNDVFAmIzM5O3Mgb3V0Ym91bmQgcXVldWUgbWFuYWdlbWVudC4gSXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgZGF0YSBmcm9tIHRoZSBvdXRib3VuZCBxdWV1ZSB3aGVuIGNlcnRhaW4gY29uZGl0aW9ucyBhcmUgbWV0LCBhbGxvd2luZyB0aGUga2VybmVsIHRvIHRyYW5zbWl0IGl0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCB0cmlnZ2VycyB0aGUgJiMzNDt1bmNvcmtpbmcmIzM0Oz8gSXMgaXQgYmFzZWQgb24gd2luZG93IHNpemUsIGNvbmdlc3Rpb24gY29udHJvbCBzaWduYWxzLCBvciBhIHRpbWVyPyBEb2VzIGl0IGhhbmRsZSBtdWx0aXBsZSBjaHVua3Mgb3IganVzdCBhIHNpbmdsZSBvbmU/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGluIHRoZSBmYXN0IHBhdGggb3Igb25seSBvY2Nhc2lvbmFsbHk/IEFueSBsb2NrcyBpbnZvbHZlZD8gQW5kIG1vcmUgaW1wb3J0YW50bHksIGRvZXMgaXQgaW1wbGVtZW50IGFsbCB0aGUgc3RhbmRhcmRzIGZyb20gUkZDIDQ5NjAgb3IgaGFzIHRoZXJlIGJlZW4gYW55IHJlY2VudCBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucz8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgLSB3aGF0IGNhbGxzIGl0LCBhbmQgd2hhdCBmdW5jdGlvbnMgaXQgY2FsbHMuIEhvcGVmdWxseSwgdGhlcmUgYXJlIHNvbWUgY2xlYXIgY29tbWVudHMhIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBsb2dpYyBoZXJlLCBlc3BlY2lhbGx5IGFyb3VuZCBmbG93IGNvbnRyb2wgYW5kIHBvdGVudGlhbGx5IHJldHJhbnNtaXNzaW9uIGhhbmRsaW5nLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTExMTY9dm9pZCBzY3RwX3JldHJhbnNtaXRfbWFyayhzdHJ1Y3Qgc2N0cF9vdXRxICosIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqLCBfX3U4KTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjExMTc6dm9pZCBzY3RwX291dHFfdW5jb3JrKHN0cnVjdCBzY3RwX291dHEgKiwgZ2ZwX3QgZ2ZwKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTgtdm9pZCBzY3RwX3Byc2N0cF9wcnVuZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU0MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBTQ1RQIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBTQ1RQIHN0YWNrIGlzIGFjdHVhbGx5IGhhbmRsaW5nIHRoaW5ncy4gSSBrbm93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byBsb29rIGF0OiBgc2N0cF9yZXRyYW5zbWl0YCwgb2J2aW91c2x5IHRyaWdnZXJlZCBvbiByZXRyYW5zbWlzc2lvbiwgdGhhdCYjMzk7cyBrZXkgdG8gdGhlIFNDVFAgcHJvY2Vzcy4gVGhlbiB3ZSBoYXZlIGBzY3RwX291dHFfdGFpbGAgZm9yIHdoZW4gYSBjaHVuayBpcyBhZGRlZCwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gQWxzbywgYHNjdHBfb3V0cV91bmNvcmtgIGZvciB3aGVuIHRoZSBvdXRwdXQgcXVldWUgaXMgdW5jb3JrZWQuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBhZGQgdGhlc2UgZnVuY3Rpb25zIHRvIG15IGluaXRpYWwgaW52ZXN0aWdhdGlvbiAtIHRoZXkgYXJlIHRoZSByaWdodCBmb2N1cyBzeW1ib2xzLgoKSSYjMzk7bGwgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgSVBfU0NUUGAgc2VlbXMgbGlrZSB0aGUgbWFpbiBvbmUgdGhhdCBJJiMzOTtsbCBiZSB0YXJnZXRpbmcsIGJ1dCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgaW4gYG5ldC9zY3RwL0tjb25maWdgIHRvIGJlIHN1cmUgdGhlcmUmIzM5O3Mgbm90aGluZyBlbHNlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnPTY9bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xubmV0L3NjdHAvS2NvbmZpZzo4Olx0ZGVwZW5kcyBvbiBJTkVUXG5uZXQvc2N0cC9LY29uZmlnLTktXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG4tLVxubmV0L3NjdHAvS2NvbmZpZz00MT1jb25maWcgU0NUUF9EQkdfT0JKQ05UXG5uZXQvc2N0cC9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXCYjMzQ7XG5uZXQvc2N0cC9LY29uZmlnOjQzOlx0ZGVwZW5kcyBvbiBQUk9DX0ZTXG5uZXQvc2N0cC9LY29uZmlnLTQ0LVx0aGVscFxuLS1cbm5ldC9zY3RwL0tjb25maWc9NzA9Y29uZmlnIElORVRfU0NUUF9ESUFHXG5uZXQvc2N0cC9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzItXHRkZWZfdHJpc3RhdGUgSU5FVF9ESUFHXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTk4CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBTQ1RQIE91dHF1ZXVlIExvZ2ljKioKCk9rYXksIHNvIHRoZSBtYWluIHBvaW50IGhlcmUgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFNDVFAsIHNwZWNpZmljYWxseSB0aGUgb3V0cXVldWUgaGFuZGxpbmcsIGFuZCB3ZSBuZWVkIHRvIHZlcmlmeSBzb21lIGNoYW5nZXMuIGBJTkVUYCBpcyBnZW5lcmFsbHkgZW5hYmxlZCwgc28gd2UgZG9uJiMzOTt0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhhdCBodXJkbGUsIGJ1dCBgSVBfU0NUUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBsb29rIGZvci4KCkJhc2ljYWxseSwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBsb2dpYyBvZiBob3cgU0NUUCBoYW5kbGVzIGRhdGEgdGhhdCBuZWVkcyB0byBiZSByZXRyYW5zbWl0dGVkLCBzcGVjaWZpY2FsbHkgd2hlbiBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHRoZSBmbHVzaC4gVGhpcyBpcyAqY3JpdGljYWwqIGZ1bmN0aW9uYWwgY29kZTsgaXQmIzM5O3MgcmlnaHQgaW4gdGhlIHBhdGggb2Ygc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLiBUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIGlzIHRoaXMgYXJlYSAqZGVmaW5pdGVseSogbmVlZHMgZnV6emluZy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBtZW1vcnkgcHJvYmxlbXMuCgpUaGUgcHJpbWFyeSBmdW5jdGlvbnMgd2UmIzM5O2xsIHdhbnQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiBhcmUgYHNjdHBfcmV0cmFuc21pdGAsIGBzY3RwX291dHFfdGFpbGAsIGFuZCBgc2N0cF9vdXRxX3VuY29ya2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIG9mIHRoaXMgZnVuY3Rpb25hbGl0eS4gQW5kLCBvZiBjb3Vyc2UsIGVuc3VyZSBgSVBfU0NUUGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyB0aGUgb25seSByZWFsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3RhaWwmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3RhaWwmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzoxNi44NTg1MDc4MzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc0ODI1NzU1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9vdXRxX3RhaWxcIixcbiAgICBcInNjdHBfb3V0cV91bmNvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MTYuODU4NTEzOTgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjU3ODE3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYjY0YzU5ODE0YWI4OWY4ZWNjNzIzZjBjZTkwMjA5NjE5MzE3NDMwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL291dHF1ZXVlLmMgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jXFxuaW5kZXggZjZiOGMxM2RhZmE0YS4uZTkyZmI5ZGE0NjQ3YSAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jXFxuKysrIGIvbmV0L3NjdHAvb3V0cXVldWUuY1xcbkBAIC02NTAsNiArNjUwLDcgQEAgc3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxuIFxcdFxcdGlmIChjaHVuay1cXHUwMDNldHNuX2dhcF9hY2tlZCkge1xcbiBcXHRcXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2Y2h1bmstXFx1MDAzZXRyYW5zbWl0dGVkX2xpc3QsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2dHJhbnNwb3J0LVxcdTAwM2V0cmFuc21pdHRlZCk7XFxuK1xcdFxcdFxcdGNodW5rLVxcdTAwM2V0cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzoxNy4zMjUzOTk4MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDcwMTU2NzUzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9vdXRxX3RhaWxcIixcbiAgICBcInNjdHBfb3V0cV91bmNvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmI2NGM1OTgxNGFiODlmOGVjYzcyM2YwY2U5MDIwOTYxOTMxNzQzMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmNcbmluZGV4IGY2YjhjMTNkYWZhNGEuLmU5MmZiOWRhNDY0N2EgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jXG4rKysgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jXG5AQCAtNjUwLDYgKzY1MCw3IEBAIHN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LFxuIFx0XHRpZiAoY2h1bmstXHUwMDNldHNuX2dhcF9hY2tlZCkge1xuIFx0XHRcdGxpc3RfbW92ZV90YWlsKFx1MDAyNmNodW5rLVx1MDAzZXRyYW5zbWl0dGVkX2xpc3QsXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2dHJhbnNwb3J0LVx1MDAzZXRyYW5zbWl0dGVkKTtcbitcdFx0XHRjaHVuay1cdTAwM2V0cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjE3LjMyNTQwMTYxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDI4ODUxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcGF0Y2ggYW5kIHJlbGV2YW50IGNvZGU6XG5cbioqQW5hbHl6aW5nIGEgU0NUUCBPdXRxdWV1ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBtb2RpZmljYXRpb24gaW4gYG5ldC9zY3RwL291dHF1ZXVlLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgaW50cm9kdWNpbmcgYGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtgIHdpdGhpbiB0aGUgYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgcHVycG9zZS4gVGhpcyBhc3NpZ25tZW50IGxvb2tzIGxpa2UgaXQncyBzZXR0aW5nIGEgdHJhbnNwb3J0IGFzc29jaWF0aW9uIGZvciBhIGNodW5rLlxuXG5UbyBnZXQgYSBiZXR0ZXIgZ3JpcCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBfX3NjdHBfb3V0cV9mbHVzaF9ydHhgIGl0c2VsZiB3aXRoaW4gdGhlIGBuZXQvc2N0cC9vdXRxdWV1ZS5jYCBmaWxlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbG9jYXRpb24gb2YgdGhhdCBmdW5jdGlvbiBhbmQgaWRlbnRpZnkgaXQncyBleGFjdCBkZWZpbml0aW9uLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzb3VyY2UgZmlsZSB0byB2ZXJpZnkgdGhlIGZpbGUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZmlsZSwgaWYgbmVlZGVkLiBLbm93aW5nIHRoZSBmdW5jdGlvbidzIGRlY2xhcmF0aW9uIHdpbGwgcmVhbGx5IGhlbHAgbWUgc2VlIGhvdyB0aGlzIG5ldyBhc3NpZ25tZW50IGZpdHMgaW4gd2l0aCB0aGUgZXhpc3RpbmcgbG9naWMgb2YgcmV0cmFuc21pdHRpbmcgY2h1bmtzLiBGcm9tIHRoZXJlLCBJJ2xsIGFzc2VzcyB3aGV0aGVyIHRoaXMgYXNzaWdubWVudCBpcyBjb3JyZWN0LCBvciBpZiBpdCBtaWdodCBiZSBtaXNzaW5nIG9yIHJlZHVuZGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjIxLjc2ODI4ODgyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI2NTExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NjdHBfb3V0cV9mbHVzaF9ydHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkxLSAqIFRyYW5zbWl0IERBVEEgY2h1bmtzIG9uIHRoZSByZXRyYW5zbWl0IHF1ZXVlLiAgVXBvbiByZXR1cm4gZnJvbVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJ3BrdCcgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTMtICogbmVlZCB0byBiZSB0cmFuc21pdHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo1OTg6c3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxMi1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XFx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVxcdTAwM2VxLCBjdHgtXFx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzdGFydF90aW1lciwgY3R4LVxcdTAwM2VnZnApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzoyMS44MTY1NTg4NDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg0OTg1MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgU0NUUCBSZXRyYW5zbWlzc2lvbiBMb2dpYyoqXG5cblJpZ2h0LCB0aGUgdHJhY2UgcG9pbnRzIHRvIGBfX3NjdHBfb3V0cV9mbHVzaF9ydHhgLiBUaGF0J3Mgd2hlcmUgdGhlIHJldHggcmV0cmFuc21pc3Npb24gbG9naWMgc2VlbXMgdG8gYmUgcmVzaWRpbmcsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBMZXQncyBzZWUgaG93IHRoZSBwYXRjaCBoYXMgY2hhbmdlZCB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdC4gVGltZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBhbmQgc2VlIHdoYXQgdGhlIGlzc3VlIGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MjUuMTAxNTQ4MzQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY3RwL291dHF1ZXVlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjMwOlxcdFxcdCAqIHBhY2tldCBvZiByZXRyYW5zbWl0dGVkIGRhdGEuXVxcbiA2MzE6XFx0XFx0ICpcXG4gNjMyOlxcdFxcdCAqIEZvciBmYXN0IHJldHJhbnNtaXNzaW9ucyB3ZSBhbHNvIHNlbmQgb25seSBPTkUgcGFja2V0LiAgSG93ZXZlcixcXG4gNjMzOlxcdFxcdCAqIGlmIHdlIGFyZSBqdXN0IGZsdXNoaW5nIHRoZSBxdWV1ZSBkdWUgdG8gb3BlbiB3aW5kb3csIHdlJ2xsXFxuIDYzNDpcXHRcXHQgKiB0cnkgdG8gc2VuZCBhcyBtdWNoIGFzIHBvc3NpYmxlLlxcbiA2MzU6XFx0XFx0ICovXFxuIDYzNjpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY2h1bmssIGNodW5rMSwgbHF1ZXVlLCB0cmFuc21pdHRlZF9saXN0KSB7XFxuIDYzNzpcXHRcXHRcXHQvKiBJZiB0aGUgY2h1bmsgaXMgYWJhbmRvbmVkLCBtb3ZlIGl0IHRvIGFiYW5kb25lZCBsaXN0LiAqL1xcbiA2Mzg6XFx0XFx0XFx0aWYgKHNjdHBfY2h1bmtfYWJhbmRvbmVkKGNodW5rKSkge1xcbiA2Mzk6XFx0XFx0XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2Y2h1bmstXFx1MDAzZXRyYW5zbWl0dGVkX2xpc3QpO1xcbiA2NDA6XFx0XFx0XFx0XFx0c2N0cF9pbnNlcnRfbGlzdChcXHUwMDI2cS1cXHUwMDNlYWJhbmRvbmVkLFxcbiA2NDE6XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZjaHVuay1cXHUwMDNldHJhbnNtaXR0ZWRfbGlzdCk7XFxuIDY0MjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNjQzOlxcdFxcdFxcdH1cXG4gNjQ0OlxcdFxcbiA2NDU6XFx0XFx0XFx0LyogTWFrZSBzdXJlIHRoYXQgR2FwIEFja2VkIFRTTnMgYXJlIG5vdCByZXRyYW5zbWl0dGVkLiAgQVxcbiA2NDY6XFx0XFx0XFx0ICogc2ltcGxlIGFwcHJvYWNoIGlzIGp1c3QgdG8gbW92ZSBzdWNoIFRTTnMgb3V0IG9mIHRoZVxcbiA2NDc6XFx0XFx0XFx0ICogd2F5IGFuZCBpbnRvIGEgJ3RyYW5zbWl0dGVkJyBxdWV1ZSBhbmQgc2tpcCB0byB0aGVcXG4gNjQ4OlxcdFxcdFxcdCAqIG5leHQgY2h1bmsuXFxuIDY0OTpcXHRcXHRcXHQgKi9cXG4gNjUwOlxcdFxcdFxcdGlmIChjaHVuay1cXHUwMDNldHNuX2dhcF9hY2tlZCkge1xcbiA2NTE6XFx0XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNmNodW5rLVxcdTAwM2V0cmFuc21pdHRlZF9saXN0LFxcbiA2NTI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ0cmFuc3BvcnQtXFx1MDAzZXRyYW5zbWl0dGVkKTtcXG4gNjUzOlxcdFxcdFxcdFxcdGNodW5rLVxcdTAwM2V0cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XFxuIDY1NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNjU1OlxcdFxcdFxcdH1cXG4gNjU2OlxcdFxcbiA2NTc6XFx0XFx0XFx0LyogSWYgd2UgYXJlIGRvaW5nIGZhc3QgcmV0cmFuc21pdCwgaWdub3JlIG5vbi1mYXN0X3J0cmFuc21pdFxcbiA2NTg6XFx0XFx0XFx0ICogY2h1bmtzXFxuIDY1OTpcXHRcXHRcXHQgKi9cXG4gNjYwOlxcdFxcdFxcdGlmIChmYXN0X3J0eCBcXHUwMDI2XFx1MDAyNiAhY2h1bmstXFx1MDAzZWZhc3RfcmV0cmFuc21pdClcXG4gNjYxOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA2NjI6XFx0XFxuIDY2MzpcXHRyZWRvOlxcbiA2NjQ6XFx0XFx0XFx0LyogQXR0ZW1wdCB0byBhcHBlbmQgdGhpcyBjaHVuayB0byB0aGUgcGFja2V0LiAqL1xcbiA2NjU6XFx0XFx0XFx0c3RhdHVzID0gc2N0cF9wYWNrZXRfYXBwZW5kX2NodW5rKHBrdCwgY2h1bmspO1xcbiA2NjY6XFx0XFxuIDY2NzpcXHRcXHRcXHRzd2l0Y2ggKHN0YXR1cykge1xcbiA2Njg6XFx0XFx0XFx0Y2FzZSBTQ1RQX1hNSVRfUE1UVV9GVUxMOlxcbiA2Njk6XFx0XFx0XFx0XFx0aWYgKCFwa3QtXFx1MDAzZWhhc19kYXRhIFxcdTAwMjZcXHUwMDI2ICFwa3QtXFx1MDAzZWhhc19jb29raWVfZWNobykge1xcbiA2NzA6XFx0XFx0XFx0XFx0XFx0LyogSWYgdGhpcyBwYWNrZXQgZGlkIG5vdCBjb250YWluIERBVEEgdGhlblxcbiA2NzE6XFx0XFx0XFx0XFx0XFx0ICogcmV0cmFuc21pc3Npb24gZGlkIG5vdCBoYXBwZW4sIHNvIGRvIGl0XFxuIDY3MjpcXHRcXHRcXHRcXHRcXHQgKiBhZ2Fpbi4gIFdlJ2xsIGlnbm9yZSB0aGUgZXJyb3IgaGVyZSBzaW5jZVxcbiA2NzM6XFx0XFx0XFx0XFx0XFx0ICogY29udHJvbCBjaHVua3MgYXJlIGFscmVhZHkgZnJlZWQgc28gdGhlcmVcXG4gNjc0OlxcdFxcdFxcdFxcdFxcdCAqIGlzIG5vdGhpbmcgd2UgY2FuIGRvLlxcbiA2NzU6XFx0XFx0XFx0XFx0XFx0ICovXFxuIDY3NjpcXHRcXHRcXHRcXHRcXHRzY3RwX3BhY2tldF90cmFuc21pdChwa3QsIGdmcCk7XFxuIDY3NzpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlZG87XFxuIDY3ODpcXHRcXHRcXHRcXHR9XFxuIDY3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MjUuMTAxNjkwNDY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NzMwMzE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipTQ1RQIFJUWCBGbHVzaCBhbmQgVHJhbnNwb3J0IEFzc2lnbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtgIHdpdGhpbiB0aGUgYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGFzc2lnbmluZyBhIHRyYW5zcG9ydCBwb2ludGVyIHRvIGEgY2h1bmsgYmVpbmcgcmV0cmFuc21pdHRlZC4gVGhlIGNvbnRleHQgaGVyZSBpcyBkZWZpbml0ZWx5IFNDVFAsIHdoaWNoIGlzIG15IGFyZWEgb2YgZXhwZXJ0aXNlLiBCZWZvcmUgSSBkaXZlIGludG8gdGhlIGRldGFpbHMgb2YgKndoeSogdGhpcyBhc3NpZ25tZW50IGlzIGJlaW5nIG1hZGUgd2l0aGluIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24sIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9ucy4gSSB3YW50IHRvIGVuc3VyZSB0aGlzIGFkZGl0aW9uIGFsaWducyB3aXRoIGhvdyBTQ1RQIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBwYXJ0aWN1bGFyIGVudmlyb25tZW50LiBNeSBhaW0gaXMgdG8gbG9vayBhdCBob3cgd2UgaGF2ZSBTQ1RQIGNvbmZpZ3VyZWQgYW5kIGVuc3VyZSB0aGF0IHRoaXMgdHJhbnNwb3J0IGFzc2lnbm1lbnQgaXMgbm90IGdvaW5nIHRvIGJyZWFrIGFueXRoaW5nIHdlIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjI4LjE3ODk5NTc2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzg0ODY4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MjguMjI2ODQ4MjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk0OTkyMTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0NUUCBPdXRnb2luZyBRdWV1ZSBGbHVzaCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgYElQX1NDVFBgLiBHb3QgaXQuIE15IHByaW1hcnkgZ29hbCBub3cgaXMgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIHN5bWJvbHMgaW52b2x2ZWQgaW4gdGhpcyBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIFNDVFAgaW1wbGVtZW50YXRpb24uIE15IGF0dGVudGlvbiBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgZnVuY3Rpb24gYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAuIEl0J3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGVyZSBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUuIEtub3dpbmcgdGhhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIFRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgY29kZS4gVW5kZXJzdGFuZGluZyB3aGVyZSBhbmQgd2hlbiBgX19zY3RwX291dHFfZmx1c2hfcnR4YCBpcyBpbnZva2VkIGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgaXRzIGZ1bmN0aW9uIGFuZCBwb3RlbnRpYWwgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDgxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MzEuNzIxODQyNzI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQyNzQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NjdHBfb3V0cV9mbHVzaF9ydHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkxLSAqIFRyYW5zbWl0IERBVEEgY2h1bmtzIG9uIHRoZSByZXRyYW5zbWl0IHF1ZXVlLiAgVXBvbiByZXR1cm4gZnJvbVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJ3BrdCcgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTMtICogbmVlZCB0byBiZSB0cmFuc21pdHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo1OTg6c3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxMi1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XFx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVxcdTAwM2VxLCBjdHgtXFx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzdGFydF90aW1lciwgY3R4LVxcdTAwM2VnZnApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozMS43NjQyNzQ5MzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2ODE1NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYHNjdHBfb3V0cV9mbHVzaF9ydHhgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgc2N0cF9vdXRxX2ZsdXNoX3J0eGAgaXMgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLiBJbnRlcmVzdGluZy4gR2l2ZW4gdGhhdCBpdCdzIHN0YXRpYywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZC4gU3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIHNjb3BlZCB3aXRoaW4gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgc28gdHJhY2luZyB0aG9zZSBjYWxscyB3aWxsIGdpdmUgbWUgYSBjcml0aWNhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmdW5jdGlvbidzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcmV0cmFuc21pc3Npb24gbG9naWMuIExldCdzIGdldCB0byBpdCBhbmQgc2VlIHdobydzIGNhbGxpbmcgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozNC44MzI0MzMxMjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTQ2MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfb3V0cV9mbHVzaF9ydHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkxLSAqIFRyYW5zbWl0IERBVEEgY2h1bmtzIG9uIHRoZSByZXRyYW5zbWl0IHF1ZXVlLiAgVXBvbiByZXR1cm4gZnJvbVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJ3BrdCcgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTMtICogbmVlZCB0byBiZSB0cmFuc21pdHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo1OTg6c3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz04ODA9c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX2N0cmwoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgpXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTk5MS0vKiBSZXR1cm5zIGZhbHNlIGlmIG5ldyBkYXRhIHNob3VsZG4ndCBiZSBzZW50ICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo5OTI6c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTk5My1cXHRcXHRcXHRcXHRpbnQgcnR4X3RpbWVvdXQpXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTItXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDEzOlxcdGVycm9yID0gX19zY3RwX291dHFfZmx1c2hfcnR4KGN0eC1cXHUwMDNlcSwgY3R4LVxcdTAwM2VwYWNrZXQsIHJ0eF90aW1lb3V0LFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxNC1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2c3RhcnRfdGltZXIsIGN0eC1cXHUwMDNlZ2ZwKTtcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmM9MTAzOD1zdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2hfZGF0YShzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3Mi1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmN0eC1cXHUwMDNlcS1cXHUwMDNlcmV0cmFuc21pdCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XFx0ICAgICFzY3RwX291dHFfZmx1c2hfcnR4KGN0eCwgcnR4X3RpbWVvdXQpKVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3NC1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjM0Ljg3OTU4NDk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjMyNjkzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGljIEZ1bmN0aW9uOiBgc2N0cF9vdXRxX2ZsdXNoX2RhdGFgKipcblxuT2theSwgc28gYHNjdHBfb3V0cV9mbHVzaF9kYXRhYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBTdGF0aWMgZnVuY3Rpb25zLCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIFNDVFAgaW1wbGVtZW50YXRpb24gSSdtIHdvcmtpbmcgd2l0aCwgdHlwaWNhbGx5IHBvaW50IHRvIGludGVybmFsLCB0aWdodGx5IHNjb3BlZCBmdW5jdGlvbmFsaXR5LiBJdCBtZWFucyBpdCdzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIGl0J3MgZGVmaW5lZCwgd2hpY2ggaW4gdHVybiBtZWFucyBpdOKAmXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGl0cyBpbW1lZGlhdGUgZGVwZW5kZW5jaWVzLiBTbywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGNhbGxlcnMgaXMga2V5IHRvIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IHdpdGhpbiB0aGUgbGFyZ2VyIFNDVFAgYXJjaGl0ZWN0dXJlLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIGFuZCBidWlsZCBhIG1lbnRhbCBtYXAgb2Ygd2hlcmUgdGhpcyByb3V0aW5lIGlzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozOC4wMDI4NTc2NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDI5NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfb3V0cV9mbHVzaF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL291dHF1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAzNy1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMzg6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX2RhdGEoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM5LVxcdFxcdFxcdFxcdCBpbnQgcnR4X3RpbWVvdXQpXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTExOTM9c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoKHN0cnVjdCBzY3RwX291dHEgKnEsIGludCBydHhfdGltZW91dCwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE3LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxODpcXHRzY3RwX291dHFfZmx1c2hfZGF0YShcXHUwMDI2Y3R4LCBydHhfdGltZW91dCk7XFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozOC4wNDc4OTMxODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyOTMyOTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgc2N0cF9vdXRxX2ZsdXNoYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBzY3RwX291dHFfZmx1c2hgIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFN0YXRpYyBmdW5jdGlvbnMsIHdpdGhpbiBhIGxhcmdlIGNvZGViYXNlIGxpa2UgU0NUUCwgYXJlIG9mdGVuIGNydWNpYWwgZm9yIGludGVybmFsIHN0YXRlIG1hbmFnZW1lbnQgb3IgaGlnaGx5IHNwZWNpZmljIG9wZXJhdGlvbnMuIFRoZXkgYXJlbid0IGludGVuZGVkIGZvciBkaXJlY3QgZXh0ZXJuYWwgdXNlLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgaWRlbnRpZnkgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBTQ1RQIHN0YWNrLiBJcyBpdCBjYWxsZWQgZnJvbSB0aGUgY29tbW9uIHBhdGggb3Igc29tZXRoaW5nIG1vcmUgZXNvdGVyaWM/IFRoZSBjYWxsIHNpdGVzIHdpbGwgYmUgdGhlIGtleSB0byB1bmxvY2tpbmcgaXRzIG1lYW5pbmcuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgYWNjZXNzIHBhdHRlcm5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDEuMzc3MjI2MTM4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk0OTMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX291dHFfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUwPXN0YXRpYyB2b2lkIHNjdHBfbWFya19taXNzaW5nKHN0cnVjdCBzY3RwX291dHEgKnEsXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU1LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTY6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoKHN0cnVjdCBzY3RwX291dHEgKnEsIGludCBydHhfdGltZW91dCwgZ2ZwX3QgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU3LVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz0yODE9dm9pZCBzY3RwX291dHFfdGFpbChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssIGdmcF90IGdmcClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMzEyLVxcdGlmICghcS1cXHUwMDNlY29yaylcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjMxMzpcXHRcXHRzY3RwX291dHFfZmx1c2gocSwgMCwgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTMxNC19XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTg2LVxcdGlmIChyZWFzb24gIT0gU0NUUF9SVFhSX0ZBU1RfUlRYKVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTg3OlxcdFxcdHNjdHBfb3V0cV9mbHVzaChxLCAvKiBydHhfdGltZW91dCAqLyAxLCBHRlBfQVRPTUlDKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU4OC19XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5MS0gKiBUcmFuc21pdCBEQVRBIGNodW5rcyBvbiB0aGUgcmV0cmFuc21pdCBxdWV1ZS4gIFVwb24gcmV0dXJuIGZyb21cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICdwa3QnIG1heSBjb250YWluIGNodW5rcyB3aGljaFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkzLSAqIG5lZWQgdG8gYmUgdHJhbnNtaXR0ZWQgYnkgdGhlIGNhbGxlci5cXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk3LSAqL1xcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTk4OnN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVxcdFxcdFxcdFxcdCBpbnQgcnR4X3RpbWVvdXQsIGludCAqc3RhcnRfdGltZXIsIGdmcF90IGdmcClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmM9NzYwPXZvaWQgc2N0cF9vdXRxX3VuY29yayhzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTc2NC1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjc2NTpcXHRzY3RwX291dHFfZmx1c2gocSwgMCwgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTc2Ni19XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTgwMT1zdGF0aWMgdm9pZCBzY3RwX291dHFfc2VsZWN0X3RyYW5zcG9ydChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtODc5LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6ODgwOnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9jdHJsKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4KVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtODgxLXtcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtOTkxLS8qIFJldHVybnMgZmFsc2UgaWYgbmV3IGRhdGEgc2hvdWxkbid0IGJlIHNlbnQgKi9cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjk5MjpzdGF0aWMgYm9vbCBzY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtOTkzLVxcdFxcdFxcdFxcdGludCBydHhfdGltZW91dClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxMi1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XFx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVxcdTAwM2VxLCBjdHgtXFx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzdGFydF90aW1lciwgY3R4LVxcdTAwM2VnZnApO1xcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM3LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6MTAzODpzdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2hfZGF0YShzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMzktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3Mi1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmN0eC1cXHUwMDNlcS1cXHUwMDNlcmV0cmFuc21pdCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XFx0ICAgICFzY3RwX291dHFfZmx1c2hfcnR4KGN0eCwgcnR4X3RpbWVvdXQpKVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExNTUtXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMTU2OnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF90cmFuc3BvcnRzKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4KVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTE1Ny17XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExOTItXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMTkzOnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBpbnQgcnR4X3RpbWVvdXQsIGdmcF90IGdmcClcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExOTQte1xcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjEyLVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxMzpcXHRzY3RwX291dHFfZmx1c2hfY3RybChcXHUwMDI2Y3R4KTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTQtXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTctXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjE4OlxcdHNjdHBfb3V0cV9mbHVzaF9kYXRhKFxcdTAwMjZjdHgsIHJ0eF90aW1lb3V0KTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTktXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMjEtXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjIyOlxcdHNjdHBfb3V0cV9mbHVzaF90cmFuc3BvcnRzKFxcdTAwMjZjdHgpO1xcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIyMy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQxLjQyNjE4MTEyNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE5NzQ4NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgU0NUUCBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBzY3RwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBhcmUgdGhlc2UgZnVuY3Rpb25zICpleHBvcnRlZCo/IEFyZSB0aGV5IHZpc2libGUgb3V0c2lkZSB0aGVpciBjb21waWxhdGlvbiB1bml0PyBJZiB0aGV5IGFyZSwgaXQncyBnb2luZyB0byBpbmZsdWVuY2UgaG93IEkgYW5hbHl6ZSB0aGUgY29kZSwgaG93IEkgY29uc2lkZXIgdGhlaXIgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggb3RoZXIgbW9kdWxlcywgYW5kIHVsdGltYXRlbHksIGhvdyBlYXNpbHkgSSBjYW4gdW5kZXJzdGFuZCBhbmQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBTQ1RQIHN0YWNrJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byBrbm93IGlmIHRoZXkncmUgc3RyaWN0bHkgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvciBwYXJ0IG9mIGEgZGVmaW5lZCBBUEkuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgdGhlIHN5bWJvbCB0YWJsZXMgdG8gZGVmaW5pdGl2ZWx5IGRldGVybWluZSB0aGVpciB2aXNpYmlsaXR5LiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGJlZm9yZSBJIGNhbiBwcm9jZWVkIHdpdGggYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZWlyIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo0NC45NDU5MzE3NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMTg3NDcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnNjdHBfcmV0cmFuc21pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQ0Ljk5MjI2MDcwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUxNzg5ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIEhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHByb3ZpZGVkIHRleHQgYXMgdGhlIGJhc2lzIGZvciBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludGVybmFsIEFzc2Vzc21lbnQ6IEhlYWRlciBQcmVzZW5jZSBcdTAwMjYgU2lnbmlmaWNhbmNlKipcblxuUmlnaHQsIGxldCdzIGp1c3QgbWFrZSBhIHF1aWNrIGNoZWNrIGhlcmUuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlICpzdHJ1Y3R1cmUqIG9mIHRoaXMgaW5mb3JtYXRpb24uIFRoZSBwcm9tcHQgbWVudGlvbnMgXCJoZWFkZXJzXCIgc28gSSdtIGltbWVkaWF0ZWx5IHNjYW5uaW5nIHRoZSB0ZXh0IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55LCBhbmQgdGhlaXIgcHJlc2VuY2UgbWF5IGJlIHNpZ25pZmljYW50LiBJZiB0aGV5J3JlIHByZXNlbnQsIHdoYXQga2luZCBvZiBoZWFkZXJzIGFyZSB0aGV5PyBBcmUgdGhleSBpbmZvcm1hdGl2ZSwgZGVzY3JpcHRpdmUsIG9yIGp1c3QgdXNlZCBmb3IgZm9ybWF0dGluZz8gVGhlIGV4aXN0ZW5jZSBvZiBoZWFkZXJzIGNvdWxkIHRlbGwgbWUgc29tZXRoaW5nIGFib3V0IHRoZSBvcmdhbml6YXRpb24gYW5kIHVuZGVybHlpbmcgbG9naWMuIFRoaXMgaXMgZm91bmRhdGlvbmFsOyBkZXBlbmRpbmcgb24gaWYgYW5kIGhvdyB0aGV5IGFyZSB1c2VkLCBpdCB3aWxsIGluZm9ybSBteSBhcHByb2FjaCB0byBzdW1tYXJpemluZy4gU28sIHRoaXMgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHN0cnVjdHVyZSBjb3VsZCBjaGFuZ2UgdGhlIGVudGlyZSBhcHByb2FjaCB0byBteSBzdW1tYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTcyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDcuOTQ0MDUyMTgzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM4NjI5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3JldHJhbnNtaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaD0zNTI9ZW51bSB7XFxuLS1cXG5pbmNsdWRlL25ldC9zY3RwL2NvbnN0YW50cy5oLTM4Mi0vKiBSZWFzb25zIHRvIHJldHJhbnNtaXQuICovXFxuaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaDozODM6ZW51bSBzY3RwX3JldHJhbnNtaXRfcmVhc29uIHtcXG5pbmNsdWRlL25ldC9zY3RwL2NvbnN0YW50cy5oLTM4NC1cXHRTQ1RQX1JUWFJfVDNfUlRYLFxcbi0tXFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg9MTExMz1pbnQgc2N0cF9vdXRxX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBzY3RwX291dHEgKik7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNDp2b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTE1OlxcdFxcdCAgICAgZW51bSBzY3RwX3JldHJhbnNtaXRfcmVhc29uIHJlYXNvbik7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNjp2b2lkIHNjdHBfcmV0cmFuc21pdF9tYXJrKHN0cnVjdCBzY3RwX291dHEgKiwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICosIF9fdTgpO1xcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTctdm9pZCBzY3RwX291dHFfdW5jb3JrKHN0cnVjdCBzY3RwX291dHEgKiwgZ2ZwX3QgZ2ZwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDcuOTk1NDQ2OTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5Nzc0NTEyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNDVFAgUmV0cmFuc21pc3Npb24gQ2FuZGlkYXRlcyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gcG90ZW50aWFsIGFyZWFzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLiBJJ20gdGhpbmtpbmcgdGhhdCBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYCBsb29rIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy4gVGhleSBhbGwgc2VlbSBsb2dpY2FsbHkgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBpcGVsaW5lIGFuZCBhcmUgbGlrZWx5IGtleSB0byBwZXJmb3JtYW5jZSBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgc2N0cF9vdXRxX3RhaWxgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIHdpdGhpbiB0aGUgZGF0YSBxdWV1ZSBpcyBjcml0aWNhbC4gVGhhdCB0YWlsIHBvaW50ZXIgbGlrZWx5IGludGVyYWN0cyB3aXRoIHJldHJhbnNtaXNzaW9uIGFuZCBmbG93IGNvbnRyb2wgbG9naWMuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgYXJvdW5kIHRoaXMgZnVuY3Rpb24gdG8gc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcxMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjUwLjk3MjkwMTY5NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MDU5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9vdXRxX3RhaWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg9MTExMD12b2lkIHNjdHBfb3V0cV9mcmVlKHN0cnVjdCBzY3RwX291dHEqKTtcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTExOnZvaWQgc2N0cF9vdXRxX3RhaWwoc3RydWN0IHNjdHBfb3V0cSAqLCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssIGdmcF90KTtcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaC0xMTEyLWludCBzY3RwX291dHFfc2FjayhzdHJ1Y3Qgc2N0cF9vdXRxICosIHN0cnVjdCBzY3RwX2NodW5rICopO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo1MS4wMTY0MTI2OTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2MTQ2NDIxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGBzY3RwX291dHFfdW5jb3JrYDpcblxuKipBbmFseXppbmcgYHNjdHBfb3V0cV91bmNvcmtgKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIGFib3V0IGBzY3RwX291dHFfdW5jb3JrYC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgY3J1Y2lhbCBmb3IgU0NUUCdzIG91dGJvdW5kIHF1ZXVlIG1hbmFnZW1lbnQuIEl0J3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgZGF0YSBmcm9tIHRoZSBvdXRib3VuZCBxdWV1ZSB3aGVuIGNlcnRhaW4gY29uZGl0aW9ucyBhcmUgbWV0LCBhbGxvd2luZyB0aGUga2VybmVsIHRvIHRyYW5zbWl0IGl0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCB0cmlnZ2VycyB0aGUgXCJ1bmNvcmtpbmdcIj8gSXMgaXQgYmFzZWQgb24gd2luZG93IHNpemUsIGNvbmdlc3Rpb24gY29udHJvbCBzaWduYWxzLCBvciBhIHRpbWVyPyBEb2VzIGl0IGhhbmRsZSBtdWx0aXBsZSBjaHVua3Mgb3IganVzdCBhIHNpbmdsZSBvbmU/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGluIHRoZSBmYXN0IHBhdGggb3Igb25seSBvY2Nhc2lvbmFsbHk/IEFueSBsb2NrcyBpbnZvbHZlZD8gQW5kIG1vcmUgaW1wb3J0YW50bHksIGRvZXMgaXQgaW1wbGVtZW50IGFsbCB0aGUgc3RhbmRhcmRzIGZyb20gUkZDIDQ5NjAgb3IgaGFzIHRoZXJlIGJlZW4gYW55IHJlY2VudCBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucz8gSSdsbCBwcm9iYWJseSBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCAtIHdoYXQgY2FsbHMgaXQsIGFuZCB3aGF0IGZ1bmN0aW9ucyBpdCBjYWxscy4gSG9wZWZ1bGx5LCB0aGVyZSBhcmUgc29tZSBjbGVhciBjb21tZW50cyEgSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGxvZ2ljIGhlcmUsIGVzcGVjaWFsbHkgYXJvdW5kIGZsb3cgY29udHJvbCBhbmQgcG90ZW50aWFsbHkgcmV0cmFuc21pc3Npb24gaGFuZGxpbmcuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTQ6NTQuNjMxMDU4MDI0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIyNjMyMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9vdXRxX3VuY29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaD0xMTE2PXZvaWQgc2N0cF9yZXRyYW5zbWl0X21hcmsoc3RydWN0IHNjdHBfb3V0cSAqLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKiwgX191OCk7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNzp2b2lkIHNjdHBfb3V0cV91bmNvcmsoc3RydWN0IHNjdHBfb3V0cSAqLCBnZnBfdCBnZnApO1xcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTgtdm9pZCBzY3RwX3Byc2N0cF9wcnVuZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTQ6NTUuMDYzMzI3MDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2NDU1NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBTQ1RQIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIFNDVFAgc3RhY2sgaXMgYWN0dWFsbHkgaGFuZGxpbmcgdGhpbmdzLiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIHRvIGxvb2sgYXQ6IGBzY3RwX3JldHJhbnNtaXRgLCBvYnZpb3VzbHkgdHJpZ2dlcmVkIG9uIHJldHJhbnNtaXNzaW9uLCB0aGF0J3Mga2V5IHRvIHRoZSBTQ1RQIHByb2Nlc3MuIFRoZW4gd2UgaGF2ZSBgc2N0cF9vdXRxX3RhaWxgIGZvciB3aGVuIGEgY2h1bmsgaXMgYWRkZWQsIHRoYXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gQWxzbywgYHNjdHBfb3V0cV91bmNvcmtgIGZvciB3aGVuIHRoZSBvdXRwdXQgcXVldWUgaXMgdW5jb3JrZWQuIEknbGwgbWFrZSBzdXJlIHRvIGFkZCB0aGVzZSBmdW5jdGlvbnMgdG8gbXkgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIC0gdGhleSBhcmUgdGhlIHJpZ2h0IGZvY3VzIHN5bWJvbHMuXG5cbkknbGwgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIGBJUF9TQ1RQYCBzZWVtcyBsaWtlIHRoZSBtYWluIG9uZSB0aGF0IEknbGwgYmUgdGFyZ2V0aW5nLCBidXQgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGluIGBuZXQvc2N0cC9LY29uZmlnYCB0byBiZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU0OjU5LjIyNzg4NTI3OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE2OTQ2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlRoZSBTQ1RQIFByb3RvY29sXFxcIlxcbm5ldC9zY3RwL0tjb25maWc6ODpcXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvc2N0cC9LY29uZmlnLTktXFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxcbi0tXFxubmV0L3NjdHAvS2NvbmZpZz00MT1jb25maWcgU0NUUF9EQkdfT0JKQ05UXFxubmV0L3NjdHAvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXFxcIlxcbm5ldC9zY3RwL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxubmV0L3NjdHAvS2NvbmZpZy00NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTcwPWNvbmZpZyBJTkVUX1NDVFBfRElBR1xcbm5ldC9zY3RwL0tjb25maWc6NzE6XFx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnLTcyLVxcdGRlZl90cmlzdGF0ZSBJTkVUX0RJQUdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTQ6NTkuMjY5NTg3NzU2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzY1NDAxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgU0NUUCBPdXRxdWV1ZSBMb2dpYyoqXG5cbk9rYXksIHNvIHRoZSBtYWluIHBvaW50IGhlcmUgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggU0NUUCwgc3BlY2lmaWNhbGx5IHRoZSBvdXRxdWV1ZSBoYW5kbGluZywgYW5kIHdlIG5lZWQgdG8gdmVyaWZ5IHNvbWUgY2hhbmdlcy4gYElORVRgIGlzIGdlbmVyYWxseSBlbmFibGVkLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoYXQgaHVyZGxlLCBidXQgYElQX1NDVFBgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gbG9vayBmb3IuXG5cbkJhc2ljYWxseSwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBsb2dpYyBvZiBob3cgU0NUUCBoYW5kbGVzIGRhdGEgdGhhdCBuZWVkcyB0byBiZSByZXRyYW5zbWl0dGVkLCBzcGVjaWZpY2FsbHkgd2hlbiBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHRoZSBmbHVzaC4gVGhpcyBpcyAqY3JpdGljYWwqIGZ1bmN0aW9uYWwgY29kZTsgaXQncyByaWdodCBpbiB0aGUgcGF0aCBvZiBzb2NrZXQgb3BlcmF0aW9ucyBhbmQgcGFja2V0IHByb2Nlc3NpbmcuIFRoZXJlZm9yZSwgdGhlIGNvbmNsdXNpb24gaXMgdGhpcyBhcmVhICpkZWZpbml0ZWx5KiBuZWVkcyBmdXp6aW5nLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgbWVtb3J5IHByb2JsZW1zLlxuXG5UaGUgcHJpbWFyeSBmdW5jdGlvbnMgd2UnbGwgd2FudCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIGFyZSBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYC4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3Mgb2YgdGhpcyBmdW5jdGlvbmFsaXR5LiBBbmQsIG9mIGNvdXJzZSwgZW5zdXJlIGBJUF9TQ1RQYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIG9ubHkgcmVhbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTk4LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NTowNC4yMDYxMzA4NzJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ5NDA5MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3JldHJhbnNtaXRcIixcbiAgICBcInNjdHBfb3V0cV90YWlsXCIsXG4gICAgXCJzY3RwX291dHFfdW5jb3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NUUCBvdXRxdWV1ZSBsb2dpYyBieSBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHJldHJhbnNtaXNzaW9uIGZsdXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBTQ1RQIHNvY2tldCBvcGVyYXRpb25zIGFuZCBwYWNrZXQgcHJvY2Vzc2luZywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9vdXRxX3RhaWxcIixcbiAgICBcInNjdHBfb3V0cV91bmNvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowlhhsx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-31 00:27:12 +0000 UTC FinishedAt: 2026-07-31 01:55:06 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "53a43508ee332d8bffe40590c3d189c92a551f9f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "2a261c10-c982-4f2c-9546-81dac01b21bd" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_retransmit", "sctp_outq_tail", "sctp_outq_uncork" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3RhaWwmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiYjY0YzU5ODE0YWI4OWY4ZWNjNzIzZjBjZTkwMjA5NjE5MzE3NDMwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMzEgMDE6NTM6MTYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmNcbmluZGV4IGY2YjhjMTNkYWZhNGEuLmU5MmZiOWRhNDY0N2EgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jXG5AQCAtNjUwLDYgJiM0Mzs2NTAsNyBAQCBzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbiBcdFx0aWYgKGNodW5rLVx1MDAzZXRzbl9nYXBfYWNrZWQpIHtcbiBcdFx0XHRsaXN0X21vdmVfdGFpbChcdTAwMjZjaHVuay1cdTAwM2V0cmFuc21pdHRlZF9saXN0LFxuIFx0XHRcdFx0ICAgICAgIFx1MDAyNnRyYW5zcG9ydC1cdTAwM2V0cmFuc21pdHRlZCk7XG4mIzQzO1x0XHRcdGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiBcdFx0XHRjb250aW51ZTtcbiBcdFx0fVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF9yZXRyYW5zbWl0JiMzNDssCiAgICAmIzM0O3NjdHBfb3V0cV90YWlsJiMzNDssCiAgICAmIzM0O3NjdHBfb3V0cV91bmNvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NUUCBvdXRxdWV1ZSBsb2dpYyBieSBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHJldHJhbnNtaXNzaW9uIGZsdXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBTQ1RQIHNvY2tldCBvcGVyYXRpb25zIGFuZCBwYWNrZXQgcHJvY2Vzc2luZywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJiMzOTt0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciBtZW1vcnkgaXNzdWVzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYmI2NGM1OTgxNGFiODlmOGVjYzcyM2YwY2U5MDIwOTYxOTMxNzQzMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmMKaW5kZXggZjZiOGMxM2RhZmE0YS4uZTkyZmI5ZGE0NjQ3YSAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvb3V0cXVldWUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jCkBAIC02NTAsNiAmIzQzOzY1MCw3IEBAIHN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LAogCQlpZiAoY2h1bmstJmd0O3Rzbl9nYXBfYWNrZWQpIHsKIAkJCWxpc3RfbW92ZV90YWlsKCZhbXA7Y2h1bmstJmd0O3RyYW5zbWl0dGVkX2xpc3QsCiAJCQkJICAgICAgICZhbXA7dHJhbnNwb3J0LSZndDt0cmFuc21pdHRlZCk7CiYjNDM7CQkJY2h1bmstJmd0O3RyYW5zcG9ydCA9IHRyYW5zcG9ydDsKIAkJCWNvbnRpbnVlOwogCQl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzNAoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDExMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgcGF0Y2ggYW5kIHJlbGV2YW50IGNvZGU6CgoqKkFuYWx5emluZyBhIFNDVFAgT3V0cXVldWUgUGF0Y2gqKgoKT2theSwgc28gd2UmIzM5O3ZlIGdvdCBhIHBhdGNoIHRoYXQmIzM5O3MgbWFraW5nIGEgbW9kaWZpY2F0aW9uIGluIGBuZXQvc2N0cC9vdXRxdWV1ZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCYjMzk7cyBpbnRyb2R1Y2luZyBgY2h1bmstJmd0O3RyYW5zcG9ydCA9IHRyYW5zcG9ydDtgIHdpdGhpbiB0aGUgYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgcHVycG9zZS4gVGhpcyBhc3NpZ25tZW50IGxvb2tzIGxpa2UgaXQmIzM5O3Mgc2V0dGluZyBhIHRyYW5zcG9ydCBhc3NvY2lhdGlvbiBmb3IgYSBjaHVuay4KClRvIGdldCBhIGJldHRlciBncmlwLCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBfX3NjdHBfb3V0cV9mbHVzaF9ydHhgIGl0c2VsZiB3aXRoaW4gdGhlIGBuZXQvc2N0cC9vdXRxdWV1ZS5jYCBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhlIGV4YWN0IGxvY2F0aW9uIG9mIHRoYXQgZnVuY3Rpb24gYW5kIGlkZW50aWZ5IGl0JiMzOTtzIGV4YWN0IGRlZmluaXRpb24uIEkmIzM5O2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzb3VyY2UgZmlsZSB0byB2ZXJpZnkgdGhlIGZpbGUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZmlsZSwgaWYgbmVlZGVkLiBLbm93aW5nIHRoZSBmdW5jdGlvbiYjMzk7cyBkZWNsYXJhdGlvbiB3aWxsIHJlYWxseSBoZWxwIG1lIHNlZSBob3cgdGhpcyBuZXcgYXNzaWdubWVudCBmaXRzIGluIHdpdGggdGhlIGV4aXN0aW5nIGxvZ2ljIG9mIHJldHJhbnNtaXR0aW5nIGNodW5rcy4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYXNzZXNzIHdoZXRoZXIgdGhpcyBhc3NpZ25tZW50IGlzIGNvcnJlY3QsIG9yIGlmIGl0IG1pZ2h0IGJlIG1pc3Npbmcgb3IgcmVkdW5kYW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fc2N0cF9vdXRxX2ZsdXNoX3J0eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cXVldWUuYz01Mzc9dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTEtICogVHJhbnNtaXQgREFUQSBjaHVua3Mgb24gdGhlIHJldHJhbnNtaXQgcXVldWUuICBVcG9uIHJldHVybiBmcm9tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICYjMzk7cGt0JiMzOTsgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5My0gKiBuZWVkIHRvIGJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBjYWxsZXIuXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5ODpzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVx0XHRcdFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9OTkyPXN0YXRpYyBib29sIHNjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDEyLVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDEzOlx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVx1MDAzZXEsIGN0eC1cdTAwM2VwYWNrZXQsIHJ0eF90aW1lb3V0LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVx0XHRcdFx0ICAgICAgXHUwMDI2c3RhcnRfdGltZXIsIGN0eC1cdTAwM2VnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRGl2aW5nIGludG8gdGhlIFNDVFAgUmV0cmFuc21pc3Npb24gTG9naWMqKgoKUmlnaHQsIHRoZSB0cmFjZSBwb2ludHMgdG8gYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJldHggcmV0cmFuc21pc3Npb24gbG9naWMgc2VlbXMgdG8gYmUgcmVzaWRpbmcsIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gTGV0JiMzOTtzIHNlZSBob3cgdGhlIHBhdGNoIGhhcyBjaGFuZ2VkIHRoaXMgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0LiBUaW1lIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlIGFuZCBzZWUgd2hhdCB0aGUgaXNzdWUgaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MzA6XHRcdCAqIHBhY2tldCBvZiByZXRyYW5zbWl0dGVkIGRhdGEuXVxuIDYzMTpcdFx0ICpcbiA2MzI6XHRcdCAqIEZvciBmYXN0IHJldHJhbnNtaXNzaW9ucyB3ZSBhbHNvIHNlbmQgb25seSBPTkUgcGFja2V0LiAgSG93ZXZlcixcbiA2MzM6XHRcdCAqIGlmIHdlIGFyZSBqdXN0IGZsdXNoaW5nIHRoZSBxdWV1ZSBkdWUgdG8gb3BlbiB3aW5kb3csIHdlJiMzOTtsbFxuIDYzNDpcdFx0ICogdHJ5IHRvIHNlbmQgYXMgbXVjaCBhcyBwb3NzaWJsZS5cbiA2MzU6XHRcdCAqL1xuIDYzNjpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGNodW5rLCBjaHVuazEsIGxxdWV1ZSwgdHJhbnNtaXR0ZWRfbGlzdCkge1xuIDYzNzpcdFx0XHQvKiBJZiB0aGUgY2h1bmsgaXMgYWJhbmRvbmVkLCBtb3ZlIGl0IHRvIGFiYW5kb25lZCBsaXN0LiAqL1xuIDYzODpcdFx0XHRpZiAoc2N0cF9jaHVua19hYmFuZG9uZWQoY2h1bmspKSB7XG4gNjM5Olx0XHRcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZjaHVuay1cdTAwM2V0cmFuc21pdHRlZF9saXN0KTtcbiA2NDA6XHRcdFx0XHRzY3RwX2luc2VydF9saXN0KFx1MDAyNnEtXHUwMDNlYWJhbmRvbmVkLFxuIDY0MTpcdFx0XHRcdFx0XHQgXHUwMDI2Y2h1bmstXHUwMDNldHJhbnNtaXR0ZWRfbGlzdCk7XG4gNjQyOlx0XHRcdFx0Y29udGludWU7XG4gNjQzOlx0XHRcdH1cbiA2NDQ6XHRcbiA2NDU6XHRcdFx0LyogTWFrZSBzdXJlIHRoYXQgR2FwIEFja2VkIFRTTnMgYXJlIG5vdCByZXRyYW5zbWl0dGVkLiAgQVxuIDY0NjpcdFx0XHQgKiBzaW1wbGUgYXBwcm9hY2ggaXMganVzdCB0byBtb3ZlIHN1Y2ggVFNOcyBvdXQgb2YgdGhlXG4gNjQ3Olx0XHRcdCAqIHdheSBhbmQgaW50byBhICYjMzk7dHJhbnNtaXR0ZWQmIzM5OyBxdWV1ZSBhbmQgc2tpcCB0byB0aGVcbiA2NDg6XHRcdFx0ICogbmV4dCBjaHVuay5cbiA2NDk6XHRcdFx0ICovXG4gNjUwOlx0XHRcdGlmIChjaHVuay1cdTAwM2V0c25fZ2FwX2Fja2VkKSB7XG4gNjUxOlx0XHRcdFx0bGlzdF9tb3ZlX3RhaWwoXHUwMDI2Y2h1bmstXHUwMDNldHJhbnNtaXR0ZWRfbGlzdCxcbiA2NTI6XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ0cmFuc3BvcnQtXHUwMDNldHJhbnNtaXR0ZWQpO1xuIDY1MzpcdFx0XHRcdGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiA2NTQ6XHRcdFx0XHRjb250aW51ZTtcbiA2NTU6XHRcdFx0fVxuIDY1NjpcdFxuIDY1NzpcdFx0XHQvKiBJZiB3ZSBhcmUgZG9pbmcgZmFzdCByZXRyYW5zbWl0LCBpZ25vcmUgbm9uLWZhc3RfcnRyYW5zbWl0XG4gNjU4Olx0XHRcdCAqIGNodW5rc1xuIDY1OTpcdFx0XHQgKi9cbiA2NjA6XHRcdFx0aWYgKGZhc3RfcnR4IFx1MDAyNlx1MDAyNiAhY2h1bmstXHUwMDNlZmFzdF9yZXRyYW5zbWl0KVxuIDY2MTpcdFx0XHRcdGNvbnRpbnVlO1xuIDY2MjpcdFxuIDY2MzpcdHJlZG86XG4gNjY0Olx0XHRcdC8qIEF0dGVtcHQgdG8gYXBwZW5kIHRoaXMgY2h1bmsgdG8gdGhlIHBhY2tldC4gKi9cbiA2NjU6XHRcdFx0c3RhdHVzID0gc2N0cF9wYWNrZXRfYXBwZW5kX2NodW5rKHBrdCwgY2h1bmspO1xuIDY2NjpcdFxuIDY2NzpcdFx0XHRzd2l0Y2ggKHN0YXR1cykge1xuIDY2ODpcdFx0XHRjYXNlIFNDVFBfWE1JVF9QTVRVX0ZVTEw6XG4gNjY5Olx0XHRcdFx0aWYgKCFwa3QtXHUwMDNlaGFzX2RhdGEgXHUwMDI2XHUwMDI2ICFwa3QtXHUwMDNlaGFzX2Nvb2tpZV9lY2hvKSB7XG4gNjcwOlx0XHRcdFx0XHQvKiBJZiB0aGlzIHBhY2tldCBkaWQgbm90IGNvbnRhaW4gREFUQSB0aGVuXG4gNjcxOlx0XHRcdFx0XHQgKiByZXRyYW5zbWlzc2lvbiBkaWQgbm90IGhhcHBlbiwgc28gZG8gaXRcbiA2NzI6XHRcdFx0XHRcdCAqIGFnYWluLiAgV2UmIzM5O2xsIGlnbm9yZSB0aGUgZXJyb3IgaGVyZSBzaW5jZVxuIDY3MzpcdFx0XHRcdFx0ICogY29udHJvbCBjaHVua3MgYXJlIGFscmVhZHkgZnJlZWQgc28gdGhlcmVcbiA2NzQ6XHRcdFx0XHRcdCAqIGlzIG5vdGhpbmcgd2UgY2FuIGRvLlxuIDY3NTpcdFx0XHRcdFx0ICovXG4gNjc2Olx0XHRcdFx0XHRzY3RwX3BhY2tldF90cmFuc21pdChwa3QsIGdmcCk7XG4gNjc3Olx0XHRcdFx0XHRnb3RvIHJlZG87XG4gNjc4Olx0XHRcdFx0fVxuIDY3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipTQ1RQIFJUWCBGbHVzaCBhbmQgVHJhbnNwb3J0IEFzc2lnbm1lbnQqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBjaHVuay0mZ3Q7dHJhbnNwb3J0ID0gdHJhbnNwb3J0O2Agd2l0aGluIHRoZSBgX19zY3RwX291dHFfZmx1c2hfcnR4YCBmdW5jdGlvbi4gRnVuY3Rpb25hbGx5LCBpdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCYjMzk7cyBhc3NpZ25pbmcgYSB0cmFuc3BvcnQgcG9pbnRlciB0byBhIGNodW5rIGJlaW5nIHJldHJhbnNtaXR0ZWQuIFRoZSBjb250ZXh0IGhlcmUgaXMgZGVmaW5pdGVseSBTQ1RQLCB3aGljaCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZS4gQmVmb3JlIEkgZGl2ZSBpbnRvIHRoZSBkZXRhaWxzIG9mICp3aHkqIHRoaXMgYXNzaWdubWVudCBpcyBiZWluZyBtYWRlIHdpdGhpbiB0aGlzIHNwZWNpZmljIGZ1bmN0aW9uLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBrZXJuZWwgY29uZmlnIG9wdGlvbnMuIEkgd2FudCB0byBlbnN1cmUgdGhpcyBhZGRpdGlvbiBhbGlnbnMgd2l0aCBob3cgU0NUUCBpcyBjb25maWd1cmVkIGluIHRoaXMgcGFydGljdWxhciBlbnZpcm9ubWVudC4gTXkgYWltIGlzIHRvIGxvb2sgYXQgaG93IHdlIGhhdmUgU0NUUCBjb25maWd1cmVkIGFuZCBlbnN1cmUgdGhhdCB0aGlzIHRyYW5zcG9ydCBhc3NpZ25tZW50IGlzIG5vdCBnb2luZyB0byBicmVhayBhbnl0aGluZyB3ZSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODEKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNDVFAgT3V0Z29pbmcgUXVldWUgRmx1c2ggRnVuY3Rpb24qKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gaW4gcXVlc3Rpb24gaGVyZSBpcyBgSVBfU0NUUGAuIEdvdCBpdC4gTXkgcHJpbWFyeSBnb2FsIG5vdyBpcyB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgc3ltYm9scyBpbnZvbHZlZCBpbiB0aGlzIHNwZWNpZmljIGFzcGVjdCBvZiB0aGUgU0NUUCBpbXBsZW1lbnRhdGlvbi4gTXkgYXR0ZW50aW9uIGlzIGltbWVkaWF0ZWx5IGRyYXduIHRvIHRoZSBmdW5jdGlvbiBgX19zY3RwX291dHFfZmx1c2hfcnR4YC4gSXQmIzM5O3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlLiBLbm93aW5nIHRoYXQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBUaGVyZWZvcmUsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBpZGVudGlmeSBhbGwgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvZGUuIFVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIHdoZW4gYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgaXMgaW52b2tlZCBpcyBjcnVjaWFsIHRvIGdyYXNwaW5nIGl0cyBmdW5jdGlvbiBhbmQgcG90ZW50aWFsIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19zY3RwX291dHFfZmx1c2hfcnR4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5MS0gKiBUcmFuc21pdCBEQVRBIGNodW5rcyBvbiB0aGUgcmV0cmFuc21pdCBxdWV1ZS4gIFVwb24gcmV0dXJuIGZyb21cbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJiMzOTtwa3QmIzM5OyBtYXkgY29udGFpbiBjaHVua3Mgd2hpY2hcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkzLSAqIG5lZWQgdG8gYmUgdHJhbnNtaXR0ZWQgYnkgdGhlIGNhbGxlci5cbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5Ny0gKi9cbm5ldC9zY3RwL291dHF1ZXVlLmM6NTk4OnN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXHRcdFx0XHQgaW50IHJ0eF90aW1lb3V0LCBpbnQgKnN0YXJ0X3RpbWVyLCBnZnBfdCBnZnApXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTItXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XHRlcnJvciA9IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChjdHgtXHUwMDNlcSwgY3R4LVx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTQtXHRcdFx0XHQgICAgICBcdTAwMjZzdGFydF90aW1lciwgY3R4LVx1MDAzZWdmcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MjUKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBgc2N0cF9vdXRxX2ZsdXNoX3J0eGAgRnVuY3Rpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgc2N0cF9vdXRxX2ZsdXNoX3J0eGAgaXMgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLiBJbnRlcmVzdGluZy4gR2l2ZW4gdGhhdCBpdCYjMzk7cyBzdGF0aWMsIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIHRoZSBjYWxsIHNpdGVzIHRvIHVuZGVyc3RhbmQgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBiZWluZyB1c2VkLiBTdGF0aWMgZnVuY3Rpb25zIGFyZSwgYnkgZGVmaW5pdGlvbiwgc2NvcGVkIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCBzbyB0cmFjaW5nIHRob3NlIGNhbGxzIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZ1bmN0aW9uJiMzOTtzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcmV0cmFuc21pc3Npb24gbG9naWMuIExldCYjMzk7cyBnZXQgdG8gaXQgYW5kIHNlZSB3aG8mIzM5O3MgY2FsbGluZyB0aGlzIG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9vdXRxX2ZsdXNoX3J0eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvb3V0cXVldWUuYz01Mzc9dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTEtICogVHJhbnNtaXQgREFUQSBjaHVua3Mgb24gdGhlIHJldHJhbnNtaXQgcXVldWUuICBVcG9uIHJldHVybiBmcm9tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICYjMzk7cGt0JiMzOTsgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5My0gKiBuZWVkIHRvIGJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBjYWxsZXIuXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5ODpzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVx0XHRcdFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9ODgwPXN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9jdHJsKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4KVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtOTkxLS8qIFJldHVybnMgZmFsc2UgaWYgbmV3IGRhdGEgc2hvdWxkbiYjMzk7dCBiZSBzZW50ICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjk5MjpzdGF0aWMgYm9vbCBzY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxubmV0L3NjdHAvb3V0cXVldWUuYy05OTMtXHRcdFx0XHRpbnQgcnR4X3RpbWVvdXQpXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDEyLVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDEzOlx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVx1MDAzZXEsIGN0eC1cdTAwM2VwYWNrZXQsIHJ0eF90aW1lb3V0LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVx0XHRcdFx0ICAgICAgXHUwMDI2c3RhcnRfdGltZXIsIGN0eC1cdTAwM2VnZnApO1xuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9MTAzOD1zdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2hfZGF0YShzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzItXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2Y3R4LVx1MDAzZXEtXHUwMDNlcmV0cmFuc21pdCkgXHUwMDI2XHUwMDI2XG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XHQgICAgIXNjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LCBydHhfdGltZW91dCkpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzQtXHRcdHJldHVybjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU2NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGljIEZ1bmN0aW9uOiBgc2N0cF9vdXRxX2ZsdXNoX2RhdGFgKioKCk9rYXksIHNvIGBzY3RwX291dHFfZmx1c2hfZGF0YWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gU3RhdGljIGZ1bmN0aW9ucywgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBTQ1RQIGltcGxlbWVudGF0aW9uIEkmIzM5O20gd29ya2luZyB3aXRoLCB0eXBpY2FsbHkgcG9pbnQgdG8gaW50ZXJuYWwsIHRpZ2h0bHkgc2NvcGVkIGZ1bmN0aW9uYWxpdHkuIEl0IG1lYW5zIGl0JiMzOTtzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIGl0JiMzOTtzIGRlZmluZWQsIHdoaWNoIGluIHR1cm4gbWVhbnMgaXTigJlzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBpdHMgaW1tZWRpYXRlIGRlcGVuZGVuY2llcy4gU28sIG15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSBwcmVjaXNlbHkgKndobyogaXMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIGlzIGtleSB0byBncmFzcGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIGxhcmdlciBTQ1RQIGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgbXkgdXN1YWwgdG9vbHMgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgYW5kIGJ1aWxkIGEgbWVudGFsIG1hcCBvZiB3aGVyZSB0aGlzIHJvdXRpbmUgaXMgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9vdXRxX2ZsdXNoX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmM9OTkyPXN0YXRpYyBib29sIHNjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM3LVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDM4OnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9kYXRhKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM5LVx0XHRcdFx0IGludCBydHhfdGltZW91dClcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTExOTM9c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoKHN0cnVjdCBzY3RwX291dHEgKnEsIGludCBydHhfdGltZW91dCwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIxNy1cbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxODpcdHNjdHBfb3V0cV9mbHVzaF9kYXRhKFx1MDAyNmN0eCwgcnR4X3RpbWVvdXQpO1xubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDgxCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBgc2N0cF9vdXRxX2ZsdXNoYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBgc2N0cF9vdXRxX2ZsdXNoYCBpcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBTdGF0aWMgZnVuY3Rpb25zLCB3aXRoaW4gYSBsYXJnZSBjb2RlYmFzZSBsaWtlIFNDVFAsIGFyZSBvZnRlbiBjcnVjaWFsIGZvciBpbnRlcm5hbCBzdGF0ZSBtYW5hZ2VtZW50IG9yIGhpZ2hseSBzcGVjaWZpYyBvcGVyYXRpb25zLiBUaGV5IGFyZW4mIzM5O3QgaW50ZW5kZWQgZm9yIGRpcmVjdCBleHRlcm5hbCB1c2UuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBpZGVudGlmeSB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBmcm9tLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHB1cnBvc2Ugd2l0aGluIHRoZSBicm9hZGVyIFNDVFAgc3RhY2suIElzIGl0IGNhbGxlZCBmcm9tIHRoZSBjb21tb24gcGF0aCBvciBzb21ldGhpbmcgbW9yZSBlc290ZXJpYz8gVGhlIGNhbGwgc2l0ZXMgd2lsbCBiZSB0aGUga2V5IHRvIHVubG9ja2luZyBpdHMgbWVhbmluZy4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgYWNjZXNzIHBhdHRlcm5zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX291dHFfZmx1c2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9vdXRxdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL291dHF1ZXVlLmM9NTA9c3RhdGljIHZvaWQgc2N0cF9tYXJrX21pc3Npbmcoc3RydWN0IHNjdHBfb3V0cSAqcSxcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU1LVxubmV0L3NjdHAvb3V0cXVldWUuYzo1NjpzdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2goc3RydWN0IHNjdHBfb3V0cSAqcSwgaW50IHJ0eF90aW1lb3V0LCBnZnBfdCBnZnApO1xubmV0L3NjdHAvb3V0cXVldWUuYy01Ny1cbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTI4MT12b2lkIHNjdHBfb3V0cV90YWlsKHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX2NodW5rICpjaHVuaywgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMzEyLVx0aWYgKCFxLVx1MDAzZWNvcmspXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjMxMzpcdFx0c2N0cF9vdXRxX2ZsdXNoKHEsIDAsIGdmcCk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTMxNC19XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYz01Mzc9dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01ODYtXHRpZiAocmVhc29uICE9IFNDVFBfUlRYUl9GQVNUX1JUWClcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTg3Olx0XHRzY3RwX291dHFfZmx1c2gocSwgLyogcnR4X3RpbWVvdXQgKi8gMSwgR0ZQX0FUT01JQyk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU4OC19XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTEtICogVHJhbnNtaXQgREFUQSBjaHVua3Mgb24gdGhlIHJldHJhbnNtaXQgcXVldWUuICBVcG9uIHJldHVybiBmcm9tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICYjMzk7cGt0JiMzOTsgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5My0gKiBuZWVkIHRvIGJlIHRyYW5zbWl0dGVkIGJ5IHRoZSBjYWxsZXIuXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5ODpzdGF0aWMgaW50IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9wYWNrZXQgKnBrdCxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVx0XHRcdFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9NzYwPXZvaWQgc2N0cF9vdXRxX3VuY29yayhzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBnZnBfdCBnZnApXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy03NjQtXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjc2NTpcdHNjdHBfb3V0cV9mbHVzaChxLCAwLCBnZnApO1xubmV0L3NjdHAvb3V0cXVldWUuYy03NjYtfVxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmM9ODAxPXN0YXRpYyB2b2lkIHNjdHBfb3V0cV9zZWxlY3RfdHJhbnNwb3J0KHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtODc5LVxubmV0L3NjdHAvb3V0cXVldWUuYzo4ODA6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX2N0cmwoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTg4MS17XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy05OTEtLyogUmV0dXJucyBmYWxzZSBpZiBuZXcgZGF0YSBzaG91bGRuJiMzOTt0IGJlIHNlbnQgKi9cbm5ldC9zY3RwL291dHF1ZXVlLmM6OTkyOnN0YXRpYyBib29sIHNjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTk5My1cdFx0XHRcdGludCBydHhfdGltZW91dClcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTItXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XHRlcnJvciA9IF9fc2N0cF9vdXRxX2ZsdXNoX3J0eChjdHgtXHUwMDNlcSwgY3R4LVx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTQtXHRcdFx0XHQgICAgICBcdTAwMjZzdGFydF90aW1lciwgY3R4LVx1MDAzZWdmcCk7XG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM3LVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDM4OnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9kYXRhKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM5LVx0XHRcdFx0IGludCBydHhfdGltZW91dClcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzItXHRpZiAoIWxpc3RfZW1wdHkoXHUwMDI2Y3R4LVx1MDAzZXEtXHUwMDNlcmV0cmFuc21pdCkgXHUwMDI2XHUwMDI2XG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XHQgICAgIXNjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LCBydHhfdGltZW91dCkpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwNzQtXHRcdHJldHVybjtcbi0tXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExNTUtXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjExNTY6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX3RyYW5zcG9ydHMoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgpXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExNTcte1xuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMTE5Mi1cbm5ldC9zY3RwL291dHF1ZXVlLmM6MTE5MzpzdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2goc3RydWN0IHNjdHBfb3V0cSAqcSwgaW50IHJ0eF90aW1lb3V0LCBnZnBfdCBnZnApXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExOTQte1xuLS1cbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIxMi1cbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxMzpcdHNjdHBfb3V0cV9mbHVzaF9jdHJsKFx1MDAyNmN0eCk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTQtXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE3LVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjE4Olx0c2N0cF9vdXRxX2ZsdXNoX2RhdGEoXHUwMDI2Y3R4LCBydHhfdGltZW91dCk7XG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTktXG4tLVxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjIxLVxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjIyOlx0c2N0cF9vdXRxX2ZsdXNoX3RyYW5zcG9ydHMoXHUwMDI2Y3R4KTtcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIyMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4NTkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgU0NUUCBGdW5jdGlvbiBWaXNpYmlsaXR5KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBzY3RwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBhcmUgdGhlc2UgZnVuY3Rpb25zICpleHBvcnRlZCo/IEFyZSB0aGV5IHZpc2libGUgb3V0c2lkZSB0aGVpciBjb21waWxhdGlvbiB1bml0PyBJZiB0aGV5IGFyZSwgaXQmIzM5O3MgZ29pbmcgdG8gaW5mbHVlbmNlIGhvdyBJIGFuYWx5emUgdGhlIGNvZGUsIGhvdyBJIGNvbnNpZGVyIHRoZWlyIHBvdGVudGlhbCBpbnRlcmFjdGlvbiB3aXRoIG90aGVyIG1vZHVsZXMsIGFuZCB1bHRpbWF0ZWx5LCBob3cgZWFzaWx5IEkgY2FuIHVuZGVyc3RhbmQgYW5kIHBvdGVudGlhbGx5IG1vZGlmeSB0aGUgU0NUUCBzdGFjayYjMzk7cyBiZWhhdmlvci4gSSBuZWVkIHRvIGtub3cgaWYgdGhleSYjMzk7cmUgc3RyaWN0bHkgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvciBwYXJ0IG9mIGEgZGVmaW5lZCBBUEkuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIHRoZSBzeW1ib2wgdGFibGVzIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgdGhlaXIgdmlzaWJpbGl0eS4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBiZWZvcmUgSSBjYW4gcHJvY2VlZCB3aXRoIGEgZGVlcGVyIGRpdmUgaW50byB0aGVpciBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKnNjdHBfcmV0cmFuc21pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNzIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeS4gSGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHByb3ZpZGVkIHRleHQgYXMgdGhlIGJhc2lzIGZvciBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOgoKKipJbnRlcm5hbCBBc3Nlc3NtZW50OiBIZWFkZXIgUHJlc2VuY2UgJmFtcDsgU2lnbmlmaWNhbmNlKioKClJpZ2h0LCBsZXQmIzM5O3MganVzdCBtYWtlIGEgcXVpY2sgY2hlY2sgaGVyZS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgKnN0cnVjdHVyZSogb2YgdGhpcyBpbmZvcm1hdGlvbi4gVGhlIHByb21wdCBtZW50aW9ucyAmIzM0O2hlYWRlcnMmIzM0OyBzbyBJJiMzOTttIGltbWVkaWF0ZWx5IHNjYW5uaW5nIHRoZSB0ZXh0IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55LCBhbmQgdGhlaXIgcHJlc2VuY2UgbWF5IGJlIHNpZ25pZmljYW50LiBJZiB0aGV5JiMzOTtyZSBwcmVzZW50LCB3aGF0IGtpbmQgb2YgaGVhZGVycyBhcmUgdGhleT8gQXJlIHRoZXkgaW5mb3JtYXRpdmUsIGRlc2NyaXB0aXZlLCBvciBqdXN0IHVzZWQgZm9yIGZvcm1hdHRpbmc/IFRoZSBleGlzdGVuY2Ugb2YgaGVhZGVycyBjb3VsZCB0ZWxsIG1lIHNvbWV0aGluZyBhYm91dCB0aGUgb3JnYW5pemF0aW9uIGFuZCB1bmRlcmx5aW5nIGxvZ2ljLiBUaGlzIGlzIGZvdW5kYXRpb25hbDsgZGVwZW5kaW5nIG9uIGlmIGFuZCBob3cgdGhleSBhcmUgdXNlZCwgaXQgd2lsbCBpbmZvcm0gbXkgYXBwcm9hY2ggdG8gc3VtbWFyaXppbmcuIFNvLCB0aGlzIGluaXRpYWwgYXNzZXNzbWVudCBvZiBzdHJ1Y3R1cmUgY291bGQgY2hhbmdlIHRoZSBlbnRpcmUgYXBwcm9hY2ggdG8gbXkgc3VtbWFyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9yZXRyYW5zbWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaD0zNTI9ZW51bSB7XG4tLVxuaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaC0zODItLyogUmVhc29ucyB0byByZXRyYW5zbWl0LiAqL1xuaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaDozODM6ZW51bSBzY3RwX3JldHJhbnNtaXRfcmVhc29uIHtcbmluY2x1ZGUvbmV0L3NjdHAvY29uc3RhbnRzLmgtMzg0LVx0U0NUUF9SVFhSX1QzX1JUWCxcbi0tXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaD0xMTEzPWludCBzY3RwX291dHFfaXNfZW1wdHkoY29uc3Qgc3RydWN0IHNjdHBfb3V0cSAqKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjExMTQ6dm9pZCBzY3RwX3JldHJhbnNtaXQoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICp0cmFuc3BvcnQsXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTE1Olx0XHQgICAgIGVudW0gc2N0cF9yZXRyYW5zbWl0X3JlYXNvbiByZWFzb24pO1xuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNjp2b2lkIHNjdHBfcmV0cmFuc21pdF9tYXJrKHN0cnVjdCBzY3RwX291dHEgKiwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICosIF9fdTgpO1xuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmgtMTExNy12b2lkIHNjdHBfb3V0cV91bmNvcmsoc3RydWN0IHNjdHBfb3V0cSAqLCBnZnBfdCBnZnApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NzEzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNDVFAgUmV0cmFuc21pc3Npb24gQ2FuZGlkYXRlcyoqCgpPa2F5LCBsZXQmIzM5O3MgemVybyBpbiBvbiBwb3RlbnRpYWwgYXJlYXMgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiB3aXRoaW4gdGhlIFNDVFAgY29kZWJhc2UuIEkmIzM5O20gdGhpbmtpbmcgdGhhdCBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYCBsb29rIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy4gVGhleSBhbGwgc2VlbSBsb2dpY2FsbHkgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBpcGVsaW5lIGFuZCBhcmUgbGlrZWx5IGtleSB0byBwZXJmb3JtYW5jZSBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYHNjdHBfb3V0cV90YWlsYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSB3aXRoaW4gdGhlIGRhdGEgcXVldWUgaXMgY3JpdGljYWwuIFRoYXQgdGFpbCBwb2ludGVyIGxpa2VseSBpbnRlcmFjdHMgd2l0aCByZXRyYW5zbWlzc2lvbiBhbmQgZmxvdyBjb250cm9sIGxvZ2ljLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgY29kZSBhcm91bmQgdGhpcyBmdW5jdGlvbiB0byBzZWUgd2hhdCBpbnNpZ2h0cyBpdCByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX291dHFfdGFpbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTExMTA9dm9pZCBzY3RwX291dHFfZnJlZShzdHJ1Y3Qgc2N0cF9vdXRxKik7XG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTExOnZvaWQgc2N0cF9vdXRxX3RhaWwoc3RydWN0IHNjdHBfb3V0cSAqLCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssIGdmcF90KTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTItaW50IHNjdHBfb3V0cV9zYWNrKHN0cnVjdCBzY3RwX291dHEgKiwgc3RydWN0IHNjdHBfY2h1bmsgKik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwOTkKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiBjaGVja2luZyBgc2N0cF9vdXRxX3VuY29ya2A6CgoqKkFuYWx5emluZyBgc2N0cF9vdXRxX3VuY29ya2AqKgoKQWxyaWdodCwgSSYjMzk7bSB0aGlua2luZyBhYm91dCBgc2N0cF9vdXRxX3VuY29ya2AuIEkga25vdyB0aGlzIGZ1bmN0aW9uIGlzIGNydWNpYWwgZm9yIFNDVFAmIzM5O3Mgb3V0Ym91bmQgcXVldWUgbWFuYWdlbWVudC4gSXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgZGF0YSBmcm9tIHRoZSBvdXRib3VuZCBxdWV1ZSB3aGVuIGNlcnRhaW4gY29uZGl0aW9ucyBhcmUgbWV0LCBhbGxvd2luZyB0aGUga2VybmVsIHRvIHRyYW5zbWl0IGl0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCB0cmlnZ2VycyB0aGUgJiMzNDt1bmNvcmtpbmcmIzM0Oz8gSXMgaXQgYmFzZWQgb24gd2luZG93IHNpemUsIGNvbmdlc3Rpb24gY29udHJvbCBzaWduYWxzLCBvciBhIHRpbWVyPyBEb2VzIGl0IGhhbmRsZSBtdWx0aXBsZSBjaHVua3Mgb3IganVzdCBhIHNpbmdsZSBvbmU/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGluIHRoZSBmYXN0IHBhdGggb3Igb25seSBvY2Nhc2lvbmFsbHk/IEFueSBsb2NrcyBpbnZvbHZlZD8gQW5kIG1vcmUgaW1wb3J0YW50bHksIGRvZXMgaXQgaW1wbGVtZW50IGFsbCB0aGUgc3RhbmRhcmRzIGZyb20gUkZDIDQ5NjAgb3IgaGFzIHRoZXJlIGJlZW4gYW55IHJlY2VudCBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucz8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgLSB3aGF0IGNhbGxzIGl0LCBhbmQgd2hhdCBmdW5jdGlvbnMgaXQgY2FsbHMuIEhvcGVmdWxseSwgdGhlcmUgYXJlIHNvbWUgY2xlYXIgY29tbWVudHMhIEkgZXhwZWN0IHRvIGZpbmQgc29tZSBpbnRlcmVzdGluZyBsb2dpYyBoZXJlLCBlc3BlY2lhbGx5IGFyb3VuZCBmbG93IGNvbnRyb2wgYW5kIHBvdGVudGlhbGx5IHJldHJhbnNtaXNzaW9uIGhhbmRsaW5nLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oPTExMTY9dm9pZCBzY3RwX3JldHJhbnNtaXRfbWFyayhzdHJ1Y3Qgc2N0cF9vdXRxICosIHN0cnVjdCBzY3RwX3RyYW5zcG9ydCAqLCBfX3U4KTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oOjExMTc6dm9pZCBzY3RwX291dHFfdW5jb3JrKHN0cnVjdCBzY3RwX291dHEgKiwgZ2ZwX3QgZ2ZwKTtcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTgtdm9pZCBzY3RwX3Byc2N0cF9wcnVuZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU0MAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1c2luZyBvbiBTQ1RQIEZ1bmN0aW9uYWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBTQ1RQIHN0YWNrIGlzIGFjdHVhbGx5IGhhbmRsaW5nIHRoaW5ncy4gSSBrbm93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCB0byBsb29rIGF0OiBgc2N0cF9yZXRyYW5zbWl0YCwgb2J2aW91c2x5IHRyaWdnZXJlZCBvbiByZXRyYW5zbWlzc2lvbiwgdGhhdCYjMzk7cyBrZXkgdG8gdGhlIFNDVFAgcHJvY2Vzcy4gVGhlbiB3ZSBoYXZlIGBzY3RwX291dHFfdGFpbGAgZm9yIHdoZW4gYSBjaHVuayBpcyBhZGRlZCwgdGhhdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gQWxzbywgYHNjdHBfb3V0cV91bmNvcmtgIGZvciB3aGVuIHRoZSBvdXRwdXQgcXVldWUgaXMgdW5jb3JrZWQuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBhZGQgdGhlc2UgZnVuY3Rpb25zIHRvIG15IGluaXRpYWwgaW52ZXN0aWdhdGlvbiAtIHRoZXkgYXJlIHRoZSByaWdodCBmb2N1cyBzeW1ib2xzLgoKSSYjMzk7bGwgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBgSVBfU0NUUGAgc2VlbXMgbGlrZSB0aGUgbWFpbiBvbmUgdGhhdCBJJiMzOTtsbCBiZSB0YXJnZXRpbmcsIGJ1dCBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBkZXBlbmRlbmNpZXMgaW4gYG5ldC9zY3RwL0tjb25maWdgIHRvIGJlIHN1cmUgdGhlcmUmIzM5O3Mgbm90aGluZyBlbHNlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8zMSAwMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnPTY9bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xubmV0L3NjdHAvS2NvbmZpZzo4Olx0ZGVwZW5kcyBvbiBJTkVUXG5uZXQvc2N0cC9LY29uZmlnLTktXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG4tLVxubmV0L3NjdHAvS2NvbmZpZz00MT1jb25maWcgU0NUUF9EQkdfT0JKQ05UXG5uZXQvc2N0cC9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXCYjMzQ7XG5uZXQvc2N0cC9LY29uZmlnOjQzOlx0ZGVwZW5kcyBvbiBQUk9DX0ZTXG5uZXQvc2N0cC9LY29uZmlnLTQ0LVx0aGVscFxuLS1cbm5ldC9zY3RwL0tjb25maWc9NzA9Y29uZmlnIElORVRfU0NUUF9ESUFHXG5uZXQvc2N0cC9LY29uZmlnOjcxOlx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcbm5ldC9zY3RwL0tjb25maWctNzItXHRkZWZfdHJpc3RhdGUgSU5FVF9ESUFHXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzMxIDAxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMTk4CgkJCQkJCQlvdXRwdXQ6IDEyNgoJCQkJCQkJdGhvdWdodHM6IDE0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBTQ1RQIE91dHF1ZXVlIExvZ2ljKioKCk9rYXksIHNvIHRoZSBtYWluIHBvaW50IGhlcmUgaXMgdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIFNDVFAsIHNwZWNpZmljYWxseSB0aGUgb3V0cXVldWUgaGFuZGxpbmcsIGFuZCB3ZSBuZWVkIHRvIHZlcmlmeSBzb21lIGNoYW5nZXMuIGBJTkVUYCBpcyBnZW5lcmFsbHkgZW5hYmxlZCwgc28gd2UgZG9uJiMzOTt0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhhdCBodXJkbGUsIGJ1dCBgSVBfU0NUUGAgaXMgdGhlIGtleSBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBsb29rIGZvci4KCkJhc2ljYWxseSwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBsb2dpYyBvZiBob3cgU0NUUCBoYW5kbGVzIGRhdGEgdGhhdCBuZWVkcyB0byBiZSByZXRyYW5zbWl0dGVkLCBzcGVjaWZpY2FsbHkgd2hlbiBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHRoZSBmbHVzaC4gVGhpcyBpcyAqY3JpdGljYWwqIGZ1bmN0aW9uYWwgY29kZTsgaXQmIzM5O3MgcmlnaHQgaW4gdGhlIHBhdGggb2Ygc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLiBUaGVyZWZvcmUsIHRoZSBjb25jbHVzaW9uIGlzIHRoaXMgYXJlYSAqZGVmaW5pdGVseSogbmVlZHMgZnV6emluZy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhpcyBjaGFuZ2UgZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucyBvciBtZW1vcnkgcHJvYmxlbXMuCgpUaGUgcHJpbWFyeSBmdW5jdGlvbnMgd2UmIzM5O2xsIHdhbnQgdG8gZm9jdXMgb3VyIGZ1enppbmcgZWZmb3J0cyBvbiBhcmUgYHNjdHBfcmV0cmFuc21pdGAsIGBzY3RwX291dHFfdGFpbGAsIGFuZCBgc2N0cF9vdXRxX3VuY29ya2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIG9mIHRoaXMgZnVuY3Rpb25hbGl0eS4gQW5kLCBvZiBjb3Vyc2UsIGVuc3VyZSBgSVBfU0NUUGAgaXMgZW5hYmxlZC4gVGhhdCYjMzk7cyB0aGUgb25seSByZWFsIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMzEgMDE6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3RhaWwmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3JldHJhbnNtaXQmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3RhaWwmIzM0OywKICAgICYjMzQ7c2N0cF9vdXRxX3VuY29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24mIzM5O3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzoxNi44NTg1MDc4MzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDc0ODI1NzU1ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9vdXRxX3RhaWxcIixcbiAgICBcInNjdHBfb3V0cV91bmNvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MTYuODU4NTEzOTgyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjU3ODE3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBiYjY0YzU5ODE0YWI4OWY4ZWNjNzIzZjBjZTkwMjA5NjE5MzE3NDMwXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL291dHF1ZXVlLmMgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jXFxuaW5kZXggZjZiOGMxM2RhZmE0YS4uZTkyZmI5ZGE0NjQ3YSAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jXFxuKysrIGIvbmV0L3NjdHAvb3V0cXVldWUuY1xcbkBAIC02NTAsNiArNjUwLDcgQEAgc3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxuIFxcdFxcdGlmIChjaHVuay1cXHUwMDNldHNuX2dhcF9hY2tlZCkge1xcbiBcXHRcXHRcXHRsaXN0X21vdmVfdGFpbChcXHUwMDI2Y2h1bmstXFx1MDAzZXRyYW5zbWl0dGVkX2xpc3QsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2dHJhbnNwb3J0LVxcdTAwM2V0cmFuc21pdHRlZCk7XFxuK1xcdFxcdFxcdGNodW5rLVxcdTAwM2V0cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXHRcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzoxNy4zMjUzOTk4MzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDcwMTU2NzUzMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9vdXRxX3RhaWxcIixcbiAgICBcInNjdHBfb3V0cV91bmNvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmI2NGM1OTgxNGFiODlmOGVjYzcyM2YwY2U5MDIwOTYxOTMxNzQzMFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDMxIDAxOjUzOjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvb3V0cXVldWUuYyBiL25ldC9zY3RwL291dHF1ZXVlLmNcbmluZGV4IGY2YjhjMTNkYWZhNGEuLmU5MmZiOWRhNDY0N2EgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jXG4rKysgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jXG5AQCAtNjUwLDYgKzY1MCw3IEBAIHN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LFxuIFx0XHRpZiAoY2h1bmstXHUwMDNldHNuX2dhcF9hY2tlZCkge1xuIFx0XHRcdGxpc3RfbW92ZV90YWlsKFx1MDAyNmNodW5rLVx1MDAzZXRyYW5zbWl0dGVkX2xpc3QsXG4gXHRcdFx0XHQgICAgICAgXHUwMDI2dHJhbnNwb3J0LVx1MDAzZXRyYW5zbWl0dGVkKTtcbitcdFx0XHRjaHVuay1cdTAwM2V0cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjE3LjMyNTQwMTYxNloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NDI4ODUxNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcGF0Y2ggYW5kIHJlbGV2YW50IGNvZGU6XG5cbioqQW5hbHl6aW5nIGEgU0NUUCBPdXRxdWV1ZSBQYXRjaCoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIHBhdGNoIHRoYXQncyBtYWtpbmcgYSBtb2RpZmljYXRpb24gaW4gYG5ldC9zY3RwL291dHF1ZXVlLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgaW50cm9kdWNpbmcgYGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtgIHdpdGhpbiB0aGUgYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dCBhbmQgcHVycG9zZS4gVGhpcyBhc3NpZ25tZW50IGxvb2tzIGxpa2UgaXQncyBzZXR0aW5nIGEgdHJhbnNwb3J0IGFzc29jaWF0aW9uIGZvciBhIGNodW5rLlxuXG5UbyBnZXQgYSBiZXR0ZXIgZ3JpcCwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhlIGZ1bmN0aW9uIGBfX3NjdHBfb3V0cV9mbHVzaF9ydHhgIGl0c2VsZiB3aXRoaW4gdGhlIGBuZXQvc2N0cC9vdXRxdWV1ZS5jYCBmaWxlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgZXhhY3QgbG9jYXRpb24gb2YgdGhhdCBmdW5jdGlvbiBhbmQgaWRlbnRpZnkgaXQncyBleGFjdCBkZWZpbml0aW9uLiBJJ2xsIHByb2JhYmx5IHN0YXJ0IHdpdGggYSBgZ3JlcGAgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzb3VyY2UgZmlsZSB0byB2ZXJpZnkgdGhlIGZpbGUgYW5kIGxvY2F0aW9uIHdpdGhpbiB0aGUgZmlsZSwgaWYgbmVlZGVkLiBLbm93aW5nIHRoZSBmdW5jdGlvbidzIGRlY2xhcmF0aW9uIHdpbGwgcmVhbGx5IGhlbHAgbWUgc2VlIGhvdyB0aGlzIG5ldyBhc3NpZ25tZW50IGZpdHMgaW4gd2l0aCB0aGUgZXhpc3RpbmcgbG9naWMgb2YgcmV0cmFuc21pdHRpbmcgY2h1bmtzLiBGcm9tIHRoZXJlLCBJJ2xsIGFzc2VzcyB3aGV0aGVyIHRoaXMgYXNzaWdubWVudCBpcyBjb3JyZWN0LCBvciBpZiBpdCBtaWdodCBiZSBtaXNzaW5nIG9yIHJlZHVuZGFudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAzNCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjIxLjc2ODI4ODgyOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODI2NTExOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NjdHBfb3V0cV9mbHVzaF9ydHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkxLSAqIFRyYW5zbWl0IERBVEEgY2h1bmtzIG9uIHRoZSByZXRyYW5zbWl0IHF1ZXVlLiAgVXBvbiByZXR1cm4gZnJvbVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJ3BrdCcgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTMtICogbmVlZCB0byBiZSB0cmFuc21pdHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo1OTg6c3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxMi1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XFx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVxcdTAwM2VxLCBjdHgtXFx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzdGFydF90aW1lciwgY3R4LVxcdTAwM2VnZnApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzoyMS44MTY1NTg4NDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjg0OTg1MjM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipEaXZpbmcgaW50byB0aGUgU0NUUCBSZXRyYW5zbWlzc2lvbiBMb2dpYyoqXG5cblJpZ2h0LCB0aGUgdHJhY2UgcG9pbnRzIHRvIGBfX3NjdHBfb3V0cV9mbHVzaF9ydHhgLiBUaGF0J3Mgd2hlcmUgdGhlIHJldHggcmV0cmFuc21pc3Npb24gbG9naWMgc2VlbXMgdG8gYmUgcmVzaWRpbmcsIHNvIHRoYXQncyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBMZXQncyBzZWUgaG93IHRoZSBwYXRjaCBoYXMgY2hhbmdlZCB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBpdC4gVGltZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZSBhbmQgc2VlIHdoYXQgdGhlIGlzc3VlIGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODQzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MjUuMTAxNTQ4MzQ0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY3RwL291dHF1ZXVlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjMwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjMwOlxcdFxcdCAqIHBhY2tldCBvZiByZXRyYW5zbWl0dGVkIGRhdGEuXVxcbiA2MzE6XFx0XFx0ICpcXG4gNjMyOlxcdFxcdCAqIEZvciBmYXN0IHJldHJhbnNtaXNzaW9ucyB3ZSBhbHNvIHNlbmQgb25seSBPTkUgcGFja2V0LiAgSG93ZXZlcixcXG4gNjMzOlxcdFxcdCAqIGlmIHdlIGFyZSBqdXN0IGZsdXNoaW5nIHRoZSBxdWV1ZSBkdWUgdG8gb3BlbiB3aW5kb3csIHdlJ2xsXFxuIDYzNDpcXHRcXHQgKiB0cnkgdG8gc2VuZCBhcyBtdWNoIGFzIHBvc3NpYmxlLlxcbiA2MzU6XFx0XFx0ICovXFxuIDYzNjpcXHRcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY2h1bmssIGNodW5rMSwgbHF1ZXVlLCB0cmFuc21pdHRlZF9saXN0KSB7XFxuIDYzNzpcXHRcXHRcXHQvKiBJZiB0aGUgY2h1bmsgaXMgYWJhbmRvbmVkLCBtb3ZlIGl0IHRvIGFiYW5kb25lZCBsaXN0LiAqL1xcbiA2Mzg6XFx0XFx0XFx0aWYgKHNjdHBfY2h1bmtfYWJhbmRvbmVkKGNodW5rKSkge1xcbiA2Mzk6XFx0XFx0XFx0XFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2Y2h1bmstXFx1MDAzZXRyYW5zbWl0dGVkX2xpc3QpO1xcbiA2NDA6XFx0XFx0XFx0XFx0c2N0cF9pbnNlcnRfbGlzdChcXHUwMDI2cS1cXHUwMDNlYWJhbmRvbmVkLFxcbiA2NDE6XFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZjaHVuay1cXHUwMDNldHJhbnNtaXR0ZWRfbGlzdCk7XFxuIDY0MjpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNjQzOlxcdFxcdFxcdH1cXG4gNjQ0OlxcdFxcbiA2NDU6XFx0XFx0XFx0LyogTWFrZSBzdXJlIHRoYXQgR2FwIEFja2VkIFRTTnMgYXJlIG5vdCByZXRyYW5zbWl0dGVkLiAgQVxcbiA2NDY6XFx0XFx0XFx0ICogc2ltcGxlIGFwcHJvYWNoIGlzIGp1c3QgdG8gbW92ZSBzdWNoIFRTTnMgb3V0IG9mIHRoZVxcbiA2NDc6XFx0XFx0XFx0ICogd2F5IGFuZCBpbnRvIGEgJ3RyYW5zbWl0dGVkJyBxdWV1ZSBhbmQgc2tpcCB0byB0aGVcXG4gNjQ4OlxcdFxcdFxcdCAqIG5leHQgY2h1bmsuXFxuIDY0OTpcXHRcXHRcXHQgKi9cXG4gNjUwOlxcdFxcdFxcdGlmIChjaHVuay1cXHUwMDNldHNuX2dhcF9hY2tlZCkge1xcbiA2NTE6XFx0XFx0XFx0XFx0bGlzdF9tb3ZlX3RhaWwoXFx1MDAyNmNodW5rLVxcdTAwM2V0cmFuc21pdHRlZF9saXN0LFxcbiA2NTI6XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ0cmFuc3BvcnQtXFx1MDAzZXRyYW5zbWl0dGVkKTtcXG4gNjUzOlxcdFxcdFxcdFxcdGNodW5rLVxcdTAwM2V0cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XFxuIDY1NDpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNjU1OlxcdFxcdFxcdH1cXG4gNjU2OlxcdFxcbiA2NTc6XFx0XFx0XFx0LyogSWYgd2UgYXJlIGRvaW5nIGZhc3QgcmV0cmFuc21pdCwgaWdub3JlIG5vbi1mYXN0X3J0cmFuc21pdFxcbiA2NTg6XFx0XFx0XFx0ICogY2h1bmtzXFxuIDY1OTpcXHRcXHRcXHQgKi9cXG4gNjYwOlxcdFxcdFxcdGlmIChmYXN0X3J0eCBcXHUwMDI2XFx1MDAyNiAhY2h1bmstXFx1MDAzZWZhc3RfcmV0cmFuc21pdClcXG4gNjYxOlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiA2NjI6XFx0XFxuIDY2MzpcXHRyZWRvOlxcbiA2NjQ6XFx0XFx0XFx0LyogQXR0ZW1wdCB0byBhcHBlbmQgdGhpcyBjaHVuayB0byB0aGUgcGFja2V0LiAqL1xcbiA2NjU6XFx0XFx0XFx0c3RhdHVzID0gc2N0cF9wYWNrZXRfYXBwZW5kX2NodW5rKHBrdCwgY2h1bmspO1xcbiA2NjY6XFx0XFxuIDY2NzpcXHRcXHRcXHRzd2l0Y2ggKHN0YXR1cykge1xcbiA2Njg6XFx0XFx0XFx0Y2FzZSBTQ1RQX1hNSVRfUE1UVV9GVUxMOlxcbiA2Njk6XFx0XFx0XFx0XFx0aWYgKCFwa3QtXFx1MDAzZWhhc19kYXRhIFxcdTAwMjZcXHUwMDI2ICFwa3QtXFx1MDAzZWhhc19jb29raWVfZWNobykge1xcbiA2NzA6XFx0XFx0XFx0XFx0XFx0LyogSWYgdGhpcyBwYWNrZXQgZGlkIG5vdCBjb250YWluIERBVEEgdGhlblxcbiA2NzE6XFx0XFx0XFx0XFx0XFx0ICogcmV0cmFuc21pc3Npb24gZGlkIG5vdCBoYXBwZW4sIHNvIGRvIGl0XFxuIDY3MjpcXHRcXHRcXHRcXHRcXHQgKiBhZ2Fpbi4gIFdlJ2xsIGlnbm9yZSB0aGUgZXJyb3IgaGVyZSBzaW5jZVxcbiA2NzM6XFx0XFx0XFx0XFx0XFx0ICogY29udHJvbCBjaHVua3MgYXJlIGFscmVhZHkgZnJlZWQgc28gdGhlcmVcXG4gNjc0OlxcdFxcdFxcdFxcdFxcdCAqIGlzIG5vdGhpbmcgd2UgY2FuIGRvLlxcbiA2NzU6XFx0XFx0XFx0XFx0XFx0ICovXFxuIDY3NjpcXHRcXHRcXHRcXHRcXHRzY3RwX3BhY2tldF90cmFuc21pdChwa3QsIGdmcCk7XFxuIDY3NzpcXHRcXHRcXHRcXHRcXHRnb3RvIHJlZG87XFxuIDY3ODpcXHRcXHRcXHRcXHR9XFxuIDY3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MjUuMTAxNjkwNDY0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA3NzMwMzE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipTQ1RQIFJUWCBGbHVzaCBhbmQgVHJhbnNwb3J0IEFzc2lnbm1lbnQqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGludHJvZHVjZXMgYGNodW5rLVx1MDAzZXRyYW5zcG9ydCA9IHRyYW5zcG9ydDtgIHdpdGhpbiB0aGUgYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAgZnVuY3Rpb24uIEZ1bmN0aW9uYWxseSwgaXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyBpdCdzIGFzc2lnbmluZyBhIHRyYW5zcG9ydCBwb2ludGVyIHRvIGEgY2h1bmsgYmVpbmcgcmV0cmFuc21pdHRlZC4gVGhlIGNvbnRleHQgaGVyZSBpcyBkZWZpbml0ZWx5IFNDVFAsIHdoaWNoIGlzIG15IGFyZWEgb2YgZXhwZXJ0aXNlLiBCZWZvcmUgSSBkaXZlIGludG8gdGhlIGRldGFpbHMgb2YgKndoeSogdGhpcyBhc3NpZ25tZW50IGlzIGJlaW5nIG1hZGUgd2l0aGluIHRoaXMgc3BlY2lmaWMgZnVuY3Rpb24sIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWcgb3B0aW9ucy4gSSB3YW50IHRvIGVuc3VyZSB0aGlzIGFkZGl0aW9uIGFsaWducyB3aXRoIGhvdyBTQ1RQIGlzIGNvbmZpZ3VyZWQgaW4gdGhpcyBwYXJ0aWN1bGFyIGVudmlyb25tZW50LiBNeSBhaW0gaXMgdG8gbG9vayBhdCBob3cgd2UgaGF2ZSBTQ1RQIGNvbmZpZ3VyZWQgYW5kIGVuc3VyZSB0aGF0IHRoaXMgdHJhbnNwb3J0IGFzc2lnbm1lbnQgaXMgbm90IGdvaW5nIHRvIGJyZWFrIGFueXRoaW5nIHdlIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjI4LjE3ODk5NTc2M1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzg0ODY4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MjguMjI2ODQ4MjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDk0OTkyMTE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0NUUCBPdXRnb2luZyBRdWV1ZSBGbHVzaCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGluIHF1ZXN0aW9uIGhlcmUgaXMgYElQX1NDVFBgLiBHb3QgaXQuIE15IHByaW1hcnkgZ29hbCBub3cgaXMgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIHN5bWJvbHMgaW52b2x2ZWQgaW4gdGhpcyBzcGVjaWZpYyBhc3BlY3Qgb2YgdGhlIFNDVFAgaW1wbGVtZW50YXRpb24uIE15IGF0dGVudGlvbiBpcyBpbW1lZGlhdGVseSBkcmF3biB0byB0aGUgZnVuY3Rpb24gYF9fc2N0cF9vdXRxX2ZsdXNoX3J0eGAuIEl0J3MgZGVmaW5lZCBhcyBgc3RhdGljYCwgd2hpY2ggaW1tZWRpYXRlbHkgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGVyZSBpdCdzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUuIEtub3dpbmcgdGhhdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIFRoZXJlZm9yZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGlkZW50aWZ5IGFsbCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgY29kZS4gVW5kZXJzdGFuZGluZyB3aGVyZSBhbmQgd2hlbiBgX19zY3RwX291dHFfZmx1c2hfcnR4YCBpcyBpbnZva2VkIGlzIGNydWNpYWwgdG8gZ3Jhc3BpbmcgaXRzIGZ1bmN0aW9uIGFuZCBwb3RlbnRpYWwgaW1wYWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDgxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6MzEuNzIxODQyNzI2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjQyNzQxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX3NjdHBfb3V0cV9mbHVzaF9ydHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkxLSAqIFRyYW5zbWl0IERBVEEgY2h1bmtzIG9uIHRoZSByZXRyYW5zbWl0IHF1ZXVlLiAgVXBvbiByZXR1cm4gZnJvbVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJ3BrdCcgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTMtICogbmVlZCB0byBiZSB0cmFuc21pdHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo1OTg6c3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxMi1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XFx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVxcdTAwM2VxLCBjdHgtXFx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzdGFydF90aW1lciwgY3R4LVxcdTAwM2VnZnApO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozMS43NjQyNzQ5MzNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA2ODE1NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYHNjdHBfb3V0cV9mbHVzaF9ydHhgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBzZWUgdGhhdCBgc2N0cF9vdXRxX2ZsdXNoX3J0eGAgaXMgYW5vdGhlciBzdGF0aWMgZnVuY3Rpb24gd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLiBJbnRlcmVzdGluZy4gR2l2ZW4gdGhhdCBpdCdzIHN0YXRpYywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gY2hlY2sgdGhlIGNhbGwgc2l0ZXMgdG8gdW5kZXJzdGFuZCB3aGVyZSBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZC4gU3RhdGljIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIHNjb3BlZCB3aXRoaW4gdGhlaXIgY29tcGlsYXRpb24gdW5pdCwgc28gdHJhY2luZyB0aG9zZSBjYWxscyB3aWxsIGdpdmUgbWUgYSBjcml0aWNhbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmdW5jdGlvbidzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIG92ZXJhbGwgcmV0cmFuc21pc3Npb24gbG9naWMuIExldCdzIGdldCB0byBpdCBhbmQgc2VlIHdobydzIGNhbGxpbmcgdGhpcyBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MjUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozNC44MzI0MzMxMjNaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTQ2MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfb3V0cV9mbHVzaF9ydHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkxLSAqIFRyYW5zbWl0IERBVEEgY2h1bmtzIG9uIHRoZSByZXRyYW5zbWl0IHF1ZXVlLiAgVXBvbiByZXR1cm4gZnJvbVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTkyOiAqIF9fc2N0cF9vdXRxX2ZsdXNoX3J0eCgpIHRoZSBwYWNrZXQgJ3BrdCcgbWF5IGNvbnRhaW4gY2h1bmtzIHdoaWNoXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTMtICogbmVlZCB0byBiZSB0cmFuc21pdHRlZCBieSB0aGUgY2FsbGVyLlxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTctICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo1OTg6c3RhdGljIGludCBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoc3RydWN0IHNjdHBfb3V0cSAqcSwgc3RydWN0IHNjdHBfcGFja2V0ICpwa3QsXFxubmV0L3NjdHAvb3V0cXVldWUuYy01OTktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dCwgaW50ICpzdGFydF90aW1lciwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz04ODA9c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX2N0cmwoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgpXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTk5MS0vKiBSZXR1cm5zIGZhbHNlIGlmIG5ldyBkYXRhIHNob3VsZG4ndCBiZSBzZW50ICovXFxubmV0L3NjdHAvb3V0cXVldWUuYzo5OTI6c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTk5My1cXHRcXHRcXHRcXHRpbnQgcnR4X3RpbWVvdXQpXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMTItXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMDEzOlxcdGVycm9yID0gX19zY3RwX291dHFfZmx1c2hfcnR4KGN0eC1cXHUwMDNlcSwgY3R4LVxcdTAwM2VwYWNrZXQsIHJ0eF90aW1lb3V0LFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxNC1cXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2c3RhcnRfdGltZXIsIGN0eC1cXHUwMDNlZ2ZwKTtcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmM9MTAzOD1zdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2hfZGF0YShzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3Mi1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmN0eC1cXHUwMDNlcS1cXHUwMDNlcmV0cmFuc21pdCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XFx0ICAgICFzY3RwX291dHFfZmx1c2hfcnR4KGN0eCwgcnR4X3RpbWVvdXQpKVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3NC1cXHRcXHRyZXR1cm47XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjM0Ljg3OTU4NDk5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjMyNjkzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGEgU3RhdGljIEZ1bmN0aW9uOiBgc2N0cF9vdXRxX2ZsdXNoX2RhdGFgKipcblxuT2theSwgc28gYHNjdHBfb3V0cV9mbHVzaF9kYXRhYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBTdGF0aWMgZnVuY3Rpb25zLCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIFNDVFAgaW1wbGVtZW50YXRpb24gSSdtIHdvcmtpbmcgd2l0aCwgdHlwaWNhbGx5IHBvaW50IHRvIGludGVybmFsLCB0aWdodGx5IHNjb3BlZCBmdW5jdGlvbmFsaXR5LiBJdCBtZWFucyBpdCdzIG5vdCBtZWFudCB0byBiZSBkaXJlY3RseSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIGl0J3MgZGVmaW5lZCwgd2hpY2ggaW4gdHVybiBtZWFucyBpdOKAmXMgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGl0cyBpbW1lZGlhdGUgZGVwZW5kZW5jaWVzLiBTbywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHByZWNpc2VseSAqd2hvKiBpcyBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgaXRzIGNhbGxlcnMgaXMga2V5IHRvIGdyYXNwaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IHdpdGhpbiB0aGUgbGFyZ2VyIFNDVFAgYXJjaGl0ZWN0dXJlLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIHRyYWNlIHRoZSBjYWxsIHBhdGhzIGFuZCBidWlsZCBhIG1lbnRhbCBtYXAgb2Ygd2hlcmUgdGhpcyByb3V0aW5lIGlzIHVzZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NjUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozOC4wMDI4NTc2NzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDI5NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNjdHBfb3V0cV9mbHVzaF9kYXRhXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL291dHF1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuYz05OTI9c3RhdGljIGJvb2wgc2N0cF9vdXRxX2ZsdXNoX3J0eChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAzNy1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMzg6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoX2RhdGEoc3RydWN0IHNjdHBfZmx1c2hfY3R4ICpjdHgsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM5LVxcdFxcdFxcdFxcdCBpbnQgcnR4X3RpbWVvdXQpXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTExOTM9c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoKHN0cnVjdCBzY3RwX291dHEgKnEsIGludCBydHhfdGltZW91dCwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE3LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxODpcXHRzY3RwX291dHFfZmx1c2hfZGF0YShcXHUwMDI2Y3R4LCBydHhfdGltZW91dCk7XFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjE5LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1MzozOC4wNDc4OTMxODRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMyOTMyOTEwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgc2N0cF9vdXRxX2ZsdXNoYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBzY3RwX291dHFfZmx1c2hgIGlzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFN0YXRpYyBmdW5jdGlvbnMsIHdpdGhpbiBhIGxhcmdlIGNvZGViYXNlIGxpa2UgU0NUUCwgYXJlIG9mdGVuIGNydWNpYWwgZm9yIGludGVybmFsIHN0YXRlIG1hbmFnZW1lbnQgb3IgaGlnaGx5IHNwZWNpZmljIG9wZXJhdGlvbnMuIFRoZXkgYXJlbid0IGludGVuZGVkIGZvciBkaXJlY3QgZXh0ZXJuYWwgdXNlLiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgaWRlbnRpZnkgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgZnJvbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBTQ1RQIHN0YWNrLiBJcyBpdCBjYWxsZWQgZnJvbSB0aGUgY29tbW9uIHBhdGggb3Igc29tZXRoaW5nIG1vcmUgZXNvdGVyaWM/IFRoZSBjYWxsIHNpdGVzIHdpbGwgYmUgdGhlIGtleSB0byB1bmxvY2tpbmcgaXRzIG1lYW5pbmcuIExldCdzIGRpZyBpbiBhbmQgZmlndXJlIG91dCB0aGUgYWNjZXNzIHBhdHRlcm5zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDgxLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDEuMzc3MjI2MTM4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODk0OTMxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX291dHFfZmx1c2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvb3V0cXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9vdXRxdWV1ZS5jPTUwPXN0YXRpYyB2b2lkIHNjdHBfbWFya19taXNzaW5nKHN0cnVjdCBzY3RwX291dHEgKnEsXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU1LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTY6c3RhdGljIHZvaWQgc2N0cF9vdXRxX2ZsdXNoKHN0cnVjdCBzY3RwX291dHEgKnEsIGludCBydHhfdGltZW91dCwgZ2ZwX3QgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU3LVxcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYz0yODE9dm9pZCBzY3RwX291dHFfdGFpbChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssIGdmcF90IGdmcClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMzEyLVxcdGlmICghcS1cXHUwMDNlY29yaylcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjMxMzpcXHRcXHRzY3RwX291dHFfZmx1c2gocSwgMCwgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTMxNC19XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTUzNz12b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTg2LVxcdGlmIChyZWFzb24gIT0gU0NUUF9SVFhSX0ZBU1RfUlRYKVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTg3OlxcdFxcdHNjdHBfb3V0cV9mbHVzaChxLCAvKiBydHhfdGltZW91dCAqLyAxLCBHRlBfQVRPTUlDKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU4OC19XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTU5MS0gKiBUcmFuc21pdCBEQVRBIGNodW5rcyBvbiB0aGUgcmV0cmFuc21pdCBxdWV1ZS4gIFVwb24gcmV0dXJuIGZyb21cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjU5MjogKiBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoKSB0aGUgcGFja2V0ICdwa3QnIG1heSBjb250YWluIGNodW5rcyB3aGljaFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTkzLSAqIG5lZWQgdG8gYmUgdHJhbnNtaXR0ZWQgYnkgdGhlIGNhbGxlci5cXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk3LSAqL1xcbm5ldC9zY3RwL291dHF1ZXVlLmM6NTk4OnN0YXRpYyBpbnQgX19zY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX291dHEgKnEsIHN0cnVjdCBzY3RwX3BhY2tldCAqcGt0LFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtNTk5LVxcdFxcdFxcdFxcdCBpbnQgcnR4X3RpbWVvdXQsIGludCAqc3RhcnRfdGltZXIsIGdmcF90IGdmcClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmM9NzYwPXZvaWQgc2N0cF9vdXRxX3VuY29yayhzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBnZnBfdCBnZnApXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTc2NC1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjc2NTpcXHRzY3RwX291dHFfZmx1c2gocSwgMCwgZ2ZwKTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTc2Ni19XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jPTgwMT1zdGF0aWMgdm9pZCBzY3RwX291dHFfc2VsZWN0X3RyYW5zcG9ydChzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtODc5LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6ODgwOnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF9jdHJsKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4KVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtODgxLXtcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtOTkxLS8qIFJldHVybnMgZmFsc2UgaWYgbmV3IGRhdGEgc2hvdWxkbid0IGJlIHNlbnQgKi9cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjk5MjpzdGF0aWMgYm9vbCBzY3RwX291dHFfZmx1c2hfcnR4KHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4LFxcbm5ldC9zY3RwL291dHF1ZXVlLmMtOTkzLVxcdFxcdFxcdFxcdGludCBydHhfdGltZW91dClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTAxMi1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwMTM6XFx0ZXJyb3IgPSBfX3NjdHBfb3V0cV9mbHVzaF9ydHgoY3R4LVxcdTAwM2VxLCBjdHgtXFx1MDAzZXBhY2tldCwgcnR4X3RpbWVvdXQsXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDE0LVxcdFxcdFxcdFxcdCAgICAgIFxcdTAwMjZzdGFydF90aW1lciwgY3R4LVxcdTAwM2VnZnApO1xcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMDM3LVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6MTAzODpzdGF0aWMgdm9pZCBzY3RwX291dHFfZmx1c2hfZGF0YShzdHJ1Y3Qgc2N0cF9mbHVzaF9jdHggKmN0eCxcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEwMzktXFx0XFx0XFx0XFx0IGludCBydHhfdGltZW91dClcXG4tLVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3Mi1cXHRpZiAoIWxpc3RfZW1wdHkoXFx1MDAyNmN0eC1cXHUwMDNlcS1cXHUwMDNlcmV0cmFuc21pdCkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jOjEwNzM6XFx0ICAgICFzY3RwX291dHFfZmx1c2hfcnR4KGN0eCwgcnR4X3RpbWVvdXQpKVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTA3NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExNTUtXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMTU2OnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaF90cmFuc3BvcnRzKHN0cnVjdCBzY3RwX2ZsdXNoX2N0eCAqY3R4KVxcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTE1Ny17XFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExOTItXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMTkzOnN0YXRpYyB2b2lkIHNjdHBfb3V0cV9mbHVzaChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBpbnQgcnR4X3RpbWVvdXQsIGdmcF90IGdmcClcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTExOTQte1xcbi0tXFxubmV0L3NjdHAvb3V0cXVldWUuYy0xMjEyLVxcbm5ldC9zY3RwL291dHF1ZXVlLmM6MTIxMzpcXHRzY3RwX291dHFfZmx1c2hfY3RybChcXHUwMDI2Y3R4KTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTQtXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTctXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjE4OlxcdHNjdHBfb3V0cV9mbHVzaF9kYXRhKFxcdTAwMjZjdHgsIHJ0eF90aW1lb3V0KTtcXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMTktXFxuLS1cXG5uZXQvc2N0cC9vdXRxdWV1ZS5jLTEyMjEtXFxubmV0L3NjdHAvb3V0cXVldWUuYzoxMjIyOlxcdHNjdHBfb3V0cV9mbHVzaF90cmFuc3BvcnRzKFxcdTAwMjZjdHgpO1xcbm5ldC9zY3RwL291dHF1ZXVlLmMtMTIyMy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQxLjQyNjE4MTEyNloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE5NzQ4NTQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkludmVzdGlnYXRpbmcgU0NUUCBGdW5jdGlvbiBWaXNpYmlsaXR5KipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSB0YWtpbmcgYSBsb29rIGF0IHRoZXNlIGBzY3RwYCBmdW5jdGlvbnMsIHNwZWNpZmljYWxseSBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYC4gVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBhcmUgdGhlc2UgZnVuY3Rpb25zICpleHBvcnRlZCo/IEFyZSB0aGV5IHZpc2libGUgb3V0c2lkZSB0aGVpciBjb21waWxhdGlvbiB1bml0PyBJZiB0aGV5IGFyZSwgaXQncyBnb2luZyB0byBpbmZsdWVuY2UgaG93IEkgYW5hbHl6ZSB0aGUgY29kZSwgaG93IEkgY29uc2lkZXIgdGhlaXIgcG90ZW50aWFsIGludGVyYWN0aW9uIHdpdGggb3RoZXIgbW9kdWxlcywgYW5kIHVsdGltYXRlbHksIGhvdyBlYXNpbHkgSSBjYW4gdW5kZXJzdGFuZCBhbmQgcG90ZW50aWFsbHkgbW9kaWZ5IHRoZSBTQ1RQIHN0YWNrJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byBrbm93IGlmIHRoZXkncmUgc3RyaWN0bHkgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvciBwYXJ0IG9mIGEgZGVmaW5lZCBBUEkuIEknbSBnb2luZyB0byBkaWcgaW50byB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgdGhlIHN5bWJvbCB0YWJsZXMgdG8gZGVmaW5pdGl2ZWx5IGRldGVybWluZSB0aGVpciB2aXNpYmlsaXR5LiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGJlZm9yZSBJIGNhbiBwcm9jZWVkIHdpdGggYSBkZWVwZXIgZGl2ZSBpbnRvIHRoZWlyIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4NTksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo0NC45NDU5MzE3NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYzMTg3NDcsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0wuKnNjdHBfcmV0cmFuc21pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjQ0Ljk5MjI2MDcwOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTUxNzg5ODQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIEhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHByb3ZpZGVkIHRleHQgYXMgdGhlIGJhc2lzIGZvciBteSBvd24gaW50ZXJuYWwgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkludGVybmFsIEFzc2Vzc21lbnQ6IEhlYWRlciBQcmVzZW5jZSBcdTAwMjYgU2lnbmlmaWNhbmNlKipcblxuUmlnaHQsIGxldCdzIGp1c3QgbWFrZSBhIHF1aWNrIGNoZWNrIGhlcmUuIE15IGluaXRpYWwgZm9jdXMgaXMgb24gdGhlICpzdHJ1Y3R1cmUqIG9mIHRoaXMgaW5mb3JtYXRpb24uIFRoZSBwcm9tcHQgbWVudGlvbnMgXCJoZWFkZXJzXCIgc28gSSdtIGltbWVkaWF0ZWx5IHNjYW5uaW5nIHRoZSB0ZXh0IHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55LCBhbmQgdGhlaXIgcHJlc2VuY2UgbWF5IGJlIHNpZ25pZmljYW50LiBJZiB0aGV5J3JlIHByZXNlbnQsIHdoYXQga2luZCBvZiBoZWFkZXJzIGFyZSB0aGV5PyBBcmUgdGhleSBpbmZvcm1hdGl2ZSwgZGVzY3JpcHRpdmUsIG9yIGp1c3QgdXNlZCBmb3IgZm9ybWF0dGluZz8gVGhlIGV4aXN0ZW5jZSBvZiBoZWFkZXJzIGNvdWxkIHRlbGwgbWUgc29tZXRoaW5nIGFib3V0IHRoZSBvcmdhbml6YXRpb24gYW5kIHVuZGVybHlpbmcgbG9naWMuIFRoaXMgaXMgZm91bmRhdGlvbmFsOyBkZXBlbmRpbmcgb24gaWYgYW5kIGhvdyB0aGV5IGFyZSB1c2VkLCBpdCB3aWxsIGluZm9ybSBteSBhcHByb2FjaCB0byBzdW1tYXJpemluZy4gU28sIHRoaXMgaW5pdGlhbCBhc3Nlc3NtZW50IG9mIHN0cnVjdHVyZSBjb3VsZCBjaGFuZ2UgdGhlIGVudGlyZSBhcHByb2FjaCB0byBteSBzdW1tYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTcyLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDcuOTQ0MDUyMTgzWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM4NjI5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3JldHJhbnNtaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaD0zNTI9ZW51bSB7XFxuLS1cXG5pbmNsdWRlL25ldC9zY3RwL2NvbnN0YW50cy5oLTM4Mi0vKiBSZWFzb25zIHRvIHJldHJhbnNtaXQuICovXFxuaW5jbHVkZS9uZXQvc2N0cC9jb25zdGFudHMuaDozODM6ZW51bSBzY3RwX3JldHJhbnNtaXRfcmVhc29uIHtcXG5pbmNsdWRlL25ldC9zY3RwL2NvbnN0YW50cy5oLTM4NC1cXHRTQ1RQX1JUWFJfVDNfUlRYLFxcbi0tXFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg9MTExMz1pbnQgc2N0cF9vdXRxX2lzX2VtcHR5KGNvbnN0IHN0cnVjdCBzY3RwX291dHEgKik7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNDp2b2lkIHNjdHBfcmV0cmFuc21pdChzdHJ1Y3Qgc2N0cF9vdXRxICpxLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKnRyYW5zcG9ydCxcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTE1OlxcdFxcdCAgICAgZW51bSBzY3RwX3JldHJhbnNtaXRfcmVhc29uIHJlYXNvbik7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNjp2b2lkIHNjdHBfcmV0cmFuc21pdF9tYXJrKHN0cnVjdCBzY3RwX291dHEgKiwgc3RydWN0IHNjdHBfdHJhbnNwb3J0ICosIF9fdTgpO1xcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTctdm9pZCBzY3RwX291dHFfdW5jb3JrKHN0cnVjdCBzY3RwX291dHEgKiwgZ2ZwX3QgZ2ZwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTM6NDcuOTk1NDQ2OTYxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5Nzc0NTEyNzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNDVFAgUmV0cmFuc21pc3Npb24gQ2FuZGlkYXRlcyoqXG5cbk9rYXksIGxldCdzIHplcm8gaW4gb24gcG90ZW50aWFsIGFyZWFzIGZvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLiBJJ20gdGhpbmtpbmcgdGhhdCBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYCBsb29rIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy4gVGhleSBhbGwgc2VlbSBsb2dpY2FsbHkgcmVsYXRlZCB0byB0aGUgdHJhbnNtaXNzaW9uIHBpcGVsaW5lIGFuZCBhcmUgbGlrZWx5IGtleSB0byBwZXJmb3JtYW5jZSBpc3N1ZXMgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBgc2N0cF9vdXRxX3RhaWxgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIHdpdGhpbiB0aGUgZGF0YSBxdWV1ZSBpcyBjcml0aWNhbC4gVGhhdCB0YWlsIHBvaW50ZXIgbGlrZWx5IGludGVyYWN0cyB3aXRoIHJldHJhbnNtaXNzaW9uIGFuZCBmbG93IGNvbnRyb2wgbG9naWMuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGNvZGUgYXJvdW5kIHRoaXMgZnVuY3Rpb24gdG8gc2VlIHdoYXQgaW5zaWdodHMgaXQgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODcxMywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjUzOjUwLjk3MjkwMTY5NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1MDU5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9vdXRxX3RhaWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg9MTExMD12b2lkIHNjdHBfb3V0cV9mcmVlKHN0cnVjdCBzY3RwX291dHEqKTtcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaDoxMTExOnZvaWQgc2N0cF9vdXRxX3RhaWwoc3RydWN0IHNjdHBfb3V0cSAqLCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssIGdmcF90KTtcXG5pbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaC0xMTEyLWludCBzY3RwX291dHFfc2FjayhzdHJ1Y3Qgc2N0cF9vdXRxICosIHN0cnVjdCBzY3RwX2NodW5rICopO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1Mzo1MS4wMTY0MTI2OTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM2MTQ2NDIxODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIGNoZWNraW5nIGBzY3RwX291dHFfdW5jb3JrYDpcblxuKipBbmFseXppbmcgYHNjdHBfb3V0cV91bmNvcmtgKipcblxuQWxyaWdodCwgSSdtIHRoaW5raW5nIGFib3V0IGBzY3RwX291dHFfdW5jb3JrYC4gSSBrbm93IHRoaXMgZnVuY3Rpb24gaXMgY3J1Y2lhbCBmb3IgU0NUUCdzIG91dGJvdW5kIHF1ZXVlIG1hbmFnZW1lbnQuIEl0J3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgZGF0YSBmcm9tIHRoZSBvdXRib3VuZCBxdWV1ZSB3aGVuIGNlcnRhaW4gY29uZGl0aW9ucyBhcmUgbWV0LCBhbGxvd2luZyB0aGUga2VybmVsIHRvIHRyYW5zbWl0IGl0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb25zIGFyZTogV2hhdCB0cmlnZ2VycyB0aGUgXCJ1bmNvcmtpbmdcIj8gSXMgaXQgYmFzZWQgb24gd2luZG93IHNpemUsIGNvbmdlc3Rpb24gY29udHJvbCBzaWduYWxzLCBvciBhIHRpbWVyPyBEb2VzIGl0IGhhbmRsZSBtdWx0aXBsZSBjaHVua3Mgb3IganVzdCBhIHNpbmdsZSBvbmU/IElzIHRoaXMgZnVuY3Rpb24gY2FsbGVkIGluIHRoZSBmYXN0IHBhdGggb3Igb25seSBvY2Nhc2lvbmFsbHk/IEFueSBsb2NrcyBpbnZvbHZlZD8gQW5kIG1vcmUgaW1wb3J0YW50bHksIGRvZXMgaXQgaW1wbGVtZW50IGFsbCB0aGUgc3RhbmRhcmRzIGZyb20gUkZDIDQ5NjAgb3IgaGFzIHRoZXJlIGJlZW4gYW55IHJlY2VudCBhZGRpdGlvbnMgb3IgbW9kaWZpY2F0aW9ucz8gSSdsbCBwcm9iYWJseSBuZWVkIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCAtIHdoYXQgY2FsbHMgaXQsIGFuZCB3aGF0IGZ1bmN0aW9ucyBpdCBjYWxscy4gSG9wZWZ1bGx5LCB0aGVyZSBhcmUgc29tZSBjbGVhciBjb21tZW50cyEgSSBleHBlY3QgdG8gZmluZCBzb21lIGludGVyZXN0aW5nIGxvZ2ljIGhlcmUsIGVzcGVjaWFsbHkgYXJvdW5kIGZsb3cgY29udHJvbCBhbmQgcG90ZW50aWFsbHkgcmV0cmFuc21pc3Npb24gaGFuZGxpbmcuIFRpbWUgdG8gZGlnIGluIVxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDk5LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTQ6NTQuNjMxMDU4MDI0WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzIyNjMyMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9vdXRxX3VuY29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL25ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC9zY3RwL3N0cnVjdHMuaD0xMTE2PXZvaWQgc2N0cF9yZXRyYW5zbWl0X21hcmsoc3RydWN0IHNjdHBfb3V0cSAqLCBzdHJ1Y3Qgc2N0cF90cmFuc3BvcnQgKiwgX191OCk7XFxuaW5jbHVkZS9uZXQvc2N0cC9zdHJ1Y3RzLmg6MTExNzp2b2lkIHNjdHBfb3V0cV91bmNvcmsoc3RydWN0IHNjdHBfb3V0cSAqLCBnZnBfdCBnZnApO1xcbmluY2x1ZGUvbmV0L3NjdHAvc3RydWN0cy5oLTExMTgtdm9pZCBzY3RwX3Byc2N0cF9wcnVuZShzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTQ6NTUuMDYzMzI3MDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2NDU1NTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiBTQ1RQIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBzZWUgd2hhdCB3ZSdyZSBkZWFsaW5nIHdpdGggaGVyZSwgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIFNDVFAgc3RhY2sgaXMgYWN0dWFsbHkgaGFuZGxpbmcgdGhpbmdzLiBJIGtub3cgdGhlc2UgZnVuY3Rpb25zIGFyZSBjcnVjaWFsIHRvIGxvb2sgYXQ6IGBzY3RwX3JldHJhbnNtaXRgLCBvYnZpb3VzbHkgdHJpZ2dlcmVkIG9uIHJldHJhbnNtaXNzaW9uLCB0aGF0J3Mga2V5IHRvIHRoZSBTQ1RQIHByb2Nlc3MuIFRoZW4gd2UgaGF2ZSBgc2N0cF9vdXRxX3RhaWxgIGZvciB3aGVuIGEgY2h1bmsgaXMgYWRkZWQsIHRoYXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gQWxzbywgYHNjdHBfb3V0cV91bmNvcmtgIGZvciB3aGVuIHRoZSBvdXRwdXQgcXVldWUgaXMgdW5jb3JrZWQuIEknbGwgbWFrZSBzdXJlIHRvIGFkZCB0aGVzZSBmdW5jdGlvbnMgdG8gbXkgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uIC0gdGhleSBhcmUgdGhlIHJpZ2h0IGZvY3VzIHN5bWJvbHMuXG5cbkknbGwgYWxzbyBrZWVwIGluIG1pbmQgdGhhdCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMuIGBJUF9TQ1RQYCBzZWVtcyBsaWtlIHRoZSBtYWluIG9uZSB0aGF0IEknbGwgYmUgdGFyZ2V0aW5nLCBidXQgSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzIGluIGBuZXQvc2N0cC9LY29uZmlnYCB0byBiZSBzdXJlIHRoZXJlJ3Mgbm90aGluZyBlbHNlIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NTQwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTMxVDAxOjU0OjU5LjIyNzg4NTI3OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE2OTQ2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGVwZW5kcyBvblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlRoZSBTQ1RQIFByb3RvY29sXFxcIlxcbm5ldC9zY3RwL0tjb25maWc6ODpcXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvc2N0cC9LY29uZmlnLTktXFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxcbi0tXFxubmV0L3NjdHAvS2NvbmZpZz00MT1jb25maWcgU0NUUF9EQkdfT0JKQ05UXFxubmV0L3NjdHAvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJTQ1RQOiBEZWJ1ZyBvYmplY3QgY291bnRzXFxcIlxcbm5ldC9zY3RwL0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBQUk9DX0ZTXFxubmV0L3NjdHAvS2NvbmZpZy00NC1cXHRoZWxwXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTcwPWNvbmZpZyBJTkVUX1NDVFBfRElBR1xcbm5ldC9zY3RwL0tjb25maWc6NzE6XFx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcXG5uZXQvc2N0cC9LY29uZmlnLTcyLVxcdGRlZl90cmlzdGF0ZSBJTkVUX0RJQUdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMzFUMDE6NTQ6NTkuMjY5NTg3NzU2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzY1NDAxNzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgU0NUUCBPdXRxdWV1ZSBMb2dpYyoqXG5cbk9rYXksIHNvIHRoZSBtYWluIHBvaW50IGhlcmUgaXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggU0NUUCwgc3BlY2lmaWNhbGx5IHRoZSBvdXRxdWV1ZSBoYW5kbGluZywgYW5kIHdlIG5lZWQgdG8gdmVyaWZ5IHNvbWUgY2hhbmdlcy4gYElORVRgIGlzIGdlbmVyYWxseSBlbmFibGVkLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoYXQgaHVyZGxlLCBidXQgYElQX1NDVFBgIGlzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gbG9vayBmb3IuXG5cbkJhc2ljYWxseSwgdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgY29yZSBsb2dpYyBvZiBob3cgU0NUUCBoYW5kbGVzIGRhdGEgdGhhdCBuZWVkcyB0byBiZSByZXRyYW5zbWl0dGVkLCBzcGVjaWZpY2FsbHkgd2hlbiBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHRoZSBmbHVzaC4gVGhpcyBpcyAqY3JpdGljYWwqIGZ1bmN0aW9uYWwgY29kZTsgaXQncyByaWdodCBpbiB0aGUgcGF0aCBvZiBzb2NrZXQgb3BlcmF0aW9ucyBhbmQgcGFja2V0IHByb2Nlc3NpbmcuIFRoZXJlZm9yZSwgdGhlIGNvbmNsdXNpb24gaXMgdGhpcyBhcmVhICpkZWZpbml0ZWx5KiBuZWVkcyBmdXp6aW5nLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGlzIGNoYW5nZSBkb2Vzbid0IGludHJvZHVjZSBhbnkgcmVncmVzc2lvbnMgb3IgbWVtb3J5IHByb2JsZW1zLlxuXG5UaGUgcHJpbWFyeSBmdW5jdGlvbnMgd2UnbGwgd2FudCB0byBmb2N1cyBvdXIgZnV6emluZyBlZmZvcnRzIG9uIGFyZSBgc2N0cF9yZXRyYW5zbWl0YCwgYHNjdHBfb3V0cV90YWlsYCwgYW5kIGBzY3RwX291dHFfdW5jb3JrYC4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3Mgb2YgdGhpcyBmdW5jdGlvbmFsaXR5LiBBbmQsIG9mIGNvdXJzZSwgZW5zdXJlIGBJUF9TQ1RQYCBpcyBlbmFibGVkLiBUaGF0J3MgdGhlIG9ubHkgcmVhbCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMTk4LCJPdXRwdXRUb2tlbnMiOjEyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0zMVQwMTo1NTowNC4yMDYxMzA4NzJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzQ5NDA5MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3JldHJhbnNtaXRcIixcbiAgICBcInNjdHBfb3V0cV90YWlsXCIsXG4gICAgXCJzY3RwX291dHFfdW5jb3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgU0NUUCBvdXRxdWV1ZSBsb2dpYyBieSBzZXR0aW5nIHRoZSB0cmFuc3BvcnQgZm9yIGEgY2h1bmsgZHVyaW5nIHJldHJhbnNtaXNzaW9uIGZsdXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBTQ1RQIHNvY2tldCBvcGVyYXRpb25zIGFuZCBwYWNrZXQgcHJvY2Vzc2luZywgYW5kIHNob3VsZCBiZSBmdXp6ZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaW50cm9kdWNlIHJlZ3Jlc3Npb25zIG9yIG1lbW9yeSBpc3N1ZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcmV0cmFuc21pdFwiLFxuICAgIFwic2N0cF9vdXRxX3RhaWxcIixcbiAgICBcInNjdHBfb3V0cV91bmNvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBTQ1RQIG91dHF1ZXVlIGxvZ2ljIGJ5IHNldHRpbmcgdGhlIHRyYW5zcG9ydCBmb3IgYSBjaHVuayBkdXJpbmcgcmV0cmFuc21pc3Npb24gZmx1c2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFNDVFAgc29ja2V0IG9wZXJhdGlvbnMgYW5kIHBhY2tldCBwcm9jZXNzaW5nLCBhbmQgc2hvdWxkIGJlIGZ1enplZCB0byBlbnN1cmUgaXQgZG9lc24ndCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IgbWVtb3J5IGlzc3Vlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowlhhsx[1] Phase: Succeeded StartedAt: 2026-07-31 01:55:16 +0000 UTC FinishedAt: 2026-07-31 01:55:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-31 01:55:16 +0000 UTC FinishedAt: 2026-07-31 01:55:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2] Phase: Succeeded StartedAt: 2026-07-31 01:55:16 +0000 UTC FinishedAt: 2026-07-31 05:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-31 01:55:16 +0000 UTC FinishedAt: 2026-07-31 05:36:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-31 01:55:16 +0000 UTC FinishedAt: 2026-07-31 01:55:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-31 01:55:16 +0000 UTC FinishedAt: 2026-07-31 01:55:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowlhhsx/series-workflowlhhsx-convert-artifact-2420342110/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-31 01:55:26 +0000 UTC FinishedAt: 2026-07-31 02:11:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-31 01:55:26 +0000 UTC FinishedAt: 2026-07-31 02:11:54 +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:*aa66fab6-15b4-47c8-ade5-92e5508f58dd,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-workflowlhhsx/series-workflowlhhsx-convert-artifact-2420342110/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": "debfca58-b280-42f8-b4c4-06a4ea768024", "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-workflowlhhsx/series-workflowlhhsx-build-action-1707056708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-31 01:55:26 +0000 UTC FinishedAt: 2026-07-31 02:11:44 +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:*aa66fab6-15b4-47c8-ade5-92e5508f58dd,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-workflowlhhsx/series-workflowlhhsx-convert-artifact-2420342110/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": "debfca58-b280-42f8-b4c4-06a4ea768024", "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-workflowlhhsx/series-workflowlhhsx-build-action-1707056708/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-31 02:11:54 +0000 UTC FinishedAt: 2026-07-31 02:11:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-31 02:11:54 +0000 UTC FinishedAt: 2026-07-31 02:11:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-31 02:11:54 +0000 UTC FinishedAt: 2026-07-31 02:12:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-31 02:11:54 +0000 UTC FinishedAt: 2026-07-31 02:11:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowlhhsx/series-workflowlhhsx-convert-artifact-309052433/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-31 02:12:04 +0000 UTC FinishedAt: 2026-07-31 02:14:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-31 02:12:04 +0000 UTC FinishedAt: 2026-07-31 02:13:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*debfca58-b280-42f8-b4c4-06a4ea768024,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-workflowlhhsx/series-workflowlhhsx-build-action-1707056708/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-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-31 02:14:08 +0000 UTC FinishedAt: 2026-07-31 02:14:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-31 02:14:08 +0000 UTC FinishedAt: 2026-07-31 02:14:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-31 02:14:08 +0000 UTC FinishedAt: 2026-07-31 02:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-31 02:14:08 +0000 UTC FinishedAt: 2026-07-31 02:30:27 +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:*aa66fab6-15b4-47c8-ade5-92e5508f58dd,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-workflowlhhsx/series-workflowlhhsx-convert-artifact-309052433/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": "b09ae0e5-7825-427d-bacf-09e6ce8b3ea2", "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-workflowlhhsx/series-workflowlhhsx-build-action-3364008925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-31 02:14:08 +0000 UTC FinishedAt: 2026-07-31 02:30:17 +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:*aa66fab6-15b4-47c8-ade5-92e5508f58dd,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-workflowlhhsx/series-workflowlhhsx-convert-artifact-309052433/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": "b09ae0e5-7825-427d-bacf-09e6ce8b3ea2", "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-workflowlhhsx/series-workflowlhhsx-build-action-3364008925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-31 02:30:27 +0000 UTC FinishedAt: 2026-07-31 02:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-31 02:30:27 +0000 UTC FinishedAt: 2026-07-31 02:30:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-31 02:30:27 +0000 UTC FinishedAt: 2026-07-31 02:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-31 02:30:27 +0000 UTC FinishedAt: 2026-07-31 02:32:11 +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:*b09ae0e5-7825-427d-bacf-09e6ce8b3ea2,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-workflowlhhsx/series-workflowlhhsx-build-action-3364008925/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-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-31 02:32:21 +0000 UTC FinishedAt: 2026-07-31 05:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-31 02:32:21 +0000 UTC FinishedAt: 2026-07-31 05:36:32 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"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:*debfca58-b280-42f8-b4c4-06a4ea768024,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b09ae0e5-7825-427d-bacf-09e6ce8b3ea2,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-workflowlhhsx/series-workflowlhhsx-build-action-1707056708/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-workflowlhhsx/series-workflowlhhsx-build-action-3364008925/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-31 02:32:21 +0000 UTC FinishedAt: 2026-07-31 02:32:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-31 02:32:21 +0000 UTC FinishedAt: 2026-07-31 02:32:26 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"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-workflowlhhsx/series-workflowlhhsx-convert-artifact-4194123846/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-31 02:32:21 +0000 UTC FinishedAt: 2026-07-31 02:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-31 02:32:21 +0000 UTC FinishedAt: 2026-07-31 02:32:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-31 02:32:22 +0000 UTC FinishedAt: 2026-07-31 02:32:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-31 02:32:32 +0000 UTC FinishedAt: 2026-07-31 05:36:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlhhsx[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_retransmit","sctp_outq_tail","sctp_outq_uncork"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"53a43508ee332d8bffe40590c3d189c92a551f9f","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"2a261c10-c982-4f2c-9546-81dac01b21bd","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-31 02:32:32 +0000 UTC FinishedAt: 2026-07-31 05:36:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*debfca58-b280-42f8-b4c4-06a4ea768024,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*b09ae0e5-7825-427d-bacf-09e6ce8b3ea2,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-workflowlhhsx/series-workflowlhhsx-build-action-1707056708/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-workflowlhhsx/series-workflowlhhsx-build-action-3364008925/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-workflowlhhsx/series-workflowlhhsx-convert-artifact-4194123846/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,}