ZGlmZiAtLWdpdCBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2c3MjIuaCBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2c3MjIuaAppbmRleCAzMjgzNTZlLi43MWE1YmI1IDEwMDY0NAotLS0gYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nNzIyLmgKKysrIGIvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvZzcyMi5oCkBAIC0zMywxMiArMzMsMjcgQEAKICAqIEBicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBHLjcyMiBDb2RlYwogICogQHsKICAqCi0gKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgcmVnaXN0ZXIgRy43MjIgY29kZWMKKyAqIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIEcuNzIyIGNvZGVjCiAgKiBmYWN0b3J5IHRvIHRoZSBjb2RlYyBtYW5hZ2VyLiBBZnRlciB0aGUgY29kZWMgZmFjdG9yeSBoYXMgYmVlbiByZWdpc3RlcmVkLAogICogYXBwbGljYXRpb24gY2FuIHVzZSBAcmVmIFBKTUVESUFfQ09ERUMgQVBJIHRvIG1hbmlwdWxhdGUgdGhlIGNvZGVjLgogICoKKyAqIFRoZSBHLjcyMiBpbXBsZW1lbnRhdGlvbiB1c2VzIDE2LWJpdCBQQ00gd2l0aCBzYW1wbGluZyByYXRlIDE2MDAwSHogYW5kIAorICogMjBtcyBmcmFtZSBsZW5ndGggcmVzdWx0aW5nIGluIDY0a2JwcyBiaXRyYXRlLgorICoKICAqIFRoZSBHLjcyMiBjb2RlYyBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRlZCBhcyBwYXJ0IG9mIHBqbWVkaWEtY29kZWMKICAqIGxpYnJhcnksIGFuZCBkb2VzIG5vdCBkZXBlbmQgb24gZXh0ZXJuYWwgRy43MjIgY29kZWMgaW1wbGVtZW50YXRpb24uCisgKgorICogXHNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIFxzdWJzZWN0aW9uIGdlbmVyYWxfc2V0dGluZyBHZW5lcmFsIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzZWN0aW9uIHNwZWNpZmljX3NldHRpbmcgQ29kZWMgU3BlY2lmaWMgU2V0dGluZ3MKKyAqCisgKiBDdXJyZW50bHkgbm9uZS4KICAqLwogCiBQSl9CRUdJTl9ERUNMCmRpZmYgLS1naXQgYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nNzIyMS5oIGIvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvZzcyMjEuaAppbmRleCBiYTY2YzIyLi45Nzg1YjQ0IDEwMDY0NAotLS0gYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nNzIyMS5oCisrKyBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2c3MjIxLmgKQEAgLTI4LDQxICsyOCw3MSBAQAogI2luY2x1ZGUgPHBqbWVkaWEtY29kZWMvdHlwZXMuaD4KIAogLyoqCi0gKiBAZGVmZ3JvdXAgUEpNRURfRzcyMjFfQ09ERUMgRzcyMi4xIENvZGVjCisgKiBAZGVmZ3JvdXAgUEpNRURfRzcyMjFfQ09ERUMgRy43MjIuMSBDb2RlYyAoU2lyZW43L1NpcmVuMTQpCiAgKiBAaW5ncm91cCBQSk1FRElBX0NPREVDX0NPREVDUwotICogQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIEc3MjIuMSBjb2RlYworICogQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIEcuNzIyLjEgY29kZWMKICAqIEB7CiAgKgotICogPGI+RzcyMi4xIGxpY2Vuc2VkIGZyb20gUG9seWNvba48L2I+Ci0gKiA8Yj5HNzIyLjEgQW5uZXggQyBsaWNlbnNlZCBmcm9tIFBvbHljb22uPC9iPgorICogPGI+Ry43MjIuMSBsaWNlbnNlZCBmcm9tIFBvbHljb22uPC9iPjxiciAvPgorICogPGI+Ry43MjIuMSBBbm5leCBDIGxpY2Vuc2VkIGZyb20gUG9seWNvba48L2I+CiAgKgotICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIEc3MjIuMSBjb2RlYworICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MjIuMSBjb2RlYwogICogZmFjdG9yeSB0byB0aGUgY29kZWMgbWFuYWdlci4gQWZ0ZXIgdGhlIGNvZGVjIGZhY3RvcnkgaGFzIGJlZW4gcmVnaXN0ZXJlZCwKICAqIGFwcGxpY2F0aW9uIGNhbiB1c2UgQHJlZiBQSk1FRElBX0NPREVDIEFQSSB0byBtYW5pcHVsYXRlIHRoZSBjb2RlYy4KICAqCiAgKiBQSk1FRElBIEc3MjIuMSBjb2RlYyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBJVFUtVCBSZWNvbW1lbmRhdGlvbiAKICAqIEcuNzIyLjEgKDA1LzIwMDUpIEMgZml4ZWQgcG9pbnQgaW1wbGVtZW50YXRpb24gaW5jbHVkaW5nIGl0cyBBbm5leCBDLgogICoKLSAqIEc3MjIuMSBpcyBhIGxvdyBjb21wbGV4aXR5IGNvZGVjIHRoYXQgc3VwcG9ydHMgZm9yIDdrSHogYW5kIDE0a0h6IGJhbmR3aWR0aAotICogYXVkaW8gc2lnbmFscyB3b3JraW5nIGF0IGJpdHJhdGVzIHJhbmdpbmcgZnJvbSAxNmticHMgdG8gNDhrYnBzLiBJdCBtYXkgYmUKKyAqIEcuNzIyLjEgaXMgYSBsb3cgY29tcGxleGl0eSBjb2RlYyB0aGF0IHN1cHBvcnRzIDdrSHogYW5kIDE0a0h6IGF1ZGlvIAorICogYmFuZHdpZHRoIHdvcmtpbmcgYXQgYml0cmF0ZXMgcmFuZ2luZyBmcm9tIDE2a2JwcyB0byA0OGticHMuIEl0IG1heSBiZQogICogdXNlZCB3aXRoIHNwZWVjaCBvciBtdXNpYyBpbnB1dHMuCiAgKgotICogVGhlIGNvZGVjIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIGZvciBzdGFuZGFyZCBhbmQgbm9uLXN0YW5kYXJkIGJpdHJhdGVzLgotICogQnkgZGVmYXVsdCwgdGhlIHN0YW5kYXJkIGJpdHJhdGVzIGFyZSBlbmFibGVkIHVwb24gaW5pdGlhbGl6YXRpb24sIGkuZS46Ci0gKiAtIDI0a2JwcyBhbmQgMzJrYnBzIGZvciBhdWRpbyBiYW5kd2lkdGggNyBrSHogKDE2a0h6IHNhbXBsaW5nIHJhdGUpLAotICogLSAyNGticHMsIDMya2JwcywgYW5kIDQ4a2JwcyBmb3IgYXVkaW8gYmFuZHdpZHRoIDE0IGtIeiAoMzJrSHogc2FtcGxpbmcgCi0gKiAgIHJhdGUpLgotICogVGhlIHVzYWdlIG9mIG5vbi1zdGFuZGFyZCBiaXRyYXRlcyBtdXN0IGZvbGxvdyB0aGlzIHJlcXVpcmVtZW50czoKLSAqIC0gZm9yIHNhbXBsaW5nIHJhdGUgMTZrSHo6IDE2MDAwIHRvIDMyMDAwIGJwcywgaXQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQwMAotICogLSBmb3Igc2FtcGxpbmcgcmF0ZSAzMmtIejogMjQwMDAgdG8gNDgwMDAgYnBzLCBpdCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNDAwCi0gKiBOb3RlIHRoYXQgY3VycmVudGx5IGl0IGlzIG9ubHkgdXAgdG8gdHdvIG5vbi1zdGFuZGFyZCBtb2RlcyBjYW4gYmUgZW5hYmxlZAotICogYXQgb25lIHRpbWUuCisgKgorICogXHNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIFxzdWJzZWN0aW9uIGdlbmVyYWxfc2V0dGluZyBHZW5lcmFsIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzZWN0aW9uIHNwZWNpZmljX3NldHRpbmcgQ29kZWMgU3BlY2lmaWMgU2V0dGluZ3MKKyAqCisgKiBUaGUgZm9sbG93aW5nIHNldHRpbmdzIGFyZSBhcHBsaWNhYmxlIGZvciB0aGlzIGNvZGVjLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIGJpdHJhdGUgQml0cmF0ZQorICoKKyAqIFRoZSBjb2RlYyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBzdGFuZGFyZCBhbmQgbm9uLXN0YW5kYXJkIGJpdHJhdGVzLgorICogVXNlICNwam1lZGlhX2NvZGVjX2c3MjIxX3NldF9tb2RlKCkgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJpdHJhdGVzLgorICoKKyAqIEJ5IGRlZmF1bHQsIG9ubHkgc3RhbmRhcmQgYml0cmF0ZXMgYXJlIGVuYWJsZWQgdXBvbiBpbml0aWFsaXphdGlvbjoKKyAqIC0gZm9yIDdrSHogYXVkaW8gYmFuZHdpZHRoICgxNmtIeiBzYW1wbGluZyByYXRlKTogMjRrYnBzIGFuZCAzMmticHMsCisgKiAtIGZvciAxNGtIeiBhdWRpbyBiYW5kd2lkdGggKDMya0h6IHNhbXBsaW5nIHJhdGUpOiAyNGticHMsIDMya2JwcywgYW5kCisgKiAgIDQ4a2Jwcy4KKyAqCisgKiBUaGUgdXNhZ2Ugb2Ygbm9uLXN0YW5kYXJkIGJpdHJhdGVzIG11c3QgZm9sbG93IHRoZXNlIHJlcXVpcmVtZW50czoKKyAqIC0gZm9yIDdrSHogYXVkaW8gYmFuZHdpZHRoICgxNmtIeiBzYW1wbGluZyByYXRlKTogMTYwMDAgdG8gMzIwMDAgYnBzLCAKKyAqICAgbXVsdGlwbGljYXRpb24gb2YgNDAwCisgKiAtIGZvciAxNGtIeiBhdWRpbyBiYW5kd2lkdGggKDMya0h6IHNhbXBsaW5nIHJhdGUpOiAyNDAwMCB0byA0ODAwMCBicHMsCisgKiAgIG11bHRpcGxpY2F0aW9uIG9mIDQwMAorICoKKyAqIFxub3RlCisgKiBDdXJyZW50bHkgb25seSB1cCB0byB0d28gbm9uLXN0YW5kYXJkIG1vZGVzIGNhbiBiZSBlbmFibGVkLgorICoKKyAqIFxyZW1hcmsKKyAqIFRoZXJlIGlzIGEgZmxhdyBpbiB0aGUgY29kZWMgbWFuYWdlciBhcyBjdXJyZW50bHkgaXQgY291bGQgbm90CisgKiBkaWZmZXJlbnRpYXRlIEcuNzIyLjEgY29kZWNzIGJ5IGJpdHJhdGVzLCBoZW5jZSBpbnZva2luZyAKKyAqICNwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSgpIG1heSBvbmx5IGFmZmVjdCBhIEcuNzIyLjEgY29kZWMKKyAqIHdpdGggdGhlIGhpZ2hlc3QgcHJpb3JpdHkgKG9yIGZpcnN0IGluZGV4IGZvdW5kIGluIGNvZGVjIGVudW1lcmF0aW9uIAorICogd2hlbiB0aGV5IGhhdmUgc2FtZSBwcmlvcml0eSkgYW5kIGludm9raW5nCisgKiAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2NvZGVjX3ByaW9yaXR5KCkgd2lsbCBzZXQgcHJpb3JpdHkgb2YgYWxsIEcuNzIyLjEKKyAqIGNvZGVjcyB3aXRoIHNhbXBsaW5nIHJhdGUgYXMgc3BlY2lmaWVkLgogICovCiAKIFBKX0JFR0lOX0RFQ0wKIAogLyoqCi0gKiBJbml0aWFsaXplIGFuZCByZWdpc3RlciBHNzIyLjEgY29kZWMgZmFjdG9yeSB0byBwam1lZGlhIGVuZHBvaW50LgorICogSW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MjIuMSBjb2RlYyBmYWN0b3J5IHRvIHBqbWVkaWEgZW5kcG9pbnQuCiAgKgogICogQHBhcmFtIGVuZHB0CSAgICBUaGUgcGptZWRpYSBlbmRwb2ludC4KICAqCkBAIC03MiwxMyArMTAyLDEzIEBACiAKIAogLyoqCi0gKiBFbmFibGUgYW5kIGRpc2FibGUgRzcyMi4xIG1vZGUuIEJ5IGRlZmF1bHQsIHRoZSBzdGFuZGFyZCBtb2RlcyBhcmUgCisgKiBFbmFibGUgYW5kIGRpc2FibGUgRy43MjIuMSBtb2RlLiBCeSBkZWZhdWx0LCB0aGUgc3RhbmRhcmQgbW9kZXMgYXJlIAogICogZW5hYmxlZCB1cG9uIGluaXRpYWxpemF0aW9uLCBpLmUuOgogICogLSBzYW1wbGluZyByYXRlIDE2a0h6LCBiaXRyYXRlIDI0a2JwcyBhbmQgMzJrYnBzLgogICogLSBzYW1wbGluZyByYXRlIDMya0h6LCBiaXRyYXRlIDI0a2JwcywgMzJrYnBzLCBhbmQgNDhrYnBzLgogICogVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSB1c2VkIGZvciBlbmFibGluZyBub24tc3RhbmRhcmQgbW9kZXMuCi0gKiBOb3RlIHRoYXQgY3VycmVudGx5IGl0IGlzIG9ubHkgdXAgdG8gdHdvIG5vbi1zdGFuZGFyZCBtb2RlcyBjYW4gYmUgCi0gKiBlbmFibGVkIGF0IG9uZSB0aW1lLgorICogTm90ZSB0aGF0IGN1cnJlbnRseSBvbmx5IHVwIHRvIHR3byBub24tc3RhbmRhcmQgbW9kZXMgY2FuIGJlIGVuYWJsZWQKKyAqIGF0IG9uZSB0aW1lLgogICoKICAqIEBwYXJhbSBzYW1wbGVfcmF0ZQlQQ00gc2FtcGxpbmcgcmF0ZSwgaW4gSHosIHZhbGlkIHZhbHVlcyBhcmUgb25seSAKICAqCQkJMTYwMDAgYW5kIDMyMDAwLgpAQCAtMTEwLDcgKzE0MCw3IEBACiAKIAogLyoqCi0gKiBVbnJlZ2lzdGVyIEc3MjIuMSBjb2RlY3MgZmFjdG9yeSBmcm9tIHBqbWVkaWEgZW5kcG9pbnQuCisgKiBVbnJlZ2lzdGVyIEcuNzIyLjEgY29kZWNzIGZhY3RvcnkgZnJvbSBwam1lZGlhIGVuZHBvaW50LgogICoKICAqIEByZXR1cm4JICAgIFBKX1NVQ0NFU1Mgb24gc3VjY2Vzcy4KICAqLwpkaWZmIC0tZ2l0IGEvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvZ3NtLmggYi9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nc20uaAppbmRleCAxODUxYWEzLi41MzdjNWZkIDEwMDY0NAotLS0gYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nc20uaAorKysgYi9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9nc20uaApAQCAtMzMsOSArMzMsMjQgQEAKICAqIEBicmllZiBJbXBsZW1lbnRhdGlvbiBvZiBHU00gRlIgYmFzZWQgb24gR1NNIDA2LjEwIGxpYnJhcnkKICAqIEB7CiAgKgotICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIEdTTSBjb2RlYworICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgR1NNIGNvZGVjCiAgKiBmYWN0b3J5IHRvIHRoZSBjb2RlYyBtYW5hZ2VyLiBBZnRlciB0aGUgY29kZWMgZmFjdG9yeSBoYXMgYmVlbiByZWdpc3RlcmVkLAogICogYXBwbGljYXRpb24gY2FuIHVzZSBAcmVmIFBKTUVESUFfQ09ERUMgQVBJIHRvIG1hbmlwdWxhdGUgdGhlIGNvZGVjLgorICoKKyAqIFRoZSBHU00gY29kZWMgc3VwcG9ydHMgMTYtYml0IFBDTSB3aXRoIHNhbXBsaW5nIHJhdGUgb2YgODAwMEh6IHJlc3VsdGluZworICogaW4gMTMuMmticHMgYml0cmF0ZS4KKyAqCisgKiBcc2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogXHN1YnNlY3Rpb24gZ2VuZXJhbF9zZXR0aW5nIEdlbmVyYWwgU2V0dGluZ3MKKyAqCisgKiBHZW5lcmFsIGNvZGVjIHNldHRpbmdzIGZvciB0aGlzIGNvZGVjIHN1Y2ggYXMgVkFEIGFuZCBQTEMgY2FuIGJlIAorICogbWFuaXB1bGF0ZWQgdGhyb3VnaCB0aGUgPHR0PnNldHRpbmc8L3R0PiBmaWVsZCBpbiAjcGptZWRpYV9jb2RlY19wYXJhbS4gCisgKiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mICNwam1lZGlhX2NvZGVjX3BhcmFtIGZvciBtb3JlIGluZm8uCisgKgorICogXHN1YnNlY3Rpb24gc3BlY2lmaWNfc2V0dGluZyBDb2RlYyBTcGVjaWZpYyBTZXR0aW5ncworICoKKyAqIEN1cnJlbnRseSBub25lLgogICovCiAKIFBKX0JFR0lOX0RFQ0wKZGlmZiAtLWdpdCBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2lsYmMuaCBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2lsYmMuaAppbmRleCA5ZTRiMmQ4Li40OTQ4OTlmIDEwMDY0NAotLS0gYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9pbGJjLmgKKysrIGIvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvaWxiYy5oCkBAIC0zMyw5ICszMyw1MiBAQAogICogQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIGlMQkMgQ29kZWMKICAqIEB7CiAgKgotICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIGlMQkMgY29kZWMKKyAqIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIGlMQkMgY29kZWMKICAqIGZhY3RvcnkgdG8gdGhlIGNvZGVjIG1hbmFnZXIuIEFmdGVyIHRoZSBjb2RlYyBmYWN0b3J5IGhhcyBiZWVuIHJlZ2lzdGVyZWQsCiAgKiBhcHBsaWNhdGlvbiBjYW4gdXNlIEByZWYgUEpNRURJQV9DT0RFQyBBUEkgdG8gbWFuaXB1bGF0ZSB0aGUgY29kZWMuCisgKgorICogVGhlIGlMQkMgY29kZWMgaXMgZGV2ZWxvcGVkIGJ5IEdsb2JhbCBJUCBTb2x1dGlvbnMgKEdJUFMpLCBmb3JtZXJseSAKKyAqIEdsb2JhbCBJUCBTb3VuZC4gVGhlIGlMQkMgb2ZmZXJzIGxvdyBiaXRyYXRlIGFuZCBncmFjZWZ1bCBhdWRpbyBxdWFsaXR5IAorICogZGVncmFkYXRpb24gb24gZnJhbWUgbG9zc2VzLgorICoKKyAqIFRoZSBpTEJDIGNvZGVjIHN1cHBvcnRzIDE2LWJpdCBQQ00gYXVkaW8gc2lnbmFsIHdpdGggc2FtcGxpbmcgcmF0ZSBvZiAKKyAqIDgwMDBIeiBvcGVyYXRpbmcgYXQgdHdvIG1vZGVzOiAyMG1zIGFuZCAzMG1zIGZyYW1lIGxlbmd0aCBtb2RlcywgcmVzdWx0aW5nCisgKiBpbiBiaXRyYXRlcyBvZiAxNS4ya2JwcyBmb3IgMjBtcyBtb2RlIGFuZCAxMy4zM2ticHMgZm9yIDMwbXMgbW9kZS4KKyAqCisgKgorICogXHNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIFxzdWJzZWN0aW9uIGdlbmVyYWxfc2V0dGluZyBHZW5lcmFsIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzZWN0aW9uIHNwZWNpZmljX3NldHRpbmcgQ29kZWMgU3BlY2lmaWMgU2V0dGluZ3MKKyAqCisgKiBUaGUgZm9sbG93aW5nIHNldHRpbmdzIGFyZSBhcHBsaWNhYmxlIGZvciB0aGlzIGNvZGVjLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIG1vZGUgTW9kZQorICoKKyAqIFRoZSBkZWZhdWx0IG1vZGUgc2hvdWxkIGJlIHNldCB1cG9uIGluaXRpYWxpemF0aW9uLCBzZWUKKyAqICNwam1lZGlhX2NvZGVjX2lsYmNfaW5pdCgpLiBBZnRlciB0aGUgY29kZWMgaXMgaW5pdGlhbGl6ZWQsIHRoZSBkZWZhdWx0CisgKiBtb2RlIGNhbiBiZSBtb2RpZmllZCB1c2luZyAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKS4KKyAqCisgKiBJbiAjcGptZWRpYV9jb2RlY19wYXJhbSwgaUxCQyBtb2RlIGNhbiBiZSBzZXQgYnkgc3BlY2lmeWluZyBTRFAKKyAqIGZvcm1hdCBwYXJhbWV0ZXIgIm1vZGUiIGluIHRoZSBTRFAgImE9Zm10cCIgYXR0cmlidXRlIGZvciBkZWNvZGluZworICogZGlyZWN0aW9uLiBWYWxpZCB2YWx1ZXMgYXJlICIyMCIgYW5kICIzMCIgKGZvciAyMG1zIGFuZCAzMG1zIG1vZGUgCisgKiByZXNwZWN0aXZlbHkpLgorICoKKyAqIEhlcmUgaXMgYW4gZXhhbXBsZSB0byBzZXQgdXAgI3BqbWVkaWFfY29kZWNfcGFyYW0gdG8gdXNlIG1vZGUgMjBtczoKKyAqICBcY29kZQorICAgIHBqbWVkaWFfY29kZWNfcGFyYW0gcGFyYW07CisgICAgLi4uCisgICAgLy8gc2V0dGluZyBpTEJDIG1vZGUgaW4gU0RQCisgICAgcGFyYW0uc2V0dGluZy5kZWNfZm10cC5jbnQgPSAxOworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0ubmFtZSA9IHBqX3N0cigibW9kZSIpOworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0udmFsICA9IHBqX3N0cigiMjAiKTsKKyAgICAuLi4KKyBcZW5kY29kZQogICovCiAKIFBKX0JFR0lOX0RFQ0wKZGlmZiAtLWdpdCBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2lwcF9jb2RlY3MuaCBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2lwcF9jb2RlY3MuaAppbmRleCAxNjQ1OWIzLi45OGViOGE4IDEwMDY0NAotLS0gYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9pcHBfY29kZWNzLmgKKysrIGIvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvaXBwX2NvZGVjcy5oCkBAIC0zMywxMSArMzMsMjYwIEBACiAgKiBAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgSVBQIGNvZGVjcwogICogQHsKICAqCi0gKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgcmVnaXN0ZXIgSVBQIGNvZGVjCisgKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGZ1bmN0aW9ucyB0byBpbml0aWFsaXplIGFuZCByZWdpc3RlciBJUFAgY29kZWMKICAqIGZhY3RvcnkgdG8gdGhlIGNvZGVjIG1hbmFnZXIuIEFmdGVyIHRoZSBjb2RlYyBmYWN0b3J5IGhhcyBiZWVuIHJlZ2lzdGVyZWQsCiAgKiBhcHBsaWNhdGlvbiBjYW4gdXNlIEByZWYgUEpNRURJQV9DT0RFQyBBUEkgdG8gbWFuaXB1bGF0ZSB0aGUgY29kZWMuCi0gKiBUaGlzIGNvZGVjIGZhY3RvcnkgY29udGFpbnMgdmFyaW91cyBjb2RlY3MsIGUuZzogRy43MjksIEcuNzIzLjEsIEcuNzI2LCAKLSAqIEcuNzI4LCBHLjcyMi4xLCBBTVIuCisgKgorICogVGhpcyBjb2RlYyBmYWN0b3J5IGNvbnRhaW5zIHZhcmlvdXMgY29kZWNzLCBpLmU6IEcuNzI5LCBHLjcyMy4xLCBHLjcyNiwgCisgKiBHLjcyOCwgRy43MjIuMSwgQU1SLCBhbmQgQU1SLVdCLgorICoKKyAqCisgKiBcc2VjdGlvbiBwam1lZGlhX2NvZGVjX2lwcF9nNzI5IElQUCBHLjcyOQorICoKKyAqIElQUCBHLjcyOSBpcyBjb21wbGlhbnQgd2l0aCBJVFUtVCBHLjcyOSBhbmQgQW5uZXhlcyBBLCBCLCBDLCBDKywgRCwgCisgKiBFLCBJIHNwZWNpZmljYXRpb25zLiBIb3dldmVyLCBjdXJyZW50bHkgdGhlIHBqbWVkaWEgaW1wbGVtZW50YXRpb24gaXMKKyAqIHVzaW5nIEFubmV4ZXMgQSBhbmQgQiBvbmx5LgorICoKKyAqIElQUCBHLjcyOSBzdXBwb3J0cyAxNi1iaXQgUENNIGF1ZGlvIHNpZ25hbCB3aXRoIHNhbXBsaW5nIHJhdGUgODAwMEh6LCAKKyAqIGZyYW1lIGxlbmd0aCAxMG1zLCBhbmQgcmVzdWx0aW5nIGluIGJpdHJhdGUgODAwMGJwcyAoYW5uZXhlcyBEIGFuZCBFCisgKiBpbnRyb2R1Y2UgYml0cmF0ZXMgNjQwMGJwcyBhbmQgMTE4MDBicHMpLgorICoKKyAqIFxzdWJzZWN0aW9uIGNvZGVjX3NldHRpbmcgQ29kZWMgU2V0dGluZ3MKKyAqCisgKiBHZW5lcmFsIGNvZGVjIHNldHRpbmdzIGZvciB0aGlzIGNvZGVjIHN1Y2ggYXMgVkFEIGFuZCBQTEMgY2FuIGJlIAorICogbWFuaXB1bGF0ZWQgdGhyb3VnaCB0aGUgPHR0PnNldHRpbmc8L3R0PiBmaWVsZCBpbiAjcGptZWRpYV9jb2RlY19wYXJhbS4gCisgKiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mICNwam1lZGlhX2NvZGVjX3BhcmFtIGZvciBtb3JlIGluZm8uCisgKgorICogTm90ZSB0aGF0IEcuNzI5IFZBRCBzdGF0dXMgc2hvdWxkIGJlIHNpZ25hbGxlZCBpbiBTRFAsIHNlZSBtb3JlCisgKiBkZXNjcmlwdGlvbiBiZWxvdy4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBhbm5leGIgQW5uZXggQgorICoKKyAqIFRoZSBjYXBhYmlsaXR5IG9mIFZBRC9EVFggaXMgc3BlY2lmaWVkIGluIEFubmV4IEIuCisgKgorICogQnkgZGVmYXVsdCwgQW5uZXggQiBpcyBlbmFibGVkLiBUaGlzIGRlZmF1bHQgc2V0dGluZyBvZiBBbm5leCBCIGNhbiAKKyAqIGJlIG1vZGlmaWVkIHVzaW5nICNwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSgpLgorICoKKyAqIEluICNwam1lZGlhX2NvZGVjX3BhcmFtLCBBbm5leCBCIGlzIGNvbmZpZ3VyZWQgdmlhIFZBRCBzZXR0aW5nIGFuZAorICogZm9ybWF0IHBhcmFtZXRlciAiYW5uZXhiIiBpbiB0aGUgU0RQICJhPWZtdHAiIGF0dHJpYnV0ZSBpbgorICogZGVjb2RpbmcgZm10cCBmaWVsZC4gVmFsaWQgdmFsdWVzIGFyZSAieWVzIiBhbmQgIm5vIiwKKyAqIHRoZSBpbXBsZW1lbnRhdGlvbiBkZWZhdWx0IGlzICJ5ZXMiLiBXaGVuIHRoaXMgcGFyYW1ldGVyIGlzIG9taXR0ZWQKKyAqIGluIHRoZSBTRFAsIHRoZSB2YWx1ZSB3aWxsIGJlICJ5ZXMiIChSRkMgNDg1NiBTZWN0aW9uIDIuMS45KS4KKyAqCisgKiBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgbW9kaWZ5aW5nIGRlZmF1bHQgc2V0dGluZyBvZiBBbm5leCBCIHRvCisgKiBiZSBkaXNhYmxlZCB1c2luZyAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKToKKyBcY29kZQorICAgIHBqbWVkaWFfY29kZWNfcGFyYW0gcGFyYW07CisKKyAgICBwam1lZGlhX2NvZGVjX21ncl9nZXRfZGVmYXVsdF9wYXJhbSguLiwgJnBhcmFtKTsKKyAgICAuLi4KKyAgICAvLyBTZXQgVkFECisgICAgcGFyYW0uc2V0dGluZy52YWQgPSAwOworICAgIC8vIFNldCBTRFAgZm9ybWF0IHBhcmFtZXRlcgorICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAuY250ID0gMTsKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLnBhcmFtWzBdLm5hbWUgPSBwal9zdHIoImFubmV4YiIpOworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0udmFsICA9IHBqX3N0cigibm8iKTsKKyAgICAuLi4KKyAgICBwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSguLiwgJnBhcmFtKTsKKyBcZW5kY29kZQorICoKKyAqIFxub3RlCisgKiBUaGUgZGlmZmVyZW5jZSBvZiBBbm5leCBCIHN0YXR1cyBpbiBTRFAgb2ZmZXIvYW5zd2VyIG1heSBiZSBjb25zaWRlcmVkIGFzIAorICogaW5jb21wYXRpYmxlIGNvZGVjIGluIFNEUCBuZWdvdGlhdGlvbi4KKyAqCisgKiAKKyAqIFxzZWN0aW9uIHBqbWVkaWFfY29kZWNfaXBwX2c3MjMxIElQUCBHLjcyMy4xCisgKgorICogSVBQIEcuNzIzLjEgc3BlZWNoIGNvZGVjIGlzIGNvbXBsaWFudCB3aXRoIElUVS1UIEcuNzIzLjEgYW5kIEFubmV4IEEKKyAqIHNwZWNpZmljYXRpb25zLgorICoKKyAqIElQUCBHLjcyMy4xIHN1cHBvcnRzIDE2LWJpdCBQQ00gYXVkaW8gc2lnbmFsIHdpdGggc2FtcGxpbmcgcmF0ZSA4MDAwSHosIAorICogZnJhbWUgbGVuZ3RoIDMwbXMsIGFuZCByZXN1bHRpbmcgaW4gYml0cmF0ZXMgNTMwMGJwcyBhbmQgNjMwMGJwcy4KKyAqCisgKiBCeSBkZWZhdWx0LCBwam1lZGlhIGltcGxlbWVudGF0aW9uIHVzZXMgZW5jb2RpbmcgYml0cmF0ZSBvZiA2MzAwYnBzLgorICogVGhlIGJpdHJhdGUgaXMgc2lnbmFsbGVkIGluLWJhbmQgaW4gRy43MjMuMSBmcmFtZXMgYW5kIGludGVyb3BlcmFibGUuCisgKgorICogXHN1YnNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIEdlbmVyYWwgY29kZWMgc2V0dGluZ3MgZm9yIHRoaXMgY29kZWMgc3VjaCBhcyBWQUQgYW5kIFBMQyBjYW4gYmUgCisgKiBtYW5pcHVsYXRlZCB0aHJvdWdoIHRoZSA8dHQ+c2V0dGluZzwvdHQ+IGZpZWxkIGluICNwam1lZGlhX2NvZGVjX3BhcmFtLiAKKyAqIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgI3BqbWVkaWFfY29kZWNfcGFyYW0gZm9yIG1vcmUgaW5mby4KKyAqCisgKgorICogXHNlY3Rpb24gcGptZWRpYV9jb2RlY19pcHBfZzcyNiBJUFAgRy43MjYKKyAqCisgKiBJUFAgRy43MjYgaXMgY29tcGxpYW50IHdpdGggSVRVLVQgRy43MjYgYW5kIEcuNzI2IEFubmV4IEEgc3BlY2lmaWNhdGlvbnMuCisgKgorICogSVBQIEcuNzI2IHN1cHBvcnRzIDE2LWJpdCBQQ00gYXVkaW8gc2lnbmFsIHdpdGggc2FtcGxpbmcgcmF0ZSA4MDAwSHosCisgKiAxMG1zIGZyYW1lIGxlbmd0aCBhbmQgcHJvZHVjaW5nIDE2a2JwcywgMjRrYnBzLCAzMmticHMsIDQ4a2JwcyBiaXRyYXRlcy4KKyAqIFRoZSBiaXRyYXRlIGlzIHNwZWNpZmllZCBleHBsaWNpdGx5IGluIGl0cyBlbmNvZGluZyBuYW1lLCBpLmU6IEc3MjYtMTYsCisgKiBHNzI2LTI0LCBHNzI2LTMyLCBHNzI2LTQ4LgorICoKKyAqIFxzdWJzZWN0aW9uIGNvZGVjX3NldHRpbmcgQ29kZWMgU2V0dGluZ3MKKyAqCisgKiBHZW5lcmFsIGNvZGVjIHNldHRpbmdzIGZvciB0aGlzIGNvZGVjIHN1Y2ggYXMgVkFEIGFuZCBQTEMgY2FuIGJlIAorICogbWFuaXB1bGF0ZWQgdGhyb3VnaCB0aGUgPHR0PnNldHRpbmc8L3R0PiBmaWVsZCBpbiAjcGptZWRpYV9jb2RlY19wYXJhbS4gCisgKiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mICNwam1lZGlhX2NvZGVjX3BhcmFtIGZvciBtb3JlIGluZm8uCisgKgorICoKKyAqIFxzZWN0aW9uIHBqbWVkaWFfY29kZWNfaXBwX2c3MjggSVBQIEcuNzI4CisgKgorICogSVBQIEcuNzI4IGlzIGNvbXBsaWFudCB3aXRoIElUVS1UIEcuNzI4IHdpdGggSSwgRywgSCBBcHBlbmRpeGVzIAorICogc3BlY2lmaWNhdGlvbnMgZm9yIExvdy1EZWxheSBDRUxQIGNvZGVyLgorICogCisgKiBJUFAgRy43Mjggc3VwcG9ydHMgMTYtYml0IFBDTSBhdWRpbyBzaWduYWwgd2l0aCBzYW1wbGluZyByYXRlIDgwMDBIeiwKKyAqIDIwbXMgZnJhbWUgbGVuZ3RoIGFuZCBwcm9kdWNpbmcgOS42a2JwcywgMTIuOGticHMsIGFuZCAxNmticHMgYml0cmF0ZXMuCisgKgorICogVGhlIHBqbWVkaWEgaW1wbGVtZW50YXRpb24gY3VycmVudGx5IHVzZXMgMTZrYnBzIGJpdHJhdGUgb25seS4KKyAqCisgKiBcc3Vic2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqCisgKiBcc2VjdGlvbiBwam1lZGlhX2NvZGVjX2lwcF9nNzIyMSBJUFAgRy43MjIuMQorICoKKyAqIFRoZSBwam1lZGlhIGltcGxlbWVudGF0aW9uIG9mIElQUCBHLjcyMi4xIHN1cHBvcnRzIDE2LWJpdCBQQ00gYXVkaW8gCisgKiBzaWduYWwgd2l0aCBzYW1wbGluZyByYXRlIDE2MDAwSHosIDIwbXMgZnJhbWUgbGVuZ3RoIGFuZCBwcm9kdWNpbmcgCisgKiAxNmticHMsIDI0a2JwcywgYW5kIDMya2JwcyBiaXRyYXRlcy4KKyAqCisgKiBcc3Vic2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIGJpdHJhdGUgQml0cmF0ZQorICoKKyAqIFRoZSBjb2RlYyBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBvbmx5IHN0YW5kYXJkIGJpdHJhdGVzLCBpLmU6CisgKiAyNGticHMgYW5kIDMya2Jwcy4gQm90aCBhcmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICoKKyAqIFxyZW1hcmsKKyAqIFRoZXJlIGlzIGEgZmxhdyBpbiB0aGUgY29kZWMgbWFuYWdlciBhcyBjdXJyZW50bHkgaXQgY291bGQgbm90IAorICogZGlmZmVyZW50aWF0ZSBHLjcyMi4xIGNvZGVjcyBieSBiaXRyYXRlcywgaGVuY2UgaW52b2tpbmcgCisgKiAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKSBtYXkgb25seSBhZmZlY3QgYSBHLjcyMi4xIGNvZGVjCisgKiB3aXRoIHRoZSBoaWdoZXN0IHByaW9yaXR5IChvciBmaXJzdCBpbmRleCBmb3VuZCBpbiBjb2RlYyBlbnVtZXJhdGlvbiAKKyAqIHdoZW4gdGhleSBoYXZlIHNhbWUgcHJpb3JpdHkpIGFuZCBpbnZva2luZworICogI3BqbWVkaWFfY29kZWNfbWdyX3NldF9jb2RlY19wcmlvcml0eSgpIHdpbGwgc2V0IHByaW9yaXR5IG9mIGFsbCBHLjcyMi4xCisgKiBjb2RlY3Mgd2l0aCBzYW1wbGluZyByYXRlIGFzIHNwZWNpZmllZC4KKyAqCisgKgorICogXHNlY3Rpb24gcGptZWRpYV9jb2RlY19pcHBfYW1yIElQUCBBTVIKKyAqCisgKiBUaGUgSVBQIEFNUiBpcyBjb21wbGlhbnQgd2l0aCBHU00wNi45MC05NCBzcGVjaWZpY2F0aW9ucyBmb3IgR1NNIEFkYXB0aXZlCisgKiBNdWx0aS1SYXRlIGNvZGVjLgorICoKKyAqIElQUCBBTVIgc3VwcG9ydHMgMTYtYml0IFBDTSBhdWRpbyBzaWduYWwgd2l0aCBzYW1wbGluZyByYXRlIDgwMDBIeiwKKyAqIDIwbXMgZnJhbWUgbGVuZ3RoIGFuZCBwcm9kdWNpbmcgdmFyaW91cyBiaXRyYXRlcyB0aGF0IHJhbmdlcyBmcm9tIDQuNzVrYnBzCisgKiB0byAxMi4ya2Jwcy4KKyAqCisgKiBcc3Vic2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIGJpdHJhdGUgQml0cmF0ZQorICoKKyAqIEJ5IGRlZmF1bHQsIGVuY29kaW5nIGJpdHJhdGUgaXMgNzQwMGJwcy4gVGhpcyBkZWZhdWx0IHNldHRpbmcgY2FuIGJlIAorICogbW9kaWZpZWQgdXNpbmcgI3BqbWVkaWFfY29kZWNfbWdyX3NldF9kZWZhdWx0X3BhcmFtKCkgYnkgc3BlY2lmeWluZyAKKyAqIHByZWZlcmVkIEFNUiBiaXRyYXRlIGluIGZpZWxkIDx0dD5pbmZvOjphdmdfYnBzPC90dD4gb2YgCisgKiAjcGptZWRpYV9jb2RlY19wYXJhbS4gVmFsaWQgYml0cmF0ZXMgY291bGQgYmUgc2VlbiBpbiAKKyAqICNwam1lZGlhX2NvZGVjX2Ftcm5iX2JpdHJhdGVzLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIHBheWxvYWRfZm9ybWF0IFBheWxvYWQgRm9ybWF0CisgKgorICogVGhlcmUgYXJlIHR3byBBTVIgcGF5bG9hZCBmb3JtYXQgdHlwZXMsIGJhbmR3aWR0aC1lZmZpY2llbnQgYW5kCisgKiBvY3RldC1hbGlnbmVkLiBEZWZhdWx0IHNldHRpbmcgaXMgdXNpbmcgb2N0ZXQtYWxpZ25lZC4gVGhpcyBkZWZhdWx0IHBheWxvYWQKKyAqIGZvcm1hdCBjYW4gYmUgbW9kaWZpZWQgdXNpbmcgI3BqbWVkaWFfY29kZWNfbWdyX3NldF9kZWZhdWx0X3BhcmFtKCkuCisgKgorICogSW4gI3BqbWVkaWFfY29kZWNfcGFyYW0sIHBheWxvYWQgZm9ybWF0IGNhbiBiZSBzZXQgYnkgc3BlY2lmeWluZyBTRFAgCisgKiBmb3JtYXQgcGFyYW1ldGVycyAib2N0ZXQtYWxpZ24iIGluIHRoZSBTRFAgImE9Zm10cCIgYXR0cmlidXRlIGZvciAKKyAqIGRlY29kaW5nIGRpcmVjdGlvbi4gVmFsaWQgdmFsdWVzIGFyZSAiMCIgKGZvciBiYW5kd2lkdGggZWZmaWNpZW50IG1vZGUpCisgKiBhbmQgIjEiIChmb3Igb2N0ZXQtYWxpZ25lZCBtb2RlKS4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBtb2RlX3NldCBNb2RlLVNldAorICogCisgKiBNb2RlLXNldCBpcyB1c2VkIGZvciByZXN0cmljdGluZyBBTVIgbW9kZXMgaW4gZGVjb2RpbmcgZGlyZWN0aW9uLgorICoKKyAqIEJ5IGRlZmF1bHQsIG5vIG1vZGUtc2V0IHJlc3RyaWN0aW9uIGFwcGxpZWQuIFRoaXMgZGVmYXVsdCBzZXR0aW5nIGNhbiBiZSAKKyAqIGJlIG1vZGlmaWVkIHVzaW5nICNwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSgpLgorICoKKyAqIEluICNwam1lZGlhX2NvZGVjX3BhcmFtLCBtb2RlLXNldCBjb3VsZCBiZSBzcGVjaWZpZWQgdmlhIGZvcm1hdCBwYXJhbWV0ZXJzCisgKiAibW9kZS1zZXQiIGluIHRoZSBTRFAgImE9Zm10cCIgYXR0cmlidXRlIGZvciBkZWNvZGluZyBkaXJlY3Rpb24uIFZhbGlkIAorICogdmFsdWUgaXMgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBtb2RlcyBmcm9tIHRoZSBzZXQgMCAtIDcsIGUuZzogCisgKiAiNCw1LDYsNyIuIFdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgb21pdHRlZCwgbm8gbW9kZS1zZXQgcmVzdHJpY3Rpb25zIGFwcGxpZWQuCisgKgorICogSGVyZSBpcyBhbiBleGFtcGxlIG9mIG1vZGlmeWluZyBBTVIgZGVmYXVsdCBjb2RlYyBwYXJhbToKKyBcY29kZQorICAgIHBqbWVkaWFfY29kZWNfcGFyYW0gcGFyYW07CisKKyAgICBwam1lZGlhX2NvZGVjX21ncl9nZXRfZGVmYXVsdF9wYXJhbSguLiwgJnBhcmFtKTsKKyAgICAuLi4KKyAgICAvLyBzZXQgZGVmYXVsdCBlbmNvZGluZyBiaXRyYXRlIHRvIHRoZSBoaWdoZXN0IDEyLjJrYnBzCisgICAgcGFyYW0uaW5mby5hdmdfYnBzID0gMTIyMDA7CisKKyAgICAvLyByZXN0cmljdCBkZWNvZGluZyBiaXRyYXRlIHRvIDEwLjJrYnBzIGFuZCAxMi4ya2JwcyBvbmx5CisgICAgcGFyYW0uc2V0dGluZy5kZWNfZm10cC5wYXJhbVswXS5uYW1lID0gcGpfc3RyKCJtb2RlLXNldCIpOworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0udmFsICA9IHBqX3N0cigiNiw3Iik7CisKKyAgICAvLyBhbHNvIHNldCB0byB1c2UgYmFuZHdpZHRoLWVmZmljaWVudCBwYXlsb2FkIGZvcm1hdAorICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMV0ubmFtZSA9IHBqX3N0cigib2N0ZXQtYWxpZ24iKTsKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLnBhcmFtWzFdLnZhbCAgPSBwal9zdHIoIjAiKTsKKworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAuY250ID0gMjsKKyAgICAuLi4KKyAgICBwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSguLiwgJnBhcmFtKTsKKyBcZW5kY29kZQorICogCisgKgorICogXHNlY3Rpb24gcGptZWRpYV9jb2RlY19pcHBfYW1yd2IgSVBQIEFNUi1XQgorICoKKyAqIFRoZSBJUFAgQU1SLVdCIGlzIGNvbXBsaWFudCB3aXRoIDNHUFAgVFMgMjYuMTkwLTE5MiwgMTk0LCAyMDEgCisgKiBzcGVjaWZpY2F0aW9ucyBmb3IgQWRhcHRpdmUgTXVsdGktUmF0ZSBXaWRlQmFuZCBjb2RlYy4KKyAqCisgKiBJUFAgQU1SLVdCIHN1cHBvcnRzIDE2LWJpdCBQQ00gYXVkaW8gc2lnbmFsIHdpdGggc2FtcGxpbmcgcmF0ZSAxNjAwMEh6LAorICogMjBtcyBmcmFtZSBsZW5ndGggYW5kIHByb2R1Y2luZyB2YXJpb3VzIGJpdHJhdGVzLiBWYWxpZCBiaXRyYXRlcyBjb3VsZCBiZQorICogc2VlbiBpbiAjcGptZWRpYV9jb2RlY19hbXJ3Yl9iaXRyYXRlcy4gVGhlIHBqbWVkaWEgaW1wbGVtZW50YXRpb24gZGVmYXVsdAorICogYml0cmF0ZSBpcyAxNTg1MGJwcy4KKyAqCisgKiBcc3Vic2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIGJpdHJhdGUgQml0cmF0ZQorICoKKyAqIEJ5IGRlZmF1bHQsIGVuY29kaW5nIGJpdHJhdGUgaXMgMTU4NTBicHMuIFRoaXMgZGVmYXVsdCBzZXR0aW5nIGNhbiBiZSAKKyAqIG1vZGlmaWVkIHVzaW5nICNwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSgpIGJ5IHNwZWNpZnlpbmcgCisgKiBwcmVmZXJlZCBBTVIgYml0cmF0ZSBpbiBmaWVsZCA8dHQ+aW5mbzo6YXZnX2JwczwvdHQ+IG9mIAorICogI3BqbWVkaWFfY29kZWNfcGFyYW0uCisgKgorICogXHN1YnN1YnNlY3Rpb24gcGF5bG9hZF9mb3JtYXQgUGF5bG9hZCBGb3JtYXQKKyAqCisgKiBUaGVyZSBhcmUgdHdvIEFNUiBwYXlsb2FkIGZvcm1hdCB0eXBlcywgYmFuZHdpZHRoLWVmZmljaWVudCBhbmQKKyAqIG9jdGV0LWFsaWduZWQuIERlZmF1bHQgc2V0dGluZyBpcyB1c2luZyBvY3RldC1hbGlnbmVkLiBUaGlzIGRlZmF1bHQgcGF5bG9hZAorICogZm9ybWF0IGNhbiBiZSBtb2RpZmllZCB1c2luZyAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKS4KKyAqCisgKiBJbiAjcGptZWRpYV9jb2RlY19wYXJhbSwgcGF5bG9hZCBmb3JtYXQgY2FuIGJlIHNldCBieSBzcGVjaWZ5aW5nIFNEUCAKKyAqIGZvcm1hdCBwYXJhbWV0ZXJzICJvY3RldC1hbGlnbiIgaW4gdGhlIFNEUCAiYT1mbXRwIiBhdHRyaWJ1dGUgZm9yIAorICogZGVjb2RpbmcgZGlyZWN0aW9uLiBWYWxpZCB2YWx1ZXMgYXJlICIwIiAoZm9yIGJhbmR3aWR0aCBlZmZpY2llbnQgbW9kZSkKKyAqIGFuZCAiMSIgKGZvciBvY3RldC1hbGlnbmVkIG1vZGUpLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIG1vZGVfc2V0IE1vZGUtU2V0CisgKiAKKyAqIE1vZGUtc2V0IGlzIHVzZWQgZm9yIHJlc3RyaWN0aW5nIEFNUiBtb2RlcyBpbiBkZWNvZGluZyBkaXJlY3Rpb24uCisgKgorICogQnkgZGVmYXVsdCwgbm8gbW9kZS1zZXQgcmVzdHJpY3Rpb24gYXBwbGllZC4gVGhpcyBkZWZhdWx0IHNldHRpbmcgY2FuIGJlIAorICogYmUgbW9kaWZpZWQgdXNpbmcgI3BqbWVkaWFfY29kZWNfbWdyX3NldF9kZWZhdWx0X3BhcmFtKCkuCisgKgorICogSW4gI3BqbWVkaWFfY29kZWNfcGFyYW0sIG1vZGUtc2V0IGNvdWxkIGJlIHNwZWNpZmllZCB2aWEgZm9ybWF0IHBhcmFtZXRlcnMKKyAqICJtb2RlLXNldCIgaW4gdGhlIFNEUCAiYT1mbXRwIiBhdHRyaWJ1dGUgZm9yIGRlY29kaW5nIGRpcmVjdGlvbi4gVmFsaWQgCisgKiB2YWx1ZSBpcyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIG1vZGVzIGZyb20gdGhlIHNldCAwIC0gNywgZS5nOiAKKyAqICI0LDUsNiw3Ii4gV2hlbiB0aGlzIHBhcmFtZXRlciBpcyBvbWl0dGVkLCBubyBtb2RlLXNldCByZXN0cmljdGlvbnMgYXBwbGllZC4KICAqLwogCiBQSl9CRUdJTl9ERUNMCmRpZmYgLS1naXQgYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9sMTYuaCBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2wxNi5oCmluZGV4IDQ0NTAzYzAuLjI5NWY2YmUgMTAwNjQ0Ci0tLSBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2wxNi5oCisrKyBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL2wxNi5oCkBAIC0yNiwxNiArMjYsMjggQEAKIC8qKgogICogQGRlZmdyb3VwIFBKTUVEX0wxNiBMMTYgQ29kZWMgRmFtaWx5CiAgKiBAaW5ncm91cCBQSk1FRElBX0NPREVDX0NPREVDUwotICogQGJyaWVmIFBDTS8xNmJpdC9saW5lYXIgY29kZWNzCisgKiBAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgUENNLzE2Yml0L2xpbmVhciBjb2RlY3MKICAqIEB7CiAgKgotICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIEwxNiBjb2RlYworICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgTDE2IGNvZGVjCiAgKiBmYWN0b3J5IHRvIHRoZSBjb2RlYyBtYW5hZ2VyLiBBZnRlciB0aGUgY29kZWMgZmFjdG9yeSBoYXMgYmVlbiByZWdpc3RlcmVkLAogICogYXBwbGljYXRpb24gY2FuIHVzZSBAcmVmIFBKTUVESUFfQ09ERUMgQVBJIHRvIG1hbmlwdWxhdGUgdGhlIGNvZGVjLgogICoKICAqIE5vdGUgdGhhdCB0aGUgTDE2IGNvZGVjIGZhY3RvcnkgcmVnaXN0ZXJzIHNldmVyYWwgKGFib3V0IGZvdXJ0ZWVuISkgCiAgKiBMMTYgY29kZWMgdHlwZXMgdG8gY29kZWMgbWFuYWdlciAoZGlmZmVyZW50IGNvbWJpbmF0aW9ucyBvZiBjbG9jawogICogcmF0ZSBhbmQgbnVtYmVyIG9mIGNoYW5uZWxzKS4KKyAqCisgKiBcc2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogXHN1YnNlY3Rpb24gZ2VuZXJhbF9zZXR0aW5nIEdlbmVyYWwgU2V0dGluZ3MKKyAqCisgKiBHZW5lcmFsIGNvZGVjIHNldHRpbmdzIGZvciB0aGlzIGNvZGVjIHN1Y2ggYXMgVkFEIGFuZCBQTEMgY2FuIGJlIAorICogbWFuaXB1bGF0ZWQgdGhyb3VnaCB0aGUgPHR0PnNldHRpbmc8L3R0PiBmaWVsZCBpbiAjcGptZWRpYV9jb2RlY19wYXJhbS4gCisgKiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mICNwam1lZGlhX2NvZGVjX3BhcmFtIGZvciBtb3JlIGluZm8uCisgKgorICogXHN1YnNlY3Rpb24gc3BlY2lmaWNfc2V0dGluZyBDb2RlYyBTcGVjaWZpYyBTZXR0aW5ncworICoKKyAqIEN1cnJlbnRseSBub25lLgogICovCiAKIFBKX0JFR0lOX0RFQ0wKZGlmZiAtLWdpdCBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL3Bhc3N0aHJvdWdoLmggYi9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9wYXNzdGhyb3VnaC5oCmluZGV4IDdhNDdhZjEuLjgyOGY1ZDYgMTAwNjQ0Ci0tLSBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL3Bhc3N0aHJvdWdoLmgKKysrIGIvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvcGFzc3Rocm91Z2guaApAQCAtMzMsMTcgKzMzLDE4OCBAQAogICogQGJyaWVmIEltcGxlbWVudGF0aW9uIG9mIHBhc3N0aHJvdWdoIGNvZGVjcwogICogQHsKICAqCi0gKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgcmVnaXN0ZXIgcGFzc3Rocm91Z2ggCisgKiBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGZ1bmN0aW9ucyB0byBpbml0aWFsaXplIGFuZCByZWdpc3RlciBwYXNzdGhyb3VnaCAKICAqIGNvZGVjcyBmYWN0b3J5IHRvIHRoZSBjb2RlYyBtYW5hZ2VyLiBBZnRlciB0aGUgY29kZWMgZmFjdG9yeSBoYXMgYmVlbiAKICAqIHJlZ2lzdGVyZWQsIGFwcGxpY2F0aW9uIGNhbiB1c2UgQHJlZiBQSk1FRElBX0NPREVDIEFQSSB0byBtYW5pcHVsYXRlIAotICogdGhlIGNvZGVjLiBUaGlzIGNvZGVjIGZhY3RvcnkgY29udGFpbnMgdmFyaW91cyBjb2RlY3MsIGUuZzogRy43MjksIGlMQkMsCi0gKiBBTVIsIGFuZCBHLjcxMS4KKyAqIHRoZSBjb2RlYy4KICAqCi0gKiBQYXNzdGhyb3VnaCBjb2RlY3MgYXJlIGNvZGVjcyB3cmFwcGVyIHRoYXQgZG9lcyBub3QgcGVyZm9ybSBlbmNvZGluZyAKLSAqIG9yIGRlY29kaW5nLCBpdCBqdXN0IHBhY2sgYW5kIHBhcnNlIGVuY29kZWQgYXVkaW8gZGF0YSBmcm9tL2ludG8gUlRQIAorICogUGFzc3Rocm91Z2ggY29kZWNzIGFyZSBjb2RlY3Mgd3JhcHBlciB0aGF0IGRvZXMgTk9UIHBlcmZvcm0gZW5jb2RpbmcgCisgKiBvciBkZWNvZGluZywgaXQganVzdCBQQUNLIGFuZCBQQVJTRSBlbmNvZGVkIGF1ZGlvIGRhdGEgZnJvbS9pbnRvIFJUUCAKICAqIHBheWxvYWQuIFRoaXMgd2lsbCBhY2NvbW9kYXRlIHBqbWVkaWEgcG9ydHMgd2hpY2ggd29yayB3aXRoIGVuY29kZWQKICAqIGF1ZGlvIGRhdGEsIGUuZzogZW5jb2RlZCBhdWRpbyBmaWxlcywgc291bmQgZGV2aWNlIHdpdGggY2FwYWJpbGl0eQogICogb2YgcGxheWluZy9yZWNvcmRpbmcgZW5jb2RlZCBhdWRpbyBkYXRhLgorICoKKyAqIFRoaXMgY29kZWMgZmFjdG9yeSBjb250YWlucyB2YXJpb3VzIGNvZGVjcywgaS5lOiBHLjcyOSwgaUxCQywKKyAqIEFNUiwgYW5kIEcuNzExLgorICoKKyAqCisgKiBcc2VjdGlvbiBwam1lZGlhX2NvZGVjX3Bhc3N0aHJvdWdoX2c3MjkgUGFzc3Rocm91Z2ggRy43MjkKKyAqCisgKiBHLjcyOSBzdXBwb3J0cyAxNi1iaXQgUENNIGF1ZGlvIHNpZ25hbCB3aXRoIHNhbXBsaW5nIHJhdGUgODAwMEh6LCAKKyAqIGZyYW1lIGxlbmd0aCAxMG1zLCBhbmQgcmVzdWx0aW5nIGluIGJpdHJhdGUgODAwMGJwcy4KKyAqCisgKiBcc3Vic2VjdGlvbiBjb2RlY19zZXR0aW5nIENvZGVjIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIE5vdGUgdGhhdCBHLjcyOSBWQUQgc3RhdHVzIHNob3VsZCBiZSBzaWduYWxsZWQgaW4gU0RQLCBzZWUgbW9yZQorICogZGVzY3JpcHRpb24gYmVsb3cuCisgKgorICogXHN1YnN1YnNlY3Rpb24gYW5uZXhiIEFubmV4IEIKKyAqCisgKiBUaGUgY2FwYWJpbGl0eSBvZiBWQUQvRFRYIGlzIHNwZWNpZmllZCBpbiBBbm5leCBCLgorICoKKyAqIEJ5IGRlZmF1bHQsIEFubmV4IEIgaXMgZW5hYmxlZC4gVGhpcyBkZWZhdWx0IHNldHRpbmcgb2YgQW5uZXggQiBjYW4gCisgKiBiZSBtb2RpZmllZCB1c2luZyAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKS4KKyAqCisgKiBJbiAjcGptZWRpYV9jb2RlY19wYXJhbSwgQW5uZXggQiBpcyBjb25maWd1cmVkIHZpYSBWQUQgc2V0dGluZyBhbmQKKyAqIGZvcm1hdCBwYXJhbWV0ZXIgImFubmV4YiIgaW4gdGhlIFNEUCAiYT1mbXRwIiBhdHRyaWJ1dGUgaW4KKyAqIGRlY29kaW5nIGZtdHAgZmllbGQuIFZhbGlkIHZhbHVlcyBhcmUgInllcyIgYW5kICJubyIsCisgKiB0aGUgaW1wbGVtZW50YXRpb24gZGVmYXVsdCBpcyAieWVzIi4gV2hlbiB0aGlzIHBhcmFtZXRlciBpcyBvbWl0dGVkCisgKiBpbiB0aGUgU0RQLCB0aGUgdmFsdWUgd2lsbCBiZSAieWVzIiAoUkZDIDQ4NTYgU2VjdGlvbiAyLjEuOSkuCisgKgorICogSGVyZSBpcyBhbiBleGFtcGxlIG9mIG1vZGlmeWluZyBkZWZhdWx0IHNldHRpbmcgb2YgQW5uZXggQiB0bworICogYmUgZGlzYWJsZWQgdXNpbmcgI3BqbWVkaWFfY29kZWNfbWdyX3NldF9kZWZhdWx0X3BhcmFtKCk6CisgXGNvZGUKKyAgICBwam1lZGlhX2NvZGVjX3BhcmFtIHBhcmFtOworCisgICAgcGptZWRpYV9jb2RlY19tZ3JfZ2V0X2RlZmF1bHRfcGFyYW0oLi4sICZwYXJhbSk7CisgICAgLi4uCisgICAgLy8gU2V0IFZBRAorICAgIHBhcmFtLnNldHRpbmcudmFkID0gMDsKKyAgICAvLyBTZXQgU0RQIGZvcm1hdCBwYXJhbWV0ZXIKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLmNudCA9IDE7CisgICAgcGFyYW0uc2V0dGluZy5kZWNfZm10cC5wYXJhbVswXS5uYW1lID0gcGpfc3RyKCJhbm5leGIiKTsKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLnBhcmFtWzBdLnZhbCAgPSBwal9zdHIoIm5vIik7CisgICAgLi4uCisgICAgcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oLi4sICZwYXJhbSk7CisgXGVuZGNvZGUKKyAqCisgKiBcbm90ZQorICogVGhlIGRpZmZlcmVuY2Ugb2YgQW5uZXggQiBzdGF0dXMgaW4gU0RQIG9mZmVyL2Fuc3dlciBtYXkgYmUgY29uc2lkZXJlZCBhcyAKKyAqIGluY29tcGF0aWJsZSBjb2RlYyBpbiBTRFAgbmVnb3RpYXRpb24uCisgKgorICogCisgKiBcc2VjdGlvbiBwam1lZGlhX2NvZGVjX3Bhc3N0aHJvdWdoX2lsYmMgUGFzc3Rocm91Z2ggaUxCQworICoKKyAqIFRoZSBpTEJDIGNvZGVjIGlzIGRldmVsb3BlZCBieSBHbG9iYWwgSVAgU29sdXRpb25zIChHSVBTKSwgZm9ybWVybHkgCisgKiBHbG9iYWwgSVAgU291bmQuIFRoZSBpTEJDIG9mZmVycyBsb3cgYml0cmF0ZSBhbmQgZ3JhY2VmdWwgYXVkaW8gcXVhbGl0eSAKKyAqIGRlZ3JhZGF0aW9uIG9uIGZyYW1lIGxvc3Nlcy4KKyAqCisgKiBUaGUgaUxCQyBjb2RlYyBzdXBwb3J0cyAxNi1iaXQgUENNIGF1ZGlvIHNpZ25hbCB3aXRoIHNhbXBsaW5nIHJhdGUgb2YgCisgKiA4MDAwSHogb3BlcmF0aW5nIGF0IHR3byBtb2RlczogMjBtcyBhbmQgMzBtcyBmcmFtZSBsZW5ndGggbW9kZXMsIHJlc3VsdGluZworICogaW4gYml0cmF0ZXMgb2YgMTUuMmticHMgZm9yIDIwbXMgbW9kZSBhbmQgMTMuMzNrYnBzIGZvciAzMG1zIG1vZGUuCisgKgorICogXHN1YnNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIEdlbmVyYWwgY29kZWMgc2V0dGluZ3MgZm9yIHRoaXMgY29kZWMgc3VjaCBhcyBWQUQgYW5kIFBMQyBjYW4gYmUgCisgKiBtYW5pcHVsYXRlZCB0aHJvdWdoIHRoZSA8dHQ+c2V0dGluZzwvdHQ+IGZpZWxkIGluICNwam1lZGlhX2NvZGVjX3BhcmFtLiAKKyAqIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgI3BqbWVkaWFfY29kZWNfcGFyYW0gZm9yIG1vcmUgaW5mby4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBtb2RlIE1vZGUKKyAqCisgKiBUaGUgZGVmYXVsdCBtb2RlIHNob3VsZCBiZSBzZXQgdXBvbiBpbml0aWFsaXphdGlvbiwgc2VlCisgKiAjcGptZWRpYV9jb2RlY19wYXNzdGhyb3VnaF9pbml0MigpLiBBZnRlciB0aGUgY29kZWMgaXMgaW5pdGlhbGl6ZWQsIHRoZQorICogZGVmYXVsdCBtb2RlIGNhbiBiZSBtb2RpZmllZCB1c2luZyAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKS4KKyAqCisgKiBJbiAjcGptZWRpYV9jb2RlY19wYXJhbSwgaUxCQyBtb2RlIGNhbiBiZSBzZXQgYnkgc3BlY2lmeWluZyBTRFAKKyAqIGZvcm1hdCBwYXJhbWV0ZXIgIm1vZGUiIGluIHRoZSBTRFAgImE9Zm10cCIgYXR0cmlidXRlIGZvciBkZWNvZGluZworICogZGlyZWN0aW9uLiBWYWxpZCB2YWx1ZXMgYXJlICIyMCIgYW5kICIzMCIgKGZvciAyMG1zIGFuZCAzMG1zIG1vZGUgCisgKiByZXNwZWN0aXZlbHkpLgorICoKKyAqIEhlcmUgaXMgYW4gZXhhbXBsZSB0byBzZXQgdXAgI3BqbWVkaWFfY29kZWNfcGFyYW0gdG8gdXNlIG1vZGUgMjBtczoKKyAqICBcY29kZQorICAgIHBqbWVkaWFfY29kZWNfcGFyYW0gcGFyYW07CisgICAgLi4uCisgICAgLy8gc2V0dGluZyBpTEJDIG1vZGUgaW4gU0RQCisgICAgcGFyYW0uc2V0dGluZy5kZWNfZm10cC5jbnQgPSAxOworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0ubmFtZSA9IHBqX3N0cigibW9kZSIpOworICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0udmFsICA9IHBqX3N0cigiMjAiKTsKKyAgICAuLi4KKyBcZW5kY29kZQorICoKKyAqCisgKiBcc2VjdGlvbiBwam1lZGlhX2NvZGVjX3Bhc3N0aHJvdWdoX2FtciBQYXNzdGhyb3VnaCBBTVIKKyAqCisgKiBJUFAgQU1SIHN1cHBvcnRzIDE2LWJpdCBQQ00gYXVkaW8gc2lnbmFsIHdpdGggc2FtcGxpbmcgcmF0ZSA4MDAwSHosCisgKiAyMG1zIGZyYW1lIGxlbmd0aCBhbmQgcHJvZHVjaW5nIHZhcmlvdXMgYml0cmF0ZXMgdGhhdCByYW5nZXMgZnJvbSA0Ljc1a2JwcworICogdG8gMTIuMmticHMuCisgKgorICogXHN1YnNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIEdlbmVyYWwgY29kZWMgc2V0dGluZ3MgZm9yIHRoaXMgY29kZWMgc3VjaCBhcyBWQUQgYW5kIFBMQyBjYW4gYmUgCisgKiBtYW5pcHVsYXRlZCB0aHJvdWdoIHRoZSA8dHQ+c2V0dGluZzwvdHQ+IGZpZWxkIGluICNwam1lZGlhX2NvZGVjX3BhcmFtLiAKKyAqIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgI3BqbWVkaWFfY29kZWNfcGFyYW0gZm9yIG1vcmUgaW5mby4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBiaXRyYXRlIEJpdHJhdGUKKyAqCisgKiBCeSBkZWZhdWx0LCBlbmNvZGluZyBiaXRyYXRlIGlzIDc0MDBicHMuIFRoaXMgZGVmYXVsdCBzZXR0aW5nIGNhbiBiZSAKKyAqIG1vZGlmaWVkIHVzaW5nICNwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSgpIGJ5IHNwZWNpZnlpbmcgCisgKiBwcmVmZXJlZCBBTVIgYml0cmF0ZSBpbiBmaWVsZCA8dHQ+aW5mbzo6YXZnX2JwczwvdHQ+IG9mIAorICogI3BqbWVkaWFfY29kZWNfcGFyYW0uIFZhbGlkIGJpdHJhdGVzIGNvdWxkIGJlIHNlZW4gaW4gCisgKiAjcGptZWRpYV9jb2RlY19hbXJuYl9iaXRyYXRlcy4KKyAqCisgKiBcc3Vic3Vic2VjdGlvbiBwYXlsb2FkX2Zvcm1hdCBQYXlsb2FkIEZvcm1hdAorICoKKyAqIFRoZXJlIGFyZSB0d28gQU1SIHBheWxvYWQgZm9ybWF0IHR5cGVzLCBiYW5kd2lkdGgtZWZmaWNpZW50IGFuZAorICogb2N0ZXQtYWxpZ25lZC4gRGVmYXVsdCBzZXR0aW5nIGlzIHVzaW5nIG9jdGV0LWFsaWduZWQuIFRoaXMgZGVmYXVsdCBwYXlsb2FkCisgKiBmb3JtYXQgY2FuIGJlIG1vZGlmaWVkIHVzaW5nICNwam1lZGlhX2NvZGVjX21ncl9zZXRfZGVmYXVsdF9wYXJhbSgpLgorICoKKyAqIEluICNwam1lZGlhX2NvZGVjX3BhcmFtLCBwYXlsb2FkIGZvcm1hdCBjYW4gYmUgc2V0IGJ5IHNwZWNpZnlpbmcgU0RQIAorICogZm9ybWF0IHBhcmFtZXRlcnMgIm9jdGV0LWFsaWduIiBpbiB0aGUgU0RQICJhPWZtdHAiIGF0dHJpYnV0ZSBmb3IgCisgKiBkZWNvZGluZyBkaXJlY3Rpb24uIFZhbGlkIHZhbHVlcyBhcmUgIjAiIChmb3IgYmFuZHdpZHRoIGVmZmljaWVudCBtb2RlKQorICogYW5kICIxIiAoZm9yIG9jdGV0LWFsaWduZWQgbW9kZSkuCisgKgorICogXHN1YnN1YnNlY3Rpb24gbW9kZV9zZXQgTW9kZS1TZXQKKyAqIAorICogTW9kZS1zZXQgaXMgdXNlZCBmb3IgcmVzdHJpY3RpbmcgQU1SIG1vZGVzIGluIGRlY29kaW5nIGRpcmVjdGlvbi4KKyAqCisgKiBCeSBkZWZhdWx0LCBubyBtb2RlLXNldCByZXN0cmljdGlvbiBhcHBsaWVkLiBUaGlzIGRlZmF1bHQgc2V0dGluZyBjYW4gYmUgCisgKiBiZSBtb2RpZmllZCB1c2luZyAjcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oKS4KKyAqCisgKiBJbiAjcGptZWRpYV9jb2RlY19wYXJhbSwgbW9kZS1zZXQgY291bGQgYmUgc3BlY2lmaWVkIHZpYSBmb3JtYXQgcGFyYW1ldGVycworICogIm1vZGUtc2V0IiBpbiB0aGUgU0RQICJhPWZtdHAiIGF0dHJpYnV0ZSBmb3IgZGVjb2RpbmcgZGlyZWN0aW9uLiBWYWxpZCAKKyAqIHZhbHVlIGlzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgbW9kZXMgZnJvbSB0aGUgc2V0IDAgLSA3LCBlLmc6IAorICogIjQsNSw2LDciLiBXaGVuIHRoaXMgcGFyYW1ldGVyIGlzIG9taXR0ZWQsIG5vIG1vZGUtc2V0IHJlc3RyaWN0aW9ucyBhcHBsaWVkLgorICoKKyAqIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiBtb2RpZnlpbmcgQU1SIGRlZmF1bHQgY29kZWMgcGFyYW06CisgXGNvZGUKKyAgICBwam1lZGlhX2NvZGVjX3BhcmFtIHBhcmFtOworCisgICAgcGptZWRpYV9jb2RlY19tZ3JfZ2V0X2RlZmF1bHRfcGFyYW0oLi4sICZwYXJhbSk7CisgICAgLi4uCisgICAgLy8gc2V0IGRlZmF1bHQgZW5jb2RpbmcgYml0cmF0ZSB0byB0aGUgaGlnaGVzdCAxMi4ya2JwcworICAgIHBhcmFtLmluZm8uYXZnX2JwcyA9IDEyMjAwOworCisgICAgLy8gcmVzdHJpY3QgZGVjb2RpbmcgYml0cmF0ZSB0byAxMC4ya2JwcyBhbmQgMTIuMmticHMgb25seQorICAgIHBhcmFtLnNldHRpbmcuZGVjX2ZtdHAucGFyYW1bMF0ubmFtZSA9IHBqX3N0cigibW9kZS1zZXQiKTsKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLnBhcmFtWzBdLnZhbCAgPSBwal9zdHIoIjYsNyIpOworCisgICAgLy8gYWxzbyBzZXQgdG8gdXNlIGJhbmR3aWR0aC1lZmZpY2llbnQgcGF5bG9hZCBmb3JtYXQKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLnBhcmFtWzFdLm5hbWUgPSBwal9zdHIoIm9jdGV0LWFsaWduIik7CisgICAgcGFyYW0uc2V0dGluZy5kZWNfZm10cC5wYXJhbVsxXS52YWwgID0gcGpfc3RyKCIwIik7CisKKyAgICBwYXJhbS5zZXR0aW5nLmRlY19mbXRwLmNudCA9IDI7CisgICAgLi4uCisgICAgcGptZWRpYV9jb2RlY19tZ3Jfc2V0X2RlZmF1bHRfcGFyYW0oLi4sICZwYXJhbSk7CisgXGVuZGNvZGUKKyAqIAorICoKKyAqIFxzZWN0aW9uIHBqbWVkaWFfY29kZWNfcGFzc3Rocm91Z2hfZzcxMSBQYXNzdGhyb3VnaCBHLjcxMQorICoKKyAqIFRoZSBHLjcxMSBpcyBhbiB1bHRyYSBsb3cgY29tcGxleGl0eSBjb2RlY3MgYW5kIGluIHRyYWRlLW9mZiBpdCByZXN1bHRzCisgKiBpbiBoaWdoIGJpdHJhdGUsIGkuZTogNjRrYnBzIGZvciAxNi1iaXQgUENNIHdpdGggc2FtcGxpbmcgcmF0ZSA4MDAwSHouCisgKgorICogVGhlIGZhY3RvcnkgY29udGFpbnMgdHdvIG1haW4gY29tcHJlc3Npb24gYWxnb3JpdGhtcywgUENNVS91LUxhdyBhbmQgCisgKiBQQ01BL0EtTGF3LgorICoKKyAqIFxzdWJzZWN0aW9uIGNvZGVjX3NldHRpbmcgQ29kZWMgU2V0dGluZ3MKKyAqCisgKiBHZW5lcmFsIGNvZGVjIHNldHRpbmdzIGZvciB0aGlzIGNvZGVjIHN1Y2ggYXMgVkFEIGFuZCBQTEMgY2FuIGJlIAorICogbWFuaXB1bGF0ZWQgdGhyb3VnaCB0aGUgPHR0PnNldHRpbmc8L3R0PiBmaWVsZCBpbiAjcGptZWRpYV9jb2RlY19wYXJhbS4gCisgKiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mICNwam1lZGlhX2NvZGVjX3BhcmFtIGZvciBtb3JlIGluZm8uCiAgKi8KIAogUEpfQkVHSU5fREVDTApAQCAtNzgsNyArMjQ5LDcgQEAKICAqIHdpdGggb25seSBzcGVjaWZpZWQgZW5jb2RpbmcgZm9ybWF0cyBlbmFibGVkLgogICoKICAqIEBwYXJhbSBlbmRwdAkgICAgVGhlIHBqbWVkaWEgZW5kcG9pbnQuCi0gKiBAcGFyYW0gc2V0dGluZyAgIFRoZSBzZXR0aW5ncywgc2VlIEBwam1lZGlhX2NvZGVjX3Bhc3N0aHJvdWdoX3NldHRpbmcuCisgKiBAcGFyYW0gc2V0dGluZyAgIFRoZSBzZXR0aW5ncy4KICAqCiAgKiBAcmV0dXJuCSAgICBQSl9TVUNDRVNTIG9uIHN1Y2Nlc3MuCiAgKi8KZGlmZiAtLWdpdCBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL3NwZWV4LmggYi9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS1jb2RlYy9zcGVleC5oCmluZGV4IDIyNDAyZTUuLmM0N2ZlNjEgMTAwNjQ0Ci0tLSBhL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhLWNvZGVjL3NwZWV4LmgKKysrIGIvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEtY29kZWMvc3BlZXguaApAQCAtMzMsMTQgKzMzLDQzIEBACiAgKiBAYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgU3BlZXggY29kZWNzIChuYXJyb3cvd2lkZS91bHRyYXdpZGUtYmFuZCkuCiAgKiBAewogICoKLSAqIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgZnVuY3Rpb25zIHRvIHJlZ2lzdGVyIGFuZCByZWdpc3RlciBzcGVleCBjb2RlYworICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgc3BlZXggY29kZWMKICAqIGZhY3RvcnkgdG8gdGhlIGNvZGVjIG1hbmFnZXIuIEFmdGVyIHRoZSBjb2RlYyBmYWN0b3J5IGhhcyBiZWVuIHJlZ2lzdGVyZWQsCiAgKiBhcHBsaWNhdGlvbiBjYW4gdXNlIEByZWYgUEpNRURJQV9DT0RFQyBBUEkgdG8gbWFuaXB1bGF0ZSB0aGUgY29kZWMuCiAgKgorICogVGhlIFNwZWV4IGNvZGVjIHVzZXMgbXVsdGlwbGUgYml0IHJhdGVzLCBhbmQgc3VwcG9ydHMgdWx0cmEtd2lkZWJhbmQgCisgKiAoMzIga0h6IHNhbXBsaW5nIHJhdGUpLCB3aWRlYmFuZCAoMTYga0h6IHNhbXBsaW5nIHJhdGUpIGFuZCBuYXJyb3diYW5kIAorICogKHRlbGVwaG9uZSBxdWFsaXR5LCA4IGtIeiBzYW1wbGluZyByYXRlKQorICoKICAqIEJ5IGRlZmF1bHQsIHRoZSBzcGVleCBjb2RlYyBmYWN0b3J5IHJlZ2lzdGVycyB0aHJlZSBTcGVleCBjb2RlY3M6CiAgKiAic3BlZXgvODAwMCIgbmFycm93YmFuZCBjb2RlYywgInNwZWV4LzE2MDAwIiB3aWRlYmFuZCBjb2RlYywgYW5kIAogICogInNwZWV4LzMyMDAwIiB1bHRyYS13aWRlYmFuZCBjb2RlYy4gVGhpcyBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZCBieQogICogc3BlY2lmeWluZyAjcGptZWRpYV9zcGVleF9vcHRpb25zIGZsYWdzIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqCisgKgorICogXHNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIFxzdWJzZWN0aW9uIGdlbmVyYWxfc2V0dGluZyBHZW5lcmFsIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzZWN0aW9uIHNwZWNpZmljX3NldHRpbmcgQ29kZWMgU3BlY2lmaWMgU2V0dGluZ3MKKyAqCisgKiBUaGUgZm9sbG93aW5nIHNldHRpbmdzIGFyZSBhcHBsaWNhYmxlIGZvciB0aGlzIGNvZGVjLgorICoKKyAqIFxzdWJzdWJzZWN0aW9uIHF1YWxpdHlfdnNfY29tcGxleGl0eSBRdWFsaXR5IHZzIENvbXBsZXhpdHkKKyAqCisgKiBUaGUgU3BlZXggY29kZWMgcXVhbGl0eSB2ZXJzdXMgY29tcHV0YXRpb25hbCBjb21wbGV4aXR5IGFuZCBiYW5kd2lkdGgKKyAqIHJlcXVpcmVtZW50IGNhbiBiZSBhZGp1c3RlZCBieSBtb2RpZnlpbmcgdGhlIHF1YWxpdHkgYW5kIGNvbXBsZXhpdHkKKyAqIHNldHRpbmcsIGJ5IGNhbGxpbmcgI3BqbWVkaWFfY29kZWNfc3BlZXhfc2V0X3BhcmFtKCkuIFRoZSBSRkMgNTU3NAorICogU2VjdGlvbiA1IHNob3dzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBxdWFsaXR5IHNldHRpbmcgYW5kIHRoZQorICogcmVzdWx0aW5nIGJpdHJhdGUuCisgKgorICogVGhlIGRlZmF1bHQgc2V0dGluZyBvZiBxdWFsaXR5IGlzIHNwZWNpZmllZCBpbiAKKyAqICNQSk1FRElBX0NPREVDX1NQRUVYX0RFRkFVTFRfUVVBTElUWS4gQW5kIHRoZSBkZWZhdWx0IHNldHRpbmcgb2YKKyAqIGNvbXBsZXhpdHkgaXMgc3BlY2lmaWVkIGluICNQSk1FRElBX0NPREVDX1NQRUVYX0RFRkFVTFRfQ09NUExFWElUWS4KICAqLwogCiBQSl9CRUdJTl9ERUNMCmRpZmYgLS1naXQgYS9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS9nNzExLmggYi9wam1lZGlhL2luY2x1ZGUvcGptZWRpYS9nNzExLmgKaW5kZXggMmU3ZmNmMS4uY2RiZTVhMyAxMDA2NDQKLS0tIGEvcGptZWRpYS9pbmNsdWRlL3BqbWVkaWEvZzcxMS5oCisrKyBiL3BqbWVkaWEvaW5jbHVkZS9wam1lZGlhL2c3MTEuaApAQCAtMjgsMTMgKzI4LDMyIEBACiAjaW5jbHVkZSA8cGptZWRpYS1jb2RlYy90eXBlcy5oPgogCiAvKioKLSAqIEBkZWZncm91cCBQSk1FRF9HNzExIEc3MTEgRy43MTEgQ29kZWMKKyAqIEBkZWZncm91cCBQSk1FRF9HNzExIEcuNzExIENvZGVjCiAgKiBAaW5ncm91cCBQSk1FRElBX0NPREVDX0NPREVDUwogICogQGJyaWVmIFN0YW5kYXJkIEcuNzExL1BDTUEgYW5kIFBDTVUgY29kZWMuCiAgKiBAewotICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIEcuNzExIGNvZGVjCisgKgorICogVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgRy43MTEgY29kZWMKICAqIGZhY3RvcnkgdG8gdGhlIGNvZGVjIG1hbmFnZXIuIEFmdGVyIHRoZSBjb2RlYyBmYWN0b3J5IGhhcyBiZWVuIHJlZ2lzdGVyZWQsCiAgKiBhcHBsaWNhdGlvbiBjYW4gdXNlIEByZWYgUEpNRURJQV9DT0RFQyBBUEkgdG8gbWFuaXB1bGF0ZSB0aGUgY29kZWMuCisgKgorICogVGhlIEcuNzExIGlzIGFuIHVsdHJhIGxvdyBjb21wbGV4aXR5IGNvZGVjcyBhbmQgaW4gdHJhZGUtb2ZmIGl0IHJlc3VsdHMKKyAqIGluIGhpZ2ggYml0cmF0ZSwgaS5lOiA2NGticHMgZm9yIDE2LWJpdCBQQ00gd2l0aCBzYW1wbGluZyByYXRlIDgwMDBIei4KKyAqCisgKiBUaGUgZmFjdG9yeSBjb250YWlucyB0d28gbWFpbiBjb21wcmVzc2lvbiBhbGdvcml0aG1zLCBQQ01VL3UtTGF3IGFuZCAKKyAqIFBDTUEvQS1MYXcuCisgKgorICogXHNlY3Rpb24gY29kZWNfc2V0dGluZyBDb2RlYyBTZXR0aW5ncworICoKKyAqIFxzdWJzZWN0aW9uIGdlbmVyYWxfc2V0dGluZyBHZW5lcmFsIFNldHRpbmdzCisgKgorICogR2VuZXJhbCBjb2RlYyBzZXR0aW5ncyBmb3IgdGhpcyBjb2RlYyBzdWNoIGFzIFZBRCBhbmQgUExDIGNhbiBiZSAKKyAqIG1hbmlwdWxhdGVkIHRocm91Z2ggdGhlIDx0dD5zZXR0aW5nPC90dD4gZmllbGQgaW4gI3BqbWVkaWFfY29kZWNfcGFyYW0uIAorICogUGxlYXNlIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiAjcGptZWRpYV9jb2RlY19wYXJhbSBmb3IgbW9yZSBpbmZvLgorICoKKyAqIFxzdWJzZWN0aW9uIHNwZWNpZmljX3NldHRpbmcgQ29kZWMgU3BlY2lmaWMgU2V0dGluZ3MKKyAqCisgKiBDdXJyZW50bHkgbm9uZS4KICAqLwogCiBQSl9CRUdJTl9ERUNMCg==