Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTYDV-004OIt-1K for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Dec 2025 04:23:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTYDU-002EZq-17 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Dec 2025 04:23:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTYDT-002EZi-39 for pgsql-hackers@lists.postgresql.org; Thu, 11 Dec 2025 04:23:48 +0000 Received: from mail-ua1-x931.google.com ([2607:f8b0:4864:20::931]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vTYDR-0006CT-1p for pgsql-hackers@postgresql.org; Thu, 11 Dec 2025 04:23:48 +0000 Received: by mail-ua1-x931.google.com with SMTP id a1e0cc1a2514c-93f573ba819so170932241.1 for ; Wed, 10 Dec 2025 20:23:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765427023; x=1766031823; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Rdt+vEZG7KL3Tq//9CiCjh8Uc05ss0ovQbtyRLfWvYo=; b=WKcPzGZXqrfPeOPlYolOTkA2MNYJEe+HCjmoEVEx2Y7Mznj7axZRT7NvZHASa6kunQ cVuhIEHFzyTJlX4k51qyTUhNEq/V7pucDexTewqpteqFywE9EGoN/3HRmF4chKbkiYEz WsjGq3u24FFuuLGd34Nm7O3MNv4sQwjiYsY2aO4YuhDkBUyEeRT+EunzMWF+0nUr07EU hXF9HhTjG7VcDvbeFPo4BJ5G0c/alYnerC1L6b5TiGlhEAraVVQ8fbAtNrBWCci7v8K+ eM5fcW/S8KTc0imkU1zl7nWh0IZpO/PC4yYcYrRtQYuCdqP0JUpYfCbEVaKY4+GuJlFI 0vgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765427023; x=1766031823; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Rdt+vEZG7KL3Tq//9CiCjh8Uc05ss0ovQbtyRLfWvYo=; b=Jqpyf5RVYvxewKC9NpU8/2QUpQYBmCqSA8zevB5+6BIHOYyiutdeONHbrLsLVAcqpT vFxKfg8bFrBJSSAjsggM+N5H+RTkFEU4sH38Nxr8UBoB5AMTEnbqXh3u6QxhA4PDQvBK 9cqV88bTwFUmd5EJVsb01IaAMb4Xo8MPoWU1WarStm6zBdnxgXIEldMb9knXwqZ1T1ah q6TWMyw4GxcNfzXIJzYx6Ru3CwAULHwr6aQwgSqZBSkTElnB8El1WcDkld525yO8yJd4 aYeswkjOuQkPqwdwlwID/QtScUCPImv3M+45dVOv1KWi+N4Tirfnar7+nQ2yjJ45I5oW dE/Q== X-Gm-Message-State: AOJu0Yx7bAGaQa+P1DRBDn+0ErA0MShluybb1X2vkGa2JIa3gG4486cZ tBiljZHuk+GcmtCBNUBn2K2ROLFoZPNUEYcbj/9I+VLaK4tOFp4EbEOSHgpp+PKDyocXGQIBq69 xoX0VtFjMMciuzdIN6kvqtMiou2T5v9B4H+CJtN2ChA== X-Gm-Gg: AY/fxX4sZd326iJtcKsTlbvFvRw/Cao5maAyCsNVfDxwYNBnrx0BA8VulDC5Alw49/E RC0sRwTFJhJCLESyqzRkME7PG77WpTChJNWYKtO/Co00GVEOsHJH+9Hetf0uXTBAjoOYeFmz5s7 dHv9AH+eEXrnMbUeOY28qPpd6HqdFQtg9dRR9hpDkNXgfh4gyzcCrYSc5lehvzsEFr0hhXj49xe YA++8qei77uHcjBTnpffKQGwx3MWgBCLObSiSWx71IlO4USVUpOU4sOkSc92FJ7et3OFyW19c/c 846Pd1tQS+Vtw2t2ntKQ95h97m0jni3KnLBTUY6kpe63Dky7XHTWAbqvPSDmY3ZUe2YwoOW3sAK x24zITb2lPvesMhnYnXI+hROTZ4c9bCrqeGT9G056y1wVxmAage9jjZVsBVE4X/SWvXvnBgeNuQ 64qeGbPMjanlxVMc+fUPA= X-Google-Smtp-Source: AGHT+IH0+9qWgU35oae2c+EgVH2W0nhg2PoHc+kFeJLqG4AhuKndaNL8HHToB2CT8jxRNT9jcAm3ZCrob6Vu2uDxzLE= X-Received: by 2002:a05:6102:512b:b0:5d5:f40a:4cf1 with SMTP id ada2fe7eead31-5e571dda1bemr1504365137.24.1765427023580; Wed, 10 Dec 2025 20:23:43 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Thu, 11 Dec 2025 12:23:07 +0800 X-Gm-Features: AQt7F2o6d2JIzVeVJmHXpMzcKFn-3KUCLBpJy7P80qKSvlWddJDb37cN_jCmepI Message-ID: Subject: Re: domain for WITHOUT OVERLAPS To: Paul A Jungwirth Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000009e3f210645a5829a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009e3f210645a5829a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 4, 2025 at 2:39=E2=80=AFAM Paul A Jungwirth wrote: > > I think there are these cases to consider: > > - WITHOUT OVERLAPS on a rangetype whose subtype has a domain > - WITHOUT OVERLAPS on a rangetype with a domain on itself > - WITHOUT OVERLAPS on a multirangetype whose subtype has a domain > - WITHOUT OVERLAPS on a multirangetype whose rangetype has a domain > - WITHOUT OVERLAPS on a multirangetype with a domain on itself > hi. please check the attached polished test. (no C code change). I think the test I am missing is > - WITHOUT OVERLAPS on a multirangetype whose rangetype has a domain because it expects CREATE DOMAIN also to create a multirange type for range= type. but currently we didn't do it. -- jian https://www.enterprisedb.com --0000000000009e3f210645a5829a Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-domain-for-WITHOUT-OVERLAPS.patch" Content-Disposition: attachment; filename="v2-0001-domain-for-WITHOUT-OVERLAPS.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mj0xlgbh0 RnJvbSBlZGExODIwZjBhYTU5N2Q1YzI4Yzg5ZTg3MGFhMTM4NDU1NmY2MjI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTEgRGVjIDIwMjUgMTI6MjA6MzggKzA4MDAKU3ViamVjdDogW1BBVENIIHYy IDEvMV0gZG9tYWluIGZvciBXSVRIT1VUIE9WRVJMQVBTCgpwb2xpc2hlZCB0ZXN0cyBmb3IKPiAt IFdJVEhPVVQgT1ZFUkxBUFMgb24gYSByYW5nZXR5cGUgd2hvc2Ugc3VidHlwZSBoYXMgYSBkb21h aW4KPiAtIFdJVEhPVVQgT1ZFUkxBUFMgb24gYSByYW5nZXR5cGUgd2l0aCBhIGRvbWFpbiBvbiBp dHNlbGYKPiAtIFdJVEhPVVQgT1ZFUkxBUFMgb24gYSBtdWx0aXJhbmdldHlwZSB3aG9zZSBzdWJ0 eXBlIGhhcyBhIGRvbWFpbgo+IC0gV0lUSE9VVCBPVkVSTEFQUyBvbiBhIG11bHRpcmFuZ2V0eXBl IHdob3NlIHJhbmdldHlwZSBoYXMgYSBkb21haW4KPiAtIFdJVEhPVVQgT1ZFUkxBUFMgb24gYSBt dWx0aXJhbmdldHlwZSB3aXRoIGEgZG9tYWluIG9uIGl0c2VsZgoKbm8gdGVzdHMgZm9yCj4gLSBX SVRIT1VUIE9WRVJMQVBTIG9uIGEgbXVsdGlyYW5nZXR5cGUgd2hvc2UgcmFuZ2V0eXBlIGhhcyBh IGRvbWFpbgpub3cuCgpiZWNhdXNlIHRoZSBleHBlY3RlZCBiZWhhdmlvciBhc3N1bWVzIHRoYXQg Q1JFQVRFIERPTUFJTiBhbHNvIGdlbmVyYXRlcyBhCmNvcnJlc3BvbmRpbmcgbXVsdGlyYW5nZSB0 eXBlIGZvciB0aGUgZG9tYWluIHJhbmdlIHR5cGUsIHdoaWNoIGlzIG5vdCB0cnVlLgoKLS1leGFt cGxlLCB3ZSBleHBlY3QgY3JlYXRlIGRvbWFpbiBhbHNvIGNyZWF0ZSBhIG11bHRpcmFuZ2UgdHlw ZSBmb3IgeHhpbnQ0CkNSRUFURSBET01BSU4geHhpbnQ0IEFTIGludDRyYW5nZSBDSEVDSyAoVkFM VUUgPD4gJ1sxMCwxMSknKTsKU0VMRUNUIHR5cG5hbWUgRlJPTSBwZ190eXBlIFdIRVJFIHR5cG5h bWUgfiogJ3h4aW50NCc7Cgpjb21taXRmZXN0OiBodHRwczovL2NvbW1pdGZlc3QucG9zdGdyZXNx bC5vcmcvcGF0Y2gvNjI4MQpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhH b0FtTl8waUo9aGpURzB2R3BPU095eS12WXlmRSstcTBBV3hycTJfcDVYUUBtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jICAgICAgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyAgICAgICAgICAgIHwgICAy ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8ICAgMiAr CiBzcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDUgKy0K IC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8IDEzNSArKysr KysrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3Fs ICAgICB8IDEwNCArKysrKysrKysrKysrLQogNiBmaWxlcyBjaGFuZ2VkLCAyNTAgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjSW5kZXhpbmcuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCmluZGV4 IGRkMzIzYzliOWZkLi42YTQ2ZWYyMTExMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY0luZGV4aW5nLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5n LmMKQEAgLTc1MiwxMyArNzUyLDE5IEBAIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3Ry YWludChSZWxhdGlvbiBoZWFwLCBSZWxhdGlvbiBpbmRleCwKIAogCQlpZiAoIWlzbnVsbFtpbmRu a2V5YXR0cyAtIDFdKQogCQl7CisJCQljaGFyIAkJdHlwdHlwZTsKIAkJCVR1cGxlRGVzYwl0dXBk ZXNjID0gUmVsYXRpb25HZXREZXNjcihoZWFwKTsKIAkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9 IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0bm8gLSAxKTsKLQkJCVR5cGVDYWNoZUVudHJ5ICp0 eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKGF0dC0+YXR0dHlwaWQsIDApOworCQkJVHlwZUNh Y2hlRW50cnkgKnR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoYXR0LT5hdHR0eXBpZCwgVFlQ RUNBQ0hFX0RPTUFJTl9CQVNFX0lORk8pOworCisJCQlpZiAoT2lkSXNWYWxpZCh0eXBjYWNoZS0+ ZG9tYWluQmFzZVR5cGUpKQorCQkJCXR5cHR5cGUgPSB0eXBjYWNoZS0+ZG9tYWluQmFzZVR5cHR5 cGU7CisJCQllbHNlCisJCQkJdHlwdHlwZSA9IHR5cGNhY2hlLT50eXB0eXBlOwogCiAJCQlFeGVj V2l0aG91dE92ZXJsYXBzTm90RW1wdHkoaGVhcCwgYXR0LT5hdHRuYW1lLAogCQkJCQkJCQkJCXZh bHVlc1tpbmRua2V5YXR0cyAtIDFdLAotCQkJCQkJCQkJCXR5cGNhY2hlLT50eXB0eXBlLCBhdHQt PmF0dHR5cGlkKTsKKwkJCQkJCQkJCQl0eXB0eXBlLCBhdHQtPmF0dHR5cGlkKTsKIAkJfQogCX0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKaW5kZXggZTk2YjM4YTU5ZDUuLjY3ZWMxYWFh ZDAzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTI3OTIsNiArMjc5Miw4IEBA IHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVT dG10Q29udGV4dCAqY3h0KQogCQkJCQlpZiAoIU9pZElzVmFsaWQodHlwaWQpICYmIGNvbHVtbikK IAkJCQkJCXR5cGlkID0gdHlwZW5hbWVUeXBlSWQoTlVMTCwgY29sdW1uLT50eXBlTmFtZSk7CiAK KwkJCQkJdHlwaWQgPSBnZXRCYXNlVHlwZSh0eXBpZCk7CisKIAkJCQkJaWYgKCFPaWRJc1ZhbGlk KHR5cGlkKSB8fCAhKHR5cGVfaXNfcmFuZ2UodHlwaWQpIHx8IHR5cGVfaXNfbXVsdGlyYW5nZSh0 eXBpZCkpKQogCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRBVFlQRV9NSVNNQVRDSCksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90 eXBjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwppbmRleCA2YTM0 NzY5OGVkZi4uZTI3Y2ExNDY2ZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3R5cGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYwpAQCAt OTQ0LDYgKzk0NCw4IEBAIGxvb2t1cF90eXBlX2NhY2hlKE9pZCB0eXBlX2lkLCBpbnQgZmxhZ3Mp CiAJCXR5cGVudHJ5LT5kb21haW5CYXNlVHlwbW9kID0gLTE7CiAJCXR5cGVudHJ5LT5kb21haW5C YXNlVHlwZSA9CiAJCQlnZXRCYXNlVHlwZUFuZFR5cG1vZCh0eXBlX2lkLCAmdHlwZW50cnktPmRv bWFpbkJhc2VUeXBtb2QpOworCQl0eXBlbnRyeS0+ZG9tYWluQmFzZVR5cHR5cGUgPQorCQkJZ2V0 X3R5cHR5cGUodHlwZW50cnktPmRvbWFpbkJhc2VUeXBlKTsKIAl9CiAJaWYgKChmbGFncyAmIFRZ UEVDQUNIRV9ET01BSU5fQ09OU1RSX0lORk8pICYmCiAJCSh0eXBlbnRyeS0+ZmxhZ3MgJiBUQ0ZM QUdTX0NIRUNLRURfRE9NQUlOX0NPTlNUUkFJTlRTKSA9PSAwICYmCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaApp bmRleCAxY2IzMGYxODE4Yy4uMmFkNzUyOGMxOTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaApAQCAtMTA5 LDExICsxMDksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHlwZUNhY2hlRW50cnkKIAlzdHJ1Y3QgVHlw ZUNhY2hlRW50cnkgKnJuZ3R5cGU7IC8qIG11bHRpcmFuZ2UncyByYW5nZSB1bmRlcmx5aW5nIHR5 cGUgKi8KIAogCS8qCi0JICogRG9tYWluJ3MgYmFzZSB0eXBlIGFuZCB0eXBtb2QgaWYgaXQncyBh IGRvbWFpbiB0eXBlLiAgWmVyb2VzIGlmIG5vdAotCSAqIGRvbWFpbiwgb3IgaWYgaW5mb3JtYXRp b24gaGFzbid0IGJlZW4gcmVxdWVzdGVkLgorCSAqIERvbWFpbidzIGJhc2UgdHlwZSwgdHlwbW9k LCBhbmQgdHlwdHlwZSBpZiBpdCdzIGEgZG9tYWluIHR5cGUuCisJICogWmVyb2VzIGlmIG5vdCBk b21haW4sIG9yIGlmIGluZm9ybWF0aW9uIGhhc24ndCBiZWVuIHJlcXVlc3RlZC4KIAkgKi8KIAlP aWQJCQlkb21haW5CYXNlVHlwZTsKIAlpbnQzMgkJZG9tYWluQmFzZVR5cG1vZDsKKwljaGFyCQlk b21haW5CYXNlVHlwdHlwZTsKIAogCS8qCiAJICogRG9tYWluIGNvbnN0cmFpbnQgZGF0YSBpZiBp dCdzIGEgZG9tYWluIHR5cGUuICBOVUxMIGlmIG5vdCBkb21haW4sIG9yCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCBmMzE0NGJkYzM5Yy4u MWVlODhjNDIzMGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91 dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292 ZXJsYXBzLm91dApAQCAtMTYyLDcgKzE2MiwxMTggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAogKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX3JuZzNfcGs7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7Ci1EUk9QIFRZUEUgdGV4dHJh bmdlMjsKKy0tCistLSB0ZXN0cyBmb3IgcmFuZ2Ugb3ZlciBkb21haW4sIG11bHRpcmFuZ2Ugb3Zl ciBhIGRvbWFpbiwgY3VzdG9tIHJhbmdlIHR5cGUgb3ZlcgorLS0gZG9tYWluLgorLS0KK0NSRUFU RSBET01BSU4gaW50NF9kIGFzIGludGVnZXIgY2hlY2sgKHZhbHVlIDw+IDEwKTsKK0NSRUFURSBU WVBFIGludDRfZF9yYW5nZSBhcyByYW5nZSAoc3VidHlwZSA9IGludDRfZCk7CitDUkVBVEUgRE9N QUlOIGludDRtdWx0aXJhbmdlX2QgYXMgaW50NG11bHRpcmFuZ2UgY2hlY2sgKHZhbHVlIDw+ICd7 WzEwLDExKX0nKTsKK0NSRUFURSBET01BSU4gZF9pbnQ0cmFuZ2UxIEFTIGludDRyYW5nZSBDSEVD SyAoVkFMVUUgPD4gJ1sxMCwxMSknKTsKK0NSRUFURSBET01BSU4gZF90ZXh0cmFuZ2UyIEFTIHRl eHRyYW5nZTIgQ0hFQ0sgKFZBTFVFIDw+ICdbYyxkKScpOworQ1JFQVRFIERPTUFJTiBkX3RleHRy YW5nZTJjIEFTIGRfdGV4dHJhbmdlMjsKK0NSRUFURSBET01BSU4gdGV4dG11bHRpcmFuZ2UyX2Qg QVMgdGV4dG11bHRpcmFuZ2UyIENIRUNLIChWQUxVRSA8PiAne1tjLGQpfScpOworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZzRtcm5nICgKKyAgaWQgIGRfaW50NHJhbmdlMSwKKyAgdmFsaWRfYXQg aW50NG11bHRpcmFuZ2VfZCwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmc0X3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmc0bXJuZyBWQUxVRVMgKCdbMSwyKScsICd7WzEwLDExKX0nKTsgLS1lcnJvcgorRVJS T1I6ICB2YWx1ZSBmb3IgZG9tYWluIGludDRtdWx0aXJhbmdlX2QgdmlvbGF0ZXMgY2hlY2sgY29u c3RyYWludCAiaW50NG11bHRpcmFuZ2VfZF9jaGVjayIKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzRtcm5nIFZBTFVFUyAoJ1sxLDIpJywgJ3tbMTAsMTMpfScpLCAoJ1sxLDIpJywgJ3tbMiwxMyl9 Jyk7IC0tZXJyb3IKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1 c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmc0X3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFs aWRfYXQpPShbMSwyKSwge1syLDEzKX0pIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQs IHZhbGlkX2F0KT0oWzEsMiksIHtbMTAsMTMpfSkuCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzRt cm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzQgKAorICBpZCAgZF9pbnQ0cmFuZ2UxLAor ICBpZDEgaW50NF9kX3JhbmdlLAorICB2YWxpZF9hdCBkX3RleHRyYW5nZTJjLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZzRfcGsgUFJJTUFSWSBLRVkgKGlkLCBpZDEsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwy KScsICdbMSwyKScsICdbYyxkKScpOyAtLWVycm9yCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4g ZF90ZXh0cmFuZ2UyYyB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJkX3RleHRyYW5nZTJfY2hl Y2siCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1sxMCwxMikn LCAnW2EsZyknKTsgLS1lcnJvcgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIGludDRfZCB2aW9s YXRlcyBjaGVjayBjb25zdHJhaW50ICJpbnQ0X2RfY2hlY2siCitMSU5FIDE6IElOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnWzEwLDEyKScsICdbYSxnKS4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nNAorICBWQUxVRVMgKCdbMiwzKScsICdbOSwxMSknLCAnW0IsQykn KSwgKCdbMiwzKScsICdbOSwxMSknLCAnW0EsQyknKTsgLS1lcnJvcgorRVJST1I6ICBjb25mbGlj dGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsX3Ju ZzRfcGsiCitERVRBSUw6ICBLZXkgKGlkLCBpZDEsIHZhbGlkX2F0KT0oWzIsMyksIFs5LDExKSwg W0EsQykpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIGlkMSwgdmFsaWRfYXQpPShb MiwzKSwgWzksMTEpLCBbQixDKSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAo J1sxLDIpJywgJ1s5LDExKScsICdbYSxnKScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nNCBW QUxVRVMgKCdbMSwyKScsICdbOSwxMSknLCAnW2IsYyknKTsgLS1lcnJvcgorRVJST1I6ICBjb25m bGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFs X3JuZzRfcGsiCitERVRBSUw6ICBLZXkgKGlkLCBpZDEsIHZhbGlkX2F0KT0oWzEsMiksIFs5LDEx KSwgW2IsYykpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIGlkMSwgdmFsaWRfYXQp PShbMSwyKSwgWzksMTEpLCBbYSxnKSkuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nZmsgKAor ICBwYXJlbnRfaWQgZF9pbnQ0cmFuZ2UxLAorICBpZCBpbnQ0cmFuZ2UsCisgIGlkMSBpbnQ0X2Rf cmFuZ2UsCisgIHZhbGlkX2F0IGRfdGV4dHJhbmdlMik7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9y bmdmaworICBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdma19maworICAgIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIGlkMSwgUEVSSU9EIHZhbGlkX2F0KQorICAgIFJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nNDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZ2ZrIFZBTFVFUyAoJ1sxLDIpJywgJ1sy LDMpJywgJ1s5LDExKScsICdbZCxlKScpOworVEFCTEUgdGVtcG9yYWxfcm5nNDsKKyAgaWQgICB8 ICBpZDEgICB8IHZhbGlkX2F0IAorLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tCisgWzEsMikg fCBbOSwxMSkgfCBbYSxnKQorKDEgcm93KQorCitUQUJMRSB0ZW1wb3JhbF9ybmdmazsKKyBwYXJl bnRfaWQgfCAgaWQgICB8ICBpZDEgICB8IHZhbGlkX2F0IAorLS0tLS0tLS0tLS0rLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tCisgWzEsMikgICAgIHwgWzIsMykgfCBbOSwxMSkgfCBbZCxlKQor KDEgcm93KQorCitVUERBVEUgdGVtcG9yYWxfcm5nNCBTRVQgdmFsaWRfYXQgPSAnW2MsZCknOyAt LWVycm9yCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZF90ZXh0cmFuZ2UyYyB2aW9sYXRlcyBj aGVjayBjb25zdHJhaW50ICJkX3RleHRyYW5nZTJfY2hlY2siCitVUERBVEUgdGVtcG9yYWxfcm5n NCBTRVQgdmFsaWRfYXQgPSAnW2EsaCknOworVVBEQVRFIHRlbXBvcmFsX3JuZzQgU0VUIHZhbGlk X2F0ID0gJ1tmLGcpJzsgLS1lcnJvcgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ybmc0IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3Jh bF9ybmdma19mayIgb24gdGFibGUgInRlbXBvcmFsX3JuZ2ZrIgorREVUQUlMOiAgS2V5IChpZCwg aWQxLCB2YWxpZF9hdCk9KFsxLDIpLCBbOSwxMSksIFthLGgpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX3JuZ2ZrIi4KK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nNCwg dGVtcG9yYWxfcm5nZms7CistLSBkb21haW4gb24gYSBtdWx0aXJhbmdlCitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfbWx0cm5nNCAoCisgIGlkIGRfaW50NHJhbmdlMSwKKyAgdmFsaWRfYXQgdGV4dG11 bHRpcmFuZ2UyX2QsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nNF9wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxf bWx0cm5nNCBWQUxVRVMgKCdbMSwyKScsICd7W2MsZCl9Jyk7IC0tZXJyb3IKK0VSUk9SOiAgdmFs dWUgZm9yIGRvbWFpbiB0ZXh0bXVsdGlyYW5nZTJfZCB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50 ICJ0ZXh0bXVsdGlyYW5nZTJfZF9jaGVjayIKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzQg VkFMVUVTICgnWzEsMiknLCAne1thLGcpfScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5n NCBWQUxVRVMgKCdbMSwyKScsICd7W2IsYyl9Jyk7IC0tZXJyb3IKK0VSUk9SOiAgY29uZmxpY3Rp bmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmc0 X3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwge1tiLGMpfSkgY29uZmxp Y3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwge1thLGcpfSkuCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmc0IFZBTFVFUyAoJ1syLDMpJywgJ3tbQixDKX0nKSwg KCdbMiwzKScsICd7W0EsQyl9Jyk7IC0tZXJyb3IKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZh bHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmc0X3BrIgorREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMiwzKSwge1tBLEMpfSkgY29uZmxpY3RzIHdpdGgg ZXhpc3Rpbmcga2V5IChpZCwgdmFsaWRfYXQpPShbMiwzKSwge1tCLEMpfSkuCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfbWx0cm5nZmsgKHBhcmVudF9pZCBkX2ludDRyYW5nZTEsIGlkIGludDRyYW5n ZSwKK3ZhbGlkX2F0IHRleHRtdWx0aXJhbmdlMl9kKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX21s dHJuZ2ZrCisgIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJuZ2ZrX2ZrCisgICAgRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorICAgIFJFRkVSRU5DRVMgdGVtcG9y YWxfbWx0cm5nNDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZ2ZrIFZBTFVFUyAoJ1sxLDIp JywgJ1syLDMpJywgJ3tbZCxlKX0nKTsKK1RBQkxFIHRlbXBvcmFsX21sdHJuZzQ7CisgIGlkICAg fCB2YWxpZF9hdCAKKy0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwge1thLGcpfQorKDEgcm93 KQorCitUQUJMRSB0ZW1wb3JhbF9tbHRybmdmazsKKyBwYXJlbnRfaWQgfCAgaWQgICB8IHZhbGlk X2F0IAorLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tCisgWzEsMikgICAgIHwgWzIsMykg fCB7W2QsZSl9CisoMSByb3cpCisKK1VQREFURSB0ZW1wb3JhbF9tbHRybmc0IFNFVCB2YWxpZF9h dCA9ICd7W2MsZCl9JzsgLS1lcnJvcgorRVJST1I6ICB2YWx1ZSBmb3IgZG9tYWluIHRleHRtdWx0 aXJhbmdlMl9kIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInRleHRtdWx0aXJhbmdlMl9kX2No ZWNrIgorVVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VUIHZhbGlkX2F0ID0gJ3tbYSxoKX0nOwor VVBEQVRFIHRlbXBvcmFsX21sdHJuZzQgU0VUIHZhbGlkX2F0ID0gJ3tbZixnKX0nOyAtLWVycm9y CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX21sdHJuZzQiIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX21sdHJuZ2ZrX2ZrIiBvbiB0 YWJsZSAidGVtcG9yYWxfbWx0cm5nZmsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsx LDIpLCB7W2EsaCl9KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX21s dHJuZ2ZrIi4KK0RST1AgVEFCTEUgdGVtcG9yYWxfbWx0cm5nNCwgdGVtcG9yYWxfbWx0cm5nZms7 CiAtLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIG11bHRpcmFuZ2U6CiBDUkVBVEUgVEFCTEUg dGVtcG9yYWxfbWx0cm5nICgKICAgaWQgaW50NHJhbmdlLApAQCAtMzAxLDcgKzQxMiw2IEBAIFNF TEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlCiAKIERST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKIC0tIFVO SVFVRSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6Ci1DUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFT IHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOwogQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzMgKAogICBpZCBpbnQ0cmFuZ2UsCiAgIHZhbGlkX2F0IHRleHRyYW5nZTIsCkBAIC0z MDksNiArNDE5LDI3IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKICk7CiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ybmczIERST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxOwogRFJP UCBUQUJMRSB0ZW1wb3JhbF9ybmczOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzQgKAorICBp ZCBkX2ludDRyYW5nZTEsCisgIHZhbGlkX2F0IGRfdGV4dHJhbmdlMmMsCisgIENPTlNUUkFJTlQg dGVtcG9yYWxfcm5nNF9wayBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCBOVUxMKSwgKE5V TEwsICdbMSwyKScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwyKScs ICdbYyxkKScpOyAtLWVycm9yCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZF90ZXh0cmFuZ2Uy YyB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJkX3RleHRyYW5nZTJfY2hlY2siCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1thLGQpJyk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1tiLGMpJyk7IC0tZXJyb3IKK0VSUk9S OiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9ybmc0X3BrIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgW2Is YykpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFth LGQpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEwLDExKScsIE5VTEwp OyAtLWVycm9yCitFUlJPUjogIHZhbHVlIGZvciBkb21haW4gZF9pbnQ0cmFuZ2UxIHZpb2xhdGVz IGNoZWNrIGNvbnN0cmFpbnQgImRfaW50NHJhbmdlMV9jaGVjayIKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZzQgVkFMVUVTICgnWzIsMyknLCAnW0IsQyknKSwgKCdbMiwzKScsICdbQSxDKScpOyAt LWVycm9yCitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24g Y29uc3RyYWludCAidGVtcG9yYWxfcm5nNF9wayIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzIsMyksIFtBLEMpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9h dCk9KFsyLDMpLCBbQixDKSkuCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzQ7CitEUk9QIFRZUEUg aW50NF9kX3JhbmdlOworRFJPUCBET01BSU4gZF9pbnQ0cmFuZ2UxLCBkX3RleHRyYW5nZTJjLCBk X3RleHRyYW5nZTIsCisgICAgICAgICAgICB0ZXh0bXVsdGlyYW5nZTJfZCwgaW50NG11bHRpcmFu Z2VfZCwgaW50NF9kOwogRFJPUCBUWVBFIHRleHRyYW5nZTI7CiAtLQogLS0gdGVzdCBBTFRFUiBU QUJMRSBBREQgQ09OU1RSQUlOVApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0 aG91dF9vdmVybGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBz LnNxbAppbmRleCA0YWFjYTI0MmJiZS4uNGUwZDJkZjc3NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0xMDAsNyArMTAwLDkxIEBAIENSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmczICgKICk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmczIERST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmczX3BrOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOwotRFJP UCBUWVBFIHRleHRyYW5nZTI7CisKKy0tCistLSB0ZXN0cyBmb3IgcmFuZ2Ugb3ZlciBkb21haW4s IG11bHRpcmFuZ2Ugb3ZlciBhIGRvbWFpbiwgY3VzdG9tIHJhbmdlIHR5cGUgb3ZlcgorLS0gZG9t YWluLgorLS0KK0NSRUFURSBET01BSU4gaW50NF9kIGFzIGludGVnZXIgY2hlY2sgKHZhbHVlIDw+ IDEwKTsKK0NSRUFURSBUWVBFIGludDRfZF9yYW5nZSBhcyByYW5nZSAoc3VidHlwZSA9IGludDRf ZCk7CitDUkVBVEUgRE9NQUlOIGludDRtdWx0aXJhbmdlX2QgYXMgaW50NG11bHRpcmFuZ2UgY2hl Y2sgKHZhbHVlIDw+ICd7WzEwLDExKX0nKTsKK0NSRUFURSBET01BSU4gZF9pbnQ0cmFuZ2UxIEFT IGludDRyYW5nZSBDSEVDSyAoVkFMVUUgPD4gJ1sxMCwxMSknKTsKK0NSRUFURSBET01BSU4gZF90 ZXh0cmFuZ2UyIEFTIHRleHRyYW5nZTIgQ0hFQ0sgKFZBTFVFIDw+ICdbYyxkKScpOworQ1JFQVRF IERPTUFJTiBkX3RleHRyYW5nZTJjIEFTIGRfdGV4dHJhbmdlMjsKK0NSRUFURSBET01BSU4gdGV4 dG11bHRpcmFuZ2UyX2QgQVMgdGV4dG11bHRpcmFuZ2UyIENIRUNLIChWQUxVRSA8PiAne1tjLGQp fScpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nNG1ybmcgKAorICBpZCAgZF9pbnQ0cmFu Z2UxLAorICB2YWxpZF9hdCBpbnQ0bXVsdGlyYW5nZV9kLAorICBDT05TVFJBSU5UIHRlbXBvcmFs X3JuZzRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzRtcm5nIFZBTFVFUyAoJ1sxLDIpJywgJ3tbMTAsMTEp fScpOyAtLWVycm9yCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0bXJuZyBWQUxVRVMgKCdbMSwy KScsICd7WzEwLDEzKX0nKSwgKCdbMSwyKScsICd7WzIsMTMpfScpOyAtLWVycm9yCitEUk9QIFRB QkxFIHRlbXBvcmFsX3JuZzRtcm5nOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nNCAoCisg IGlkICBkX2ludDRyYW5nZTEsCisgIGlkMSBpbnQ0X2RfcmFuZ2UsCisgIHZhbGlkX2F0IGRfdGV4 dHJhbmdlMmMsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nNF9wayBQUklNQVJZIEtFWSAoaWQs IGlkMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnWzEsMiknLCAnW2MsZCknKTsgLS1lcnJvcgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMSwyKScsICdbMTAsMTIpJywgJ1thLGcp Jyk7IC0tZXJyb3IKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQKKyAgVkFMVUVTICgnWzIsMykn LCAnWzksMTEpJywgJ1tCLEMpJyksICgnWzIsMyknLCAnWzksMTEpJywgJ1tBLEMpJyk7IC0tZXJy b3IKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnWzksMTEpJywg J1thLGcpJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1s5 LDExKScsICdbYixjKScpOyAtLWVycm9yCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmdmayAo CisgIHBhcmVudF9pZCBkX2ludDRyYW5nZTEsCisgIGlkIGludDRyYW5nZSwKKyAgaWQxIGludDRf ZF9yYW5nZSwKKyAgdmFsaWRfYXQgZF90ZXh0cmFuZ2UyKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3JuZ2ZrCisgIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ2ZrX2ZrCisgICAgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgaWQxLCBQRVJJT0QgdmFsaWRfYXQpCisgICAgUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc0OworCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmdmayBWQUxVRVMgKCdbMSwyKScs ICdbMiwzKScsICdbOSwxMSknLCAnW2QsZSknKTsKK1RBQkxFIHRlbXBvcmFsX3JuZzQ7CitUQUJM RSB0ZW1wb3JhbF9ybmdmazsKKworVVBEQVRFIHRlbXBvcmFsX3JuZzQgU0VUIHZhbGlkX2F0ID0g J1tjLGQpJzsgLS1lcnJvcgorVVBEQVRFIHRlbXBvcmFsX3JuZzQgU0VUIHZhbGlkX2F0ID0gJ1th LGgpJzsKK1VQREFURSB0ZW1wb3JhbF9ybmc0IFNFVCB2YWxpZF9hdCA9ICdbZixnKSc7IC0tZXJy b3IKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc0LCB0ZW1wb3JhbF9ybmdmazsKKworLS0gZG9t YWluIG9uIGEgbXVsdGlyYW5nZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX21sdHJuZzQgKAorICBp ZCBkX2ludDRyYW5nZTEsCisgIHZhbGlkX2F0IHRleHRtdWx0aXJhbmdlMl9kLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZzRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nNCBWQUxVRVMgKCdbMSwy KScsICd7W2MsZCl9Jyk7IC0tZXJyb3IKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzQgVkFM VUVTICgnWzEsMiknLCAne1thLGcpfScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nNCBW QUxVRVMgKCdbMSwyKScsICd7W2IsYyl9Jyk7IC0tZXJyb3IKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X21sdHJuZzQgVkFMVUVTICgnWzIsMyknLCAne1tCLEMpfScpLCAoJ1syLDMpJywgJ3tbQSxDKX0n KTsgLS1lcnJvcgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nZmsgKHBhcmVudF9pZCBk X2ludDRyYW5nZTEsIGlkIGludDRyYW5nZSwKK3ZhbGlkX2F0IHRleHRtdWx0aXJhbmdlMl9kKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX21sdHJuZ2ZrCisgIEFERCBDT05TVFJBSU5UIHRlbXBvcmFs X21sdHJuZ2ZrX2ZrCisgICAgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorICAgIFJFRkVSRU5DRVMgdGVtcG9yYWxfbWx0cm5nNDsKKworSU5TRVJUIElOVE8gdGVtcG9y YWxfbWx0cm5nZmsgVkFMVUVTICgnWzEsMiknLCAnWzIsMyknLCAne1tkLGUpfScpOworVEFCTEUg dGVtcG9yYWxfbWx0cm5nNDsKK1RBQkxFIHRlbXBvcmFsX21sdHJuZ2ZrOworCitVUERBVEUgdGVt cG9yYWxfbWx0cm5nNCBTRVQgdmFsaWRfYXQgPSAne1tjLGQpfSc7IC0tZXJyb3IKK1VQREFURSB0 ZW1wb3JhbF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2EsaCl9JzsKK1VQREFURSB0ZW1wb3Jh bF9tbHRybmc0IFNFVCB2YWxpZF9hdCA9ICd7W2YsZyl9JzsgLS1lcnJvcgorCitEUk9QIFRBQkxF IHRlbXBvcmFsX21sdHJuZzQsIHRlbXBvcmFsX21sdHJuZ2ZrOworCiAKIC0tIFBLIHdpdGggb25l IGNvbHVtbiBwbHVzIGEgbXVsdGlyYW5nZToKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmcg KApAQCAtMTcwLDcgKzI1NCw2IEBAIFNFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAs IHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlCiBEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzM7CiAKIC0tIFVOSVFVRSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6Ci1D UkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0i QyIpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAogICBpZCBpbnQ0cmFuZ2UsCiAgIHZh bGlkX2F0IHRleHRyYW5nZTIsCkBAIC0xNzgsNiArMjYxLDIzIEBAIENSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmczICgKICk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmczIERST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmczX3VxOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOworCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcm5nNCAoCisgIGlkIGRfaW50NHJhbmdlMSwKKyAgdmFsaWRfYXQgZF90 ZXh0cmFuZ2UyYywKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmc0X3BrIFVOSVFVRSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nNCBW QUxVRVMgKCdbMSwyKScsIE5VTEwpLCAoTlVMTCwgJ1sxLDIpJyk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmc0IFZBTFVFUyAoJ1sxLDIpJywgJ1tjLGQpJyk7IC0tZXJyb3IKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnW2EsZCknKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZzQgVkFMVUVTICgnWzEsMiknLCAnW2IsYyknKTsgLS1lcnJvcgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nNCBWQUxVRVMgKCdbMTAsMTEpJywgTlVMTCk7IC0tZXJyb3IKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzQgVkFMVUVTICgnWzIsMyknLCAnW0IsQyknKSwgKCdbMiwzKScs ICdbQSxDKScpOyAtLWVycm9yCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nNDsKK0RST1AgVFlQ RSBpbnQ0X2RfcmFuZ2U7CitEUk9QIERPTUFJTiBkX2ludDRyYW5nZTEsIGRfdGV4dHJhbmdlMmMs IGRfdGV4dHJhbmdlMiwKKyAgICAgICAgICAgIHRleHRtdWx0aXJhbmdlMl9kLCBpbnQ0bXVsdGly YW5nZV9kLCBpbnQ0X2Q7CiBEUk9QIFRZUEUgdGV4dHJhbmdlMjsKIAogLS0KLS0gCjIuMzQuMQoK --0000000000009e3f210645a5829a--