Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aikyX-0001rH-6R for pgadmin-hackers@arkaria.postgresql.org; Wed, 23 Mar 2016 15:45:37 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1aikyW-0003oc-Is for pgadmin-hackers@arkaria.postgresql.org; Wed, 23 Mar 2016 15:45:36 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1aikyO-0003oI-CU for pgadmin-hackers@postgresql.org; Wed, 23 Mar 2016 15:45:29 +0000 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1aikyG-0003s5-A1 for pgadmin-hackers@postgresql.org; Wed, 23 Mar 2016 15:45:27 +0000 Received: by mail-wm0-x232.google.com with SMTP id p65so29859367wmp.0 for ; Wed, 23 Mar 2016 08:45:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=5bRVvdP3L/z5t6ii4c7yQiSWdX1ua23fGG6dSp8O3PU=; b=k3LgD1Bs3HJ6L6FqGrPqbs3sdrFEw992GeMzgGFftwa3kmMFXhlBiIeUcyYo0bnqIB 0R4Ym7I8cWwapcAF9OS90DjHLicRGoSyRdth6+3PUcRgnP58TofgQEovYjWq8BbF7B4A Yab8sKATO9s/D+kRV2M+35w1KSReHtgwfdShY9wVqRe38UcT2+28WfBrcwoaQbvr5p33 6hoPud9QuUYNLDZohb7BDe3yuz7WTB6J+yjU0shLSv7flOl+HQGuUthtqoTL6jNmlaCy aqRItIiITegwoJg5gj6m/HAJF0tzkiaUynf6Bk0jQODN4NrxcfYNkuPQ4VrdZCTeXSjO VdGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=5bRVvdP3L/z5t6ii4c7yQiSWdX1ua23fGG6dSp8O3PU=; b=RU2M4W1h+NzCS1cu4yLzN7gJ35M8PEZfpwbp/6nnzjcrEFjvJvv/3HqjJrdWY+aHY2 T8Qa3WkiiMGBqFQy/O/ltm84a0wxIkH8scMATIaD24g7MbGhVr611savks+pUVo5MRVt b8+S/djtEdoVTiMEkEX2hXBKvXyP+obogNzz+oo3KoIVFtVQIHN6+o53AAuSMPtQ+ZmF 9zOGsvTNQ7gbpjBE+LZrYoHrb3nUg0d6YIvaBd42LfcdPZg65sEKGLHEUVUUQG2iN8xe qWPVSsmFHAVSqL7p2H0k6laeKlbWxhsLYifcsT4PFji8rhiDeZnUmZWUZxcohknZt3/8 5hJA== X-Gm-Message-State: AD7BkJLTB1oz9kDZVryaBnJnpn2KrNig8arp925K09Byg0rPOfpbdXBC2c9PO0tD8UQHybUlKE2FIk90OGiK7Ys5 X-Received: by 10.28.24.80 with SMTP id 77mr26265859wmy.16.1458747917903; Wed, 23 Mar 2016 08:45:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.55.74 with HTTP; Wed, 23 Mar 2016 08:44:48 -0700 (PDT) In-Reply-To: References: From: Surinder Kumar Date: Wed, 23 Mar 2016 21:14:48 +0530 Message-ID: Subject: Re: [pgAdmin4] PATCH: View and Role Node To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1146911076fbfb052eb937cf X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1146911076fbfb052eb937cf Content-Type: multipart/alternative; boundary=001a1146911076fbf6052eb937cd --001a1146911076fbf6052eb937cd Content-Type: text/plain; charset=UTF-8 This patch contains following nodes: 1. View Node 2. Materialized View Node This patch depends on couple of patches: 1. Control for displaying "auto vacuum" fields into grid 2. Tables sub node patch. First apply these two patches then apply patch this patch. Please review the patch. On Tue, Mar 1, 2016 at 10:42 PM, Dave Page wrote: > Sorry - I believe this is it (I had to rescue it from the trash). > > On Tue, Mar 1, 2016 at 5:16 AM, Surinder Kumar > wrote: > > Dave you forgot to attach patch. Can you please attach it ? > > > > On Thu, Feb 25, 2016 at 4:33 PM, Dave Page wrote: > >> > >> Hi > >> > >> On Wed, Feb 24, 2016 at 1:31 PM, Surinder Kumar > >> wrote: > >>> > >>> Hi, > >>> > >>> Please find the updated patch with following changes: > >>> > >>> 1. Integrated dependents and dependency tabs with view and rule node. > >>> 2. Added "Create Rule" option for Table node. > >>> 3. Added node_inode property for rule node as it has no child node. > >>> 4. Improved javascript code commenting and added pydoc in python files. > >>> 5. Name column under dependents tab showing wrong name for rule node > >>> due to typo mistake, It is fixed. > >>> > >>> Please review it and Let me know for any comments. > >> > >> > >> Please find an updated patch attached, in which I tweaked some comments > >> and fixed a few minor issues as I reviewed the code. The following > issues > >> need to be addressed please, then I'll take another look: > >> > >> - Don't show the definition SQL in the main properties tab. > Done > >> > >> - Check Options is missing from the properties tab. > Added > >> > >> - Views were made function in PostgreSQL v6.4! Why only load the module > >> for 9.1+? > Fixed > >> > >> - The TRUNCATE ACL flag is not recognised, leading to ACLs being shown > as: > >> arwdUNKNOWNxt > Fixed > >> > >> - 4 character indents are not applied consistently to SQL templates > Done > >> > >> - Why do servers pre-9.3 have VACUUM options in the SQL templates? > Done > >> > >> - There should be no special casing of Slony schemas > (backend_support.sql) > Done > >> > >> - Don't include \'s on line ends of multiline comments or docstrings. > Done > >> > >> - I can't create a Materialised View > This patch contains materialized view now > >> > >> On the dialogs: > >> > >> - The "Definition" input box should have a border. > Fixed > >> > >> - The "Definition" input box fill the vertical space assigned to it, > >> such that the border on the left runs top to bottom (see the main SQL > tab). > Fixed > >> > >> - The "Definition" input box should be displayed below the label at > all > >> times (unlike other controls), to maximise available space > Fixed > >> > >> - The SQL tab view is broken for views (tested on PG 9.4), likely due to > >> the TRUNCATE ACL issue: > >> > >> 2016-02-25 10:59:00,118: INFO werkzeug: 127.0.0.1 - - [25/Feb/2016 > >> 10:59:00] "GET /browser/view/sql/1/1/24587/27424/27555 HTTP/1.1" 500 - > >> Traceback (most recent call last): > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1836, in __call__ > >> return self.wsgi_app(environ, start_response) > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1820, in wsgi_app > >> response = self.make_response(self.handle_exception(e)) > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1403, in handle_exception > >> reraise(exc_type, exc_value, tb) > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1817, in wsgi_app > >> response = self.full_dispatch_request() > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1477, in full_dispatch_request > >> rv = self.handle_user_exception(e) > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1381, in handle_user_exception > >> reraise(exc_type, exc_value, tb) > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1475, in full_dispatch_request > >> rv = self.dispatch_request() > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > >> line 1461, in dispatch_request > >> return self.view_functions[rule.endpoint](**req.view_args) > >> File > >> > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/views.py", > >> line 84, in view > >> return self.dispatch_request(*args, **kwargs) > >> File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/utils.py", line > 248, > >> in dispatch_request > >> return method(*args, **kwargs) > >> File > >> > "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py", > >> line 242, in wrap > >> return f(*args, **kwargs) > >> File > >> > "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py", > >> line 646, in sql > >> result['datacl'] = self.parse_privileges(result['datacl']) > >> File > >> > "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/databases/schemas/views/__init__.py", > >> line 540, in parse_privileges > >> db_privileges[privilege['privilege_type']]) > >> KeyError: 'UNKNOWN' > >> > Done > >> > >> Thanks! > >> > >> -- > >> Dave Page > >> Blog: http://pgsnake.blogspot.com > >> Twitter: @pgsnake > >> > >> EnterpriseDB UK: http://www.enterprisedb.com > >> The Enterprise PostgreSQL Company > > > > > > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a1146911076fbf6052eb937cd Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

This patch contains following nodes:
1.= View Node
2. Materialized View Node

This patch depends on couple of pa= tches:
1.=C2=A0Control for displaying "= ;auto vacuum" fields into grid
2. Tabl= es sub node patch.

First apply these two patches then apply patch this patch.

Please re= view the patch.
=C2=A0
On Tue, Mar 1, 2016 at 10:42 PM, Dave Page <= dpage@pgadmin.org> wrote:
Sorry - I believe this is it (I had= to rescue it from the trash).

On Tue, Mar 1, 2016 at 5:16 AM, Surinder Kumar
<
su= rinder.kumar@enterprisedb.com> wrote:
> Dave you forgot to attach patch. Can you please attach it ?
>
> On Thu, Feb 25, 2016 at 4:33 PM, Dave Page <dpage@pgadmin.org> wrote:
>>
>> Hi
>>
>> On Wed, Feb 24, 2016 at 1:31 PM, Surinder Kumar
>> <surinder.kumar@enterprisedb.com> wrote:
>>>
>>> Hi,
>>>
>>> Please find the updated patch with following changes:
>>>
>>> 1. Integrated dependents and dependency tabs with view and rul= e node.
>>> 2. Added "Create Rule" option for Table node.
>>> 3. Added node_inode property for rule node as it has no child = node.
>>> 4. Improved javascript code commenting and added pydoc in pyth= on files.
>>> 5. Name column under dependents tab showing wrong name=C2=A0 f= or rule node
>>> due to typo mistake, It is fixed.
>>>
>>> Please review it and Let me know for any comments.
>>
>>
>> Please find an updated patch attached, in which I tweaked some com= ments
>> and fixed a few minor issues as I reviewed the code. The following= issues
>> need to be addressed please, then I'll take another look:
>>
>> - Don't show the definition SQL in the main properties tab.
Done=C2=A0
>>
>> - Check Options is missing from the properties tab.
Added=C2=A0
>>
>> - Views were made function in PostgreSQL v6.4! Why only load the m= odule
>> for 9.1+?
Fixed=C2=A0
>>
>> - The TRUNCATE ACL flag is not recognised, leading to ACLs being s= hown as:
>> arwdUNKNOWNxt
Fixed=C2=A0
>>
>> - 4 character indents are not applied consistently to SQL template= s
Done=C2=A0
>>
>> - Why do servers pre-9.3 have VACUUM options in the SQL templates?=
Done=C2=A0
>>
>> - There should be no special casing of Slony schemas (backend_supp= ort.sql)
Done=C2=A0
=
>>
>> - Don't include \'s on line ends of multiline comments or = docstrings.
Done=C2=A0
>>
>> - I can't create a Materialised View
This patch contains materialized view now
>>
>> On the dialogs:
>>
>>=C2=A0 =C2=A0- The "Definition" input box should have a b= order.
Fixed=C2=A0
=
>>
>>=C2=A0 =C2=A0- The "Definition" input box fill the vertic= al space assigned to it,
>> such that the border on the left runs top to bottom (see the main = SQL tab).
Fixed=C2=A0
>>
>>=C2=A0 =C2=A0- The "Definition" input box should be displ= ayed below the label at all
>> times (unlike other controls), to maximise available space
Fixed=C2=A0
>>
>> - The SQL tab view is broken for views (tested on PG 9.4), likely = due to
>> the TRUNCATE ACL issue:
>>
>> 2016-02-25 10:59:00,118: INFO werkzeug: 127.0.0.1 - - [25/Feb/2016=
>> 10:59:00] "GET /browser/view/sql/1/1/24587/27424/27555 HTTP/1= .1" 500 -
>> Traceback (most recent call last):
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1836, in __call__
>>=C2=A0 =C2=A0 =C2=A0return self.wsgi_app(environ, start_response) >>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1820, in wsgi_app
>>=C2=A0 =C2=A0 =C2=A0response =3D self.make_response(self.handle_exc= eption(e))
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1403, in handle_exception
>>=C2=A0 =C2=A0 =C2=A0reraise(exc_type, exc_value, tb)
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1817, in wsgi_app
>>=C2=A0 =C2=A0 =C2=A0response =3D self.full_dispatch_request()
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1477, in full_dispatch_request
>>=C2=A0 =C2=A0 =C2=A0rv =3D self.handle_user_exception(e)
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1381, in handle_user_exception
>>=C2=A0 =C2=A0 =C2=A0reraise(exc_type, exc_value, tb)
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1475, in full_dispatch_request
>>=C2=A0 =C2=A0 =C2=A0rv =3D self.dispatch_request()
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/app.py",
>> line 1461, in dispatch_request
>>=C2=A0 =C2=A0 =C2=A0return self.view_functions[rule.endpoint](**req= .view_args)
>>=C2=A0 =C2=A0File
>> "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packag= es/flask/views.py",
>> line 84, in view
>>=C2=A0 =C2=A0 =C2=A0return self.dispatch_request(*args, **kwargs) >>=C2=A0 =C2=A0File "/Users/dpage/git/pgadmin4/web/pgadmin/brows= er/utils.py", line 248,
>> in dispatch_request
>>=C2=A0 =C2=A0 =C2=A0return method(*args, **kwargs)
>>=C2=A0 =C2=A0File
>> "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/= servers/databases/schemas/views/__init__.py",
>> line 242, in wrap
>>=C2=A0 =C2=A0 =C2=A0return f(*args, **kwargs)
>>=C2=A0 =C2=A0File
>> "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/= servers/databases/schemas/views/__init__.py",
>> line 646, in sql
>>=C2=A0 =C2=A0 =C2=A0result['datacl'] =3D self.parse_privile= ges(result['datacl'])
>>=C2=A0 =C2=A0File
>> "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/= servers/databases/schemas/views/__init__.py",
>> line 540, in parse_privileges
>>=C2=A0 =C2=A0 =C2=A0db_privileges[privilege['privilege_type'= ;]])
>> KeyError: 'UNKNOWN'
>>
Done=C2=A0
=
>>
>> Thanks!
>>
>> --
>> Dave Page
>> Blog: http://pgsnake.blogspot.com
>> Twitter: @pgsnake
>>
>> EnterpriseDB UK: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>
>



--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--001a1146911076fbf6052eb937cd-- --001a1146911076fbfb052eb937cf Content-Type: application/octet-stream; name="view_material_view_node_patch_v3.patch" Content-Disposition: attachment; filename="view_material_view_node_patch_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_im5010xw1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL19faW5pdF9fLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvX19pbml0X18ucHkKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGViZjVjMwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL19faW5pdF9fLnB5CkBA IC0wLDAgKzEsMTMyNyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBWaWV3IGFuZCBNYXRlcmlh bGl6ZWQgVmlldyBOb2RlIiIiCisKK2ltcG9ydCBqc29uCitmcm9tIGZsYXNr IGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3QsIGpzb25pZnkKK2Zy b20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRt aW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisg ICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IsIFwKKyAgICBiYWRfcmVxdWVzdAorZnJvbSBwZ2FkbWlu LmJyb3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworaW1wb3J0 IHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMgYXMgc2Vy dmVycworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnV0aWxzIGltcG9ydCBcCisgICAgU2No ZW1hQ2hpbGRNb2R1bGUsIHBhcnNlX3J1bGVfZGVmaW5pdGlvbgorZnJvbSBw Z2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IHByZWNvbmRpdGlvbl9yZXF1aXJl ZAorZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZlciBpbXBvcnQgZ2V0X2RyaXZl cgorZnJvbSBjb25maWcgaW1wb3J0IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9t IGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCisiIiIKKyAgICBUaGlzIG1v ZHVsZSBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0d28gbm9kZXMK KyAgICAxKSBWaWV3CisgICAgMikgTWF0ZXJpYWxpemVkIFZpZXcKKworICAg IFdlIGhhdmUgY3JlYXRlZCBzaW5nbGUgZmlsZSBiZWNhdXNlIHZpZXcgJiBt YXRlcmlhbCB2aWV3IGhhcyBzYW1lCisgICAgZnVuY3Rpb25hbGl0eS4gSXQg YWxsb3dzIHVzIHRvIHNoYXJlIHRoZSBzYW1lIHN1Ym1vZHVsZXMgZm9yIGJv dGgKKyAgICB2aWV3LCBhbmQgbWF0ZXJpYWwgdmlldyBtb2R1bGVzLgorCisg ICAgVGhpcyBtb2R1bGVzIHVzZXMgc2VwYXJhdGUgdGVtcGxhdGUgcGF0aHMg Zm9yIGVhY2ggcmVzcGVjdGl2ZSBub2RlCisgICAgLSB0ZW1wbGF0ZXMvdmll dyBmb3IgVmlldyBub2RlCisgICAgLSB0ZW1wbGF0ZXMvbWF0ZXJpYWxpemVk X3ZpZXcgZm9yIE1hdGVyaWFsaXplZFZpZXcgbm9kZQorCisgICAgW0VhY2gg cGF0aCBjb250YWlucyBub2RlIHNwZWNpZmljIGpzIGZpbGVzIGFzIHdlbGwg YXMgc3FsIHRlbXBsYXRlIGZpbGVzLl0KKyIiIgorCisKK2NsYXNzIFZpZXdN b2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNz IFZpZXdNb2R1bGUoU2NoZW1hQ2hpbGRNb2R1bGUpOgorCisgICAgICAgIEEg bW9kdWxlIGNsYXNzIGZvciBWaWV3IG5vZGUgZGVyaXZlZCBmcm9tIFNjaGVt YUNoaWxkTW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisg ICAgKiBfX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhv ZCBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIFZpZXcgYW5kIGl0J3MgYmFz ZSBtb2R1bGUuCisKKyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkLCBz Y2lkKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUg YnJvd3NlciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUo KQorICAgICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBmcm9tIGl0cyBiYXNl IGNsYXNzIHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2RlLgorCisgICAg KiBzY3JpcHRfbG9hZCgpCisgICAgICAtIExvYWQgdGhlIG1vZHVsZSBzY3Jp cHQgZm9yIFZpZXcsIHdoZW4gYW55IG9mIHRoZSBzZXJ2ZXIgbm9kZSBpcwor ICAgICAgICBpbml0aWFsaXplZC4KKyAgICAiIiIKKyAgICBOT0RFX1RZUEUg PSAndmlldycKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiVmll d3MiKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJn cyk6CisgICAgICAgICIiIgorICAgICAgICBNZXRob2QgaXMgdXNlZCB0byBp bml0aWFsaXplIHRoZSBWaWV3TW9kdWxlIGFuZCBpdCdzIGJhc2UgbW9kdWxl LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqYXJnczoKKyAgICAg ICAgICAgICoqa3dhcmdzOgorICAgICAgICAiIiIKKyAgICAgICAgc3VwZXIo Vmlld01vZHVsZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQor ICAgICAgICBzZWxmLm1pbl92ZXIgPSBOb25lCisgICAgICAgIHNlbGYubWF4 X3ZlciA9IE5vbmUKKworICAgIGRlZiBnZXRfbm9kZXMoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmF0 ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgICIiIgorICAgICAgICB5 aWVsZCBzZWxmLmdlbmVyYXRlX2Jyb3dzZXJfY29sbGVjdGlvbl9ub2RlKHNj aWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2Vs Zik6CisgICAgICAgICIiIgorICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2Ny aXB0IGZvciB2aWV3cywgd2hlbiBhbnkgZGF0YWJhc2Ugbm9kZSBpcworICAg ICAgICBpbml0aWFsaXplZCwgYXMgdmlld3MgYXJlIHVuZGVyIHNjaGVtYXMu CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VydmVycy5TZXJ2ZXJN b2R1bGUuTk9ERV9UWVBFCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY3Nz c25pcHBldHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IGEgc25pcHBldCBvZiBjc3MgdG8gaW5jbHVkZSBpbiB0aGUgcGFnZQorICAg ICAgICAiIiIKKyAgICAgICAgc25pcHBldHMgPSBbCisgICAgICAgICAgICAg ICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAiYnJv d3Nlci9jc3MvY29sbGVjdGlvbi5jc3MiLAorICAgICAgICAgICAgICAgICAg ICBub2RlX3R5cGU9c2VsZi5ub2RlX3R5cGUsCisgICAgICAgICAgICAgICAg ICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgICAgICAgICApLAorICAgICAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAg ICAgInZpZXcvY3NzL3ZpZXcuY3NzIiwKKyAgICAgICAgICAgICAgICAgICAg bm9kZV90eXBlPXNlbGYubm9kZV90eXBlLAorICAgICAgICAgICAgICAgICAg ICBfPWdldHRleHQKKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgICAg ICJtYXRlcmlhbGl6ZWRfdmlldy9jc3MvbWF0ZXJpYWxpemVkX3ZpZXcuY3Nz IiwKKyAgICAgICAgICAgICAgICAgICAgbm9kZV90eXBlPSdtYXRlcmlhbGl6 ZWRfdmlldycsCisgICAgICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAg ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgXQorCisgICAg ICAgIGZvciBzdWJtb2R1bGUgaW4gc2VsZi5zdWJtb2R1bGVzOgorICAgICAg ICAgICAgc25pcHBldHMuZXh0ZW5kKHN1Ym1vZHVsZS5jc3NzbmlwcGV0cykK KworICAgICAgICByZXR1cm4gc25pcHBldHMKKworCitjbGFzcyBNYXRlcmlh bGl6ZWRWaWV3TW9kdWxlKFZpZXdNb2R1bGUpOgorICAgICIiIgorICAgICBj bGFzcyBNYXRlcmlhbGl6ZWRWaWV3TW9kdWxlKFZpZXdNb2R1bGUpCisgICAg ICAgIEEgbW9kdWxlIGNsYXNzIGZvciB0aGUgbWF0ZXJpYWxpemVkIHZpZXcg YW5kIHZpZXcgbm9kZSBkZXJpdmVkCisgICAgICAgIGZyb20gVmlld01vZHVs ZS4KKyAgICAiIiIKKworICAgIE5PREVfVFlQRSA9ICdtYXRlcmlhbGl6ZWRf dmlldycKKyAgICBDT0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiTWF0ZXJp YWxpemVkIFZpZXdzIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJn cywgKiprd2FyZ3MpOgorICAgICAgICAiIiIKKyAgICAgICAgTWV0aG9kIGlz IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTWF0ZXJpYWxpemVkVmlld01vZHVs ZSBhbmQKKyAgICAgICAgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICAgICBB cmdzOgorICAgICAgICAgICAgKmFyZ3M6CisgICAgICAgICAgICAqKmt3YXJn czoKKyAgICAgICAgIiIiCisgICAgICAgIHN1cGVyKE1hdGVyaWFsaXplZFZp ZXdNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKyAg ICAgICAgc2VsZi5taW5fdmVyID0gOTAzMDAKKyAgICAgICAgc2VsZi5tYXhf dmVyID0gTm9uZQorCit2aWV3X2JsdWVwcmludCA9IFZpZXdNb2R1bGUoX19u YW1lX18pCittYXRlcmlhbGl6ZWRfdmlld19ibHVlcHJpbnQgPSBNYXRlcmlh bGl6ZWRWaWV3TW9kdWxlKAorICAgICAgICBfX25hbWVfXykKKworCitkZWYg Y2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICIiIgorICAgIFRoaXMgZnVu Y3Rpb24gd2lsbCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBj aGVja3MKKyAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5n IHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgIG1hbmFnZXIsY29u biAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBpbnN0YW5jZSBvZiB0 aGUgbWV0aG9kLgorCisgICAgQXNzdW1wdGlvbnM6CisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBhbHdheXMgYmUgdXNlZCBhcyBkZWNvcmF0b3Igb2Yg YSBjbGFzcyBtZXRob2QuCisgICAgIiIiCisgICAgQHdyYXBzKGYpCisgICAg ZGVmIHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKworICAgICAgICAjIEhlcmUg YXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lk LHNpZCxkaWQKKyAgICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAgICAgc2Vs Zi5tYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29u bmVjdGlvbl9tYW5hZ2VyKAorICAgICAgICAgICAga3dhcmdzWydzaWQnXQor ICAgICAgICApCisgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5j b25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorICAgICAgICAjIElmIERC IG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1cm4gZXJyb3IgdG8gYnJvd3Nlcgor ICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgorICAgICAg ICAgICAgcmV0dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAg ICAgICAgICBnZXR0ZXh0KCJDb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFz IGJlZW4gbG9zdCEiKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmRh dGxhc3RzeXNvaWQgPSBzZWxmLm1hbmFnZXIuZGJfaW5mb1sKKyAgICAgICAg ICAgICAgICBrd2FyZ3NbJ2RpZCddXVsnZGF0bGFzdHN5c29pZCddCisKKyAg ICAgICAgIyBTZXQgdGVtcGxhdGUgcGF0aCBmb3Igc3FsIHNjcmlwdHMKKyAg ICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gc2VsZi50ZW1wbGF0ZV9pbml0 aWFsICsgJy8nICsgKAorICAgICAgICAgICAgc2VsZi5wcGFzX3RlbXBsYXRl X3BhdGgoc2VsZi5tYW5hZ2VyLnZlcnNpb24pCisgICAgICAgICAgICBpZiBz ZWxmLm1hbmFnZXIuc2VydmVyX3R5cGUgPT0gJ3BwYXMnIGVsc2UKKyAgICAg ICAgICAgIHNlbGYucGdfdGVtcGxhdGVfcGF0aChzZWxmLm1hbmFnZXIudmVy c2lvbikKKyAgICAgICAgICAgICkKKworICAgICAgICByZXR1cm4gZigqYXJn cywgKiprd2FyZ3MpCisKKyAgICByZXR1cm4gd3JhcAorCisKK2NsYXNzIFZp ZXdOb2RlKFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisgICAgVGhpcyBj bGFzcyBpcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyByb3V0ZXMgZm9y IHZpZXcgbm9kZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAg ICogX19pbml0X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2Vk IHRvIGluaXRpYWxpemUgdGhlIFZpZXdOb2RlIGFuZCBpdCdzIGJhc2Ugdmll dy4KKworICAgICogbW9kdWxlX2pzKCkKKyAgICAgIC0gUmVxdWVzdCBoYW5k bGVyIGZvciBtb2R1bGUuanMgcm91dGVzIGZvciB0aGUgdmlldyBub2RlIG1v ZHVsZQorICAgICAgamF2YXNjcmlwdCwgd2hpY2ggcmV0dXJucyBqYXZzY3Jp cHQgZm9yIHRoaXMgbW9kdWxlLgorCisgICAgKiBsaXN0KCkKKyAgICAgIC0g VGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGxpc3QgYWxsIHRoZSB2aWV3IG5v ZGVzIHdpdGhpbiB0aGUKKyAgICAgIGNvbGxlY3Rpb24uCisKKyAgICAqIG5v ZGVzKCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVzZWQgdG8gY3Jl YXRlIGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gdGhlCisgICAgICAgIGNv bGxlY3Rpb24sIEhlcmUgaXQgd2lsbCBjcmVhdGUgYWxsIHRoZSB2aWV3IG5v ZGUuCisKKyAgICAqIHByb3BlcnRpZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCkK KyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRp ZXMgb2YgdGhlIHNlbGVjdGVkIHZpZXcgbm9kZS4KKworICAgICogY3JlYXRl KGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24g d2lsbCBjcmVhdGUgdGhlIG5ldyB2aWV3IG9iamVjdC4KKworICAgICogdXBk YXRlKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCB1cGRhdGUgdGhlIGRhdGEgZm9yIHRoZSBzZWxlY3RlZCB2aWV3 IG5vZGUuCisKKyAgICAqIGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgc2NpZCk6 CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBkcm9wIHRoZSB2aWV3IG9i amVjdAorCisgICAgKiBtc3FsKGdpZCwgc2lkLCBkaWQsIHNjaWQpCisgICAg ICAtIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQg U1FMIGZvciB0aGUgc2VsZWN0ZWQgdmlldworICAgICAgICBub2RlLgorCisg ICAgKiBnZXRfc3FsKGRhdGEsIHNjaWQpCisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisKKyAgICAq IHNxbChnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGdlbmVyYXRlIHNxbCB0byBzaG93IGl0IGluIHNxbCBwYW5l IGZvciB0aGUgdmlldworICAgICAgICBub2RlLgorCisgICAgKiBkZXBlbmRl bmN5KGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgZ2VuZXJhdGUgZGVwZW5kZW5jeSBsaXN0IHNob3cgaXQgaW4g ZGVwZW5kZW5jeQorICAgICAgICBwYW5lIGZvciB0aGUgc2VsZWN0ZWQgdmll dyBub2RlLgorCisgICAgKiBkZXBlbmRlbnQoZ2lkLCBzaWQsIGRpZCwgc2Np ZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBkZXBl bmRlbnQgbGlzdCB0byBzaG93IGl0IGluIGRlcGVuZGVudAorICAgICAgICBw YW5lIGZvciB0aGUgc2VsZWN0ZWQgdmlldyBub2RlLgorICAgICIiIgorICAg IG5vZGVfdHlwZSA9IHZpZXdfYmx1ZXByaW50Lm5vZGVfdHlwZQorCisgICAg cGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAn aWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lk JzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6 ICdkaWQnfSwKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAn c2NpZCd9CisgICAgICAgICAgICBdCisgICAgaWRzID0gWworICAgICAgICAg ICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICd2aWQnfQorICAgICAgICAgICAg XQorCisgICAgb3BlcmF0aW9ucyA9IGRpY3QoeworICAgICAgICAnb2JqJzog WworICAgICAgICAgICAgeydnZXQnOiAncHJvcGVydGllcycsICdkZWxldGUn OiAnZGVsZXRlJywgJ3B1dCc6ICd1cGRhdGUnfSwKKyAgICAgICAgICAgIHsn Z2V0JzogJ2xpc3QnLCAncG9zdCc6ICdjcmVhdGUnfQorICAgICAgICBdLAor ICAgICAgICAnY2hpbGRyZW4nOiBbeworICAgICAgICAgICAgJ2dldCc6ICdj aGlsZHJlbicKKyAgICAgICAgfV0sCisgICAgICAgICdkZWxldGUnOiBbeydk ZWxldGUnOiAnZGVsZXRlJ31dLAorICAgICAgICAnbm9kZXMnOiBbeydnZXQn OiAnbm9kZSd9LCB7J2dldCc6ICdub2Rlcyd9XSwKKyAgICAgICAgJ3NxbCc6 IFt7J2dldCc6ICdzcWwnfV0sCisgICAgICAgICdtc3FsJzogW3snZ2V0Jzog J21zcWwnfSwgeydnZXQnOiAnbXNxbCd9XSwKKyAgICAgICAgJ3N0YXRzJzog W3snZ2V0JzogJ3N0YXRpc3RpY3MnfV0sCisgICAgICAgICdkZXBlbmRlbmN5 JzogW3snZ2V0JzogJ2RlcGVuZGVuY2llcyd9XSwKKyAgICAgICAgJ2RlcGVu ZGVudCc6IFt7J2dldCc6ICdkZXBlbmRlbnRzJ31dLAorICAgICAgICAnbW9k dWxlLmpzJzogW3t9LCB7fSwgeydnZXQnOiAnbW9kdWxlX2pzJ31dLAorICAg ICAgICAnY29uZmlncyc6IFt7J2dldCc6ICdjb25maWdzJ31dLAorICAgICAg ICAnZ2V0X3RibHNwYyc6IFt7J2dldCc6ICdnZXRfdGJsc3BjJ30sIHsnZ2V0 JzogJ2dldF90YmxzcGMnfV0sCisgICAgICAgICdnZXRfdmFjdXVtX2RlZmF1 bHRzJzogWworICAgICAgICAgIHsnZ2V0JzogJ2dldF92YWN1dW1fZGVmYXVs dHMnfSwKKyAgICAgICAgICB7J2dldCc6ICdnZXRfdmFjdXVtX2RlZmF1bHRz J31dLAorICAgICAgICAnZ2V0X3ZhY3V1bV90b2FzdF9kZWZhdWx0cyc6IFsK KyAgICAgICAgICB7J2dldCc6ICdnZXRfdmFjdXVtX3RvYXN0X2RlZmF1bHRz J30sCisgICAgICAgICAgeydnZXQnOiAnZ2V0X3ZhY3V1bV90b2FzdF9kZWZh dWx0cyd9XQorICAgIH0pCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy Z3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIEluaXRpYWxp emUgdGhlIHZhcmlhYmxlcyB1c2VkIGJ5IG1ldGhvZHMgb2YgVmlld05vZGUu CisgICAgICAgICIiIgorCisgICAgICAgIHN1cGVyKFZpZXdOb2RlLCBzZWxm KS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5t YW5hZ2VyID0gTm9uZQorICAgICAgICBzZWxmLmNvbm4gPSBOb25lCisgICAg ICAgIHNlbGYudGVtcGxhdGVfcGF0aCA9IE5vbmUKKyAgICAgICAgc2VsZi50 ZW1wbGF0ZV9pbml0aWFsID0gJ3ZpZXcnCisKKyAgICBAc3RhdGljbWV0aG9k CisgICAgZGVmIHBwYXNfdGVtcGxhdGVfcGF0aCh2ZXIpOgorICAgICAgICAi IiIKKyAgICAgICAgUmV0dXJucyB0aGUgdGVtcGxhdGUgcGF0aCBmb3IgUFBB UyBzZXJ2ZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuICdwcGFz LzkuM19wbHVzJworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwZ190 ZW1wbGF0ZV9wYXRoKHZlcik6CisgICAgICAgICIiIgorICAgICAgICBSZXR1 cm5zIHRoZSB0ZW1wbGF0ZSBwYXRoIGZvciBQb3N0Z3JlU1FMIHNlcnZlcnMu CisgICAgICAgICIiIgorICAgICAgICBpZiB2ZXIgPj0gOTA0MDA6CisgICAg ICAgICAgICByZXR1cm4gJ3BnLzkuNF9wbHVzJworICAgICAgICBlbGlmIHZl ciA+PSA5MDMwMDoKKyAgICAgICAgICAgIHJldHVybiAncGcvOS4zX3BsdXMn CisgICAgICAgIGVsaWYgdmVyID49IDkwMjAwOgorICAgICAgICAgICAgcmV0 dXJuICdwZy85LjJfcGx1cycKKyAgICAgICAgZWxpZiB2ZXIgPj0gOTAxMDA6 CisgICAgICAgICAgICByZXR1cm4gJ3BnLzkuMV9wbHVzJworICAgICAgICBy ZXR1cm4gJ3BnLzkuMV9wbHVzJworCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBsaXN0KHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgRmV0Y2hlcyBhbGwgdmlld3MgcHJvcGVy dGllcyBhbmQgcmVuZGVyIGludG8gcHJvcGVydGllcyB0YWIKKyAgICAgICAg IiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigK KyAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL3Byb3BlcnRp ZXMuc3FsJ10pLCBzY2lkPXNjaWQpCisgICAgICAgIHN0YXR1cywgcmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAg KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2Rlcyhz ZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAg ICAgIExpc3RzIGFsbCB2aWV3cyB1bmRlciB0aGUgVmlld3MgQ29sbGVjdGlv biBub2RlCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBbXQorICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAg W3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC9wcm9wZXJ0aWVzLnNxbCddKSwg c2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3Mn XToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAg ICAgIHNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJvd1snb2lkJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg cm93WyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBpY29uPSJp Y29uLXZpZXciCisgICAgICAgICAgICAgICAgICAgICkpCisKKyAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBk YXRhPXJlcywKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICAgICAgICAgKQorCisgICAgZGVmIHBhcnNlX3ZpZXdzX3ByaXZpbGVnZXMo c2VsZiwgZGJfcHJpdmlsZWdlcyk6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIGZvcm1zIGEgc2VwYXJhdGUgbGlzdCBvZiBncmFudGFi bGUKKyAgICAgICAgYW5kIG5vbiBncmFudGFibGUgcHJpdmlsZWdlcy4KKyAg ICAgICAgIiIiCisgICAgICAgIGFjbCA9IHsnZ3JhbnRvcic6IGRiX3ByaXZp bGVnZXNbJ2dyYW50b3InXSwKKyAgICAgICAgICAgICAgICdncmFudGVlJzog ZGJfcHJpdmlsZWdlc1snZ3JhbnRlZSddLAorICAgICAgICAgICAgICAgJ3By aXZpbGVnZXMnOiBbXQorICAgICAgICAgICAgICAgfQorCisgICAgICAgIHBy aXZpbGVnZXMgPSBbXQorICAgICAgICBmb3IgaWR4LCBwcml2IGluIGVudW1l cmF0ZShkYl9wcml2aWxlZ2VzWydwcml2aWxlZ2VzJ10pOgorICAgICAgICAg ICAgaWYgZGJfcHJpdmlsZWdlc1snZ3JhbnRhYmxlJ11baWR4XToKKyAgICAg ICAgICAgICAgICBwcml2aWxlZ2VzLmFwcGVuZCh7InByaXZpbGVnZV90eXBl IjogcHJpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg InByaXZpbGVnZSI6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ3aXRoX2dyYW50IjogVHJ1ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBwcml2aWxlZ2VzLmFwcGVuZCh7InByaXZpbGVnZV90 eXBlIjogcHJpdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInByaXZpbGVnZSI6IFRydWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ3aXRoX2dyYW50IjogRmFsc2UKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfSkKKworICAgICAgICBhY2xbJ3By aXZpbGVnZXMnXSA9IHByaXZpbGVnZXMKKworICAgICAgICByZXR1cm4gYWNs CisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHByb3BlcnRp ZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdmlkKToKKyAgICAgICAg IiIiCisgICAgICAgIEZldGNoZXMgdGhlIHByb3BlcnRpZXMgb2YgYW4gaW5k aXZpZHVhbCB2aWV3CisgICAgICAgIGFuZCByZW5kZXIgaW4gdGhlIHByb3Bl cnRpZXMgdGFiCisgICAgICAgICIiIgorICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnc3FsL3Byb3BlcnRpZXMuc3FsJ10KKyAgICAgICAgICApLCB2 aWQ9dmlkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFzdHN5c29pZCkKKyAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNR TCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAg ICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2FjbC5zcWwnXSksIHZpZD12 aWQpCisgICAgICAgIHN0YXR1cywgZGF0YWNscmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICBmb3Igcm93IGluIGRhdGFjbHJlc1sncm93cydd OgorICAgICAgICAgICAgcHJpdiA9IHNlbGYucGFyc2Vfdmlld3NfcHJpdmls ZWdlcyhyb3cpCisgICAgICAgICAgICBpZiByb3dbJ2RlZnR5cGUnXSBpbiBy ZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICByZXNbJ3Jvd3MnXVsw XVtyb3dbJ2RlZnR5cGUnXV0uYXBwZW5kKHByaXYpCisgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgIHJlc1sncm93cyddWzBdW3Jvd1snZGVm dHlwZSddXSA9IFtwcml2XQorCisgICAgICAgIHJlc3VsdCA9IHJlc1sncm93 cyddWzBdCisKKyAgICAgICAgIyBzZW5kaW5nIHJlc3VsdCB0byBmb3JtdHRl cgorICAgICAgICBmcm10ZF9yZXNsdCA9IHNlbGYuZm9ybWF0dGVyKHJlc3Vs dCkKKworICAgICAgICAjIG1lcmdpbmcgZm9ybWF0ZWQgcmVzdWx0IHdpdGgg bWFpbiByZXN1bHQgYWdhaW4KKyAgICAgICAgcmVzdWx0LnVwZGF0ZShmcm10 ZF9yZXNsdCkKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICByZXNwb25zZT1yZXN1bHQsCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBzdGF0 aWNtZXRob2QKKyAgICBkZWYgZm9ybWF0dGVyKHJlc3VsdCk6CisgICAgICAg ICIiIiBUaGlzIGZ1bmN0aW9uIGZvcm1hdHMgb3V0cHV0IGZvciBzZWN1cml0 eSBsYWJlbCAmIHZhcmlhYmxlcyIiIgorICAgICAgICBmcm10ZF9yZXN1bHQg PSBkaWN0KCkKKyAgICAgICAgc2VjX2xibHMgPSBbXQorICAgICAgICBpZiAn c2VjbGFiZWxzJyBpbiByZXN1bHQgYW5kIHJlc3VsdFsnc2VjbGFiZWxzJ10g aXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3Igc2VjIGluIHJlc3VsdFsn c2VjbGFiZWxzJ106CisgICAgICAgICAgICAgICAgaW1wb3J0IHJlCisgICAg ICAgICAgICAgICAgc2VjID0gcmUuc2VhcmNoKHInKFtePV0rKT0oLiokKScs IHNlYykKKyAgICAgICAgICAgICAgICBzZWNfbGJscy5hcHBlbmQoeworICAg ICAgICAgICAgICAgICAgICAncHJvdmlkZXInOiBzZWMuZ3JvdXAoMSksCisg ICAgICAgICAgICAgICAgICAgICdzZWN1cml0eV9sYWJlbCc6IHNlYy5ncm91 cCgyKQorICAgICAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIGZybXRk X3Jlc3VsdC51cGRhdGUoeyJzZWNsYWJlbHMiOiBzZWNfbGJsc30pCisgICAg ICAgIHJldHVybiBmcm10ZF9yZXN1bHQKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGNyZWF0ZSBhIG5ldyB2aWV3IG9iamVjdAorICAgICAgICAiIiIKKyAgICAg ICAgcmVxdWlyZWRfYXJncyA9IFsKKyAgICAgICAgICAgICduYW1lJywKKyAg ICAgICAgICAgICdkZWZpbml0aW9uJworICAgICAgICBdCisKKyAgICAgICAg ZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBcCisg ICAgICAgICAgICBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkK KyAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAg ICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0 YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAg ICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBw YXJhbWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgU1FMID0gc2VsZi5nZXRT UUwoZ2lkLCBzaWQsIGRhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkK KyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigK KyAgICAgICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwv dmlld19pZC5zcWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1 cywgdmlld19pZCA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBu b2RlPXNlbGYuYmx1ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAg ICAgICAgICAgICAgICAgIHZpZXdfaWQsCisgICAgICAgICAgICAgICAgICBz Y2lkLAorICAgICAgICAgICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAg ICAgICAgICAgICAgaWNvbj0iaWNvbi12aWV3IgorICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQs IHZpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgdXBkYXRlIGEgdmlldyBvYmplY3QKKyAgICAgICAgIiIiCisgICAgICAg IGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UgXAor ICAgICAgICAgICAganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkp CisgICAgICAgIFNRTCA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lkLCBkYXRhLCB2 aWQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNRTCkKKyAgICAgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgICAgIFNR TCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAg ICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvdmlld19pZC5zcWwnXSks IGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHN0YXR1cywgdmlld19pZCA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICByZXR1 cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXBy aW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAg IHZpZXdfaWQsCisgICAgICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAg ICAgICAgICAgZGF0YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgaWNv bj0iaWNvbi12aWV3IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg ICkKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVs ZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHZpZCk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCBhIHZpZXcg b2JqZWN0CisgICAgICAgICIiIgorCisgICAgICAgICMgQmVsb3cgd2lsbCBk ZWNpZGUgaWYgaXQncyBzaW1wbGUgZHJvcCBvciBkcm9wIHdpdGggY2FzY2Fk ZSBjYWxsCisgICAgICAgIGNhc2NhZGUgPSBUcnVlIGlmIHNlbGYuY21kID09 ICdkZWxldGUnIGVsc2UgRmFsc2UKKworICAgICAgICB0cnk6CisKKyAgICAg ICAgICAgICMgR2V0IG5hbWUgZm9yIHZpZXcgZnJvbSBkaWQKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAg ICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC9kZWxldGUuc3FsJ10p LCB2aWQ9dmlkKQorICAgICAgICAgICAgc3RhdHVzLCByZXNfZGF0YSA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlc19kYXRhKQorCisgICAgICAgICAgICAj IGRyb3AgdmlldworICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnc3FsL2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgbnNwbmFt ZT1yZXNfZGF0YVsncm93cyddWzBdWyduc3BuYW1lJ10sCisgICAgICAgICAg ICAgICAgbmFtZT1yZXNfZGF0YVsncm93cyddWzBdWyduYW1lJ10sIGNhc2Nh ZGU9Y2FzY2FkZQorICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRl eHQoIlZpZXcgZHJvcHBlZCIpLAorICAgICAgICAgICAgICAgIGRhdGE9ewor ICAgICAgICAgICAgICAgICAgICAnaWQnOiB2aWQsCisgICAgICAgICAgICAg ICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICdnaWQn OiBnaWQsCisgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIG1zcWwoc2VsZiwgZ2lkLCBzaWQsIGRp ZCwgc2NpZCwgdmlkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhp cyBmdW5jdGlvbiByZXR1cm5zIG1vZGlmaWVkIFNRTAorICAgICAgICAiIiIK KyAgICAgICAgZGF0YSA9IHt9CisgICAgICAgIGZvciBrLCB2IGluIHJlcXVl c3QuYXJncy5pdGVtcygpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg ICAgICAgIGRhdGFba10gPSBqc29uLmxvYWRzKHYpCisgICAgICAgICAgICBl eGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBkYXRhW2tdID0g dgorCisgICAgICAgIFNRTCA9IHNlbGYuZ2V0U1FMKGdpZCwgc2lkLCBkYXRh LCB2aWQpCisgICAgICAgIGlmKFNRTCk6CisgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRh PVNRTCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBy ZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAg ICBkYXRhPWdldHRleHQoIi0tIE5vdGhpbmcgY2hhbmdlZCIpLAorICAgICAg ICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAg ICkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcGFyc2VfcHJpdmls ZWdlcyhzdHJfcHJpdmlsZWdlcywgb2JqZWN0X3R5cGU9J1ZJRVcnKToKKyAg ICAgICAgIiIiUGFyc2UgUHJpdmlsZWdlcy4iIiIKKyAgICAgICAgZGJfcHJp dmlsZWdlcyA9IHsKKyAgICAgICAgICAgICdhJzogJ0lOU0VSVCcsCisgICAg ICAgICAgICAncic6ICdTRUxFQ1QnLAorICAgICAgICAgICAgJ3cnOiAnVVBE QVRFJywKKyAgICAgICAgICAgICdkJzogJ0RFTEVURScsCisgICAgICAgICAg ICAnRCc6ICdUUlVOQ0FURScsCisgICAgICAgICAgICAneCc6ICdSRUZFUkVO Q0VTJywKKyAgICAgICAgICAgICd0JzogJ1RSSUdHRVInCisgICAgICAgICAg ICB9CisgICAgICAgIHByaXZpbGVnZXMgPSBbXQorICAgICAgICBmb3IgcHJp diBpbiBzdHJfcHJpdmlsZWdlczoKKyAgICAgICAgICAgIHByaXZfd2l0aF9n cmFudCA9IFtdCisgICAgICAgICAgICBwcml2X3dpdGhvdXRfZ3JhbnQgPSBb XQorICAgICAgICAgICAgZm9yIHByaXZpbGVnZSBpbiBwcml2Wydwcml2aWxl Z2VzJ106CisgICAgICAgICAgICAgICAgaWYgcHJpdmlsZWdlWyd3aXRoX2dy YW50J106CisgICAgICAgICAgICAgICAgICAgIHByaXZfd2l0aF9ncmFudC5h cHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgZGJfcHJpdmlsZWdlc1tw cml2aWxlZ2VbJ3ByaXZpbGVnZV90eXBlJ11dKQorICAgICAgICAgICAgICAg IGVsaWYgcHJpdmlsZWdlWydwcml2aWxlZ2UnXToKKyAgICAgICAgICAgICAg ICAgICAgcHJpdl93aXRob3V0X2dyYW50LmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgICBkYl9wcml2aWxlZ2VzW3ByaXZpbGVnZVsncHJpdmlsZWdl X3R5cGUnXV0pCisKKyAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgYWxs IGFjbCB0aGVuIGp1c3QgcmV0dXJuIGFsbAorICAgICAgICAgICAgICAgIGlm IGxlbihwcml2X3dpdGhfZ3JhbnQpID09IGxlbihkYl9wcml2aWxlZ2VzKToK KyAgICAgICAgICAgICAgICAgICAgcHJpdl93aXRoX2dyYW50ID0gWydBTEwn XQorICAgICAgICAgICAgICAgIGlmIGxlbihwcml2X3dpdGhvdXRfZ3JhbnQp ID09IGxlbihkYl9wcml2aWxlZ2VzKToKKyAgICAgICAgICAgICAgICAgICAg cHJpdl93aXRob3V0X2dyYW50ID0gWydBTEwnXQorCisgICAgICAgICAgICAj IFNlcnZlciBMZXZlbCB2YWxpZGF0aW9uCisgICAgICAgICAgICBpZiAnZ3Jh bnRlZScgaW4gcHJpdjoKKyAgICAgICAgICAgICAgICBwcml2aWxlZ2VzLmFw cGVuZCgKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgJ2dyYW50ZWUnOiBwcml2WydncmFudGVlJ10gaWYgJ2dyYW50ZWUnIGlu IHByaXYgZWxzZSAnJywKKyAgICAgICAgICAgICAgICAgICAgJ3dpdGhfZ3Jh bnQnOiBwcml2X3dpdGhfZ3JhbnQsCisgICAgICAgICAgICAgICAgICAgICd3 aXRob3V0X2dyYW50JzogcHJpdl93aXRob3V0X2dyYW50CisgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAgcmV0dXJu IHByaXZpbGVnZXMKKworICAgIGRlZiBnZXRTUUwoc2VsZiwgZ2lkLCBzaWQs IGRhdGEsIHZpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisg ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB2aWQg aXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3Rl bXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnc3FsL3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgdmlkPXZpZCwKKyAgICAgICAgICAgICAgICAgIGRhdGxh c3RzeXNvaWQ9c2VsZi5kYXRsYXN0c3lzb2lkCisgICAgICAgICAgICAgICAg KQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4 ZWN1dGVfZGljdChTUUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1 czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgICAgICAgICAgb2xkX2Rh dGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICAgICAgaWYgJ25h bWUnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICBkYXRhWydu YW1lJ10gPSByZXNbJ3Jvd3MnXVswXVsnbmFtZSddCisgICAgICAgICAgICAg ICAgaWYgJ3NjaGVtYScgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAg ICAgIGRhdGFbJ3NjaGVtYSddID0gcmVzWydyb3dzJ11bMF1bJ3NjaGVtYSdd CisKKyAgICAgICAgICAgICAgICBrZXkgPSAnZGF0YWNsJworICAgICAgICAg ICAgICAgIGlmIGtleSBpbiBkYXRhIGFuZCBkYXRhW2tleV0gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgICAgIGlmICdhZGRlZCcgaW4gZGF0YVtr ZXldOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydhZGRl ZCddID0gc2VsZi5wYXJzZV9wcml2aWxlZ2VzKAorICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV1bJ2FkZGVkJ10pCisgICAgICAgICAgICAg ICAgICAgIGlmICdjaGFuZ2VkJyBpbiBkYXRhW2tleV06CisgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhW2tleV1bJ2NoYW5nZWQnXSA9IHNlbGYucGFy c2VfcHJpdmlsZWdlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YVtrZXldWydjaGFuZ2VkJ10pCisgICAgICAgICAgICAgICAgICAgIGlmICdk ZWxldGVkJyBpbiBkYXRhW2tleV06CisgICAgICAgICAgICAgICAgICAgICAg ICBkYXRhW2tleV1bJ2RlbGV0ZWQnXSA9IHNlbGYucGFyc2VfcHJpdmlsZWdl cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrZXldWydkZWxl dGVkJ10pCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAg ICAgICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC91cGRh dGUuc3FsJ10pLCBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg ICBvX2RhdGE9b2xkX2RhdGEsIGNvbm49c2VsZi5jb25uKQorICAgICAgICAg ICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJl cXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAgICAgICAgICduYW1lJywK KyAgICAgICAgICAgICAgICAgICAgJ3NjaGVtYScsCisgICAgICAgICAgICAg ICAgICAgICdkZWZpbml0aW9uJworICAgICAgICAgICAgICAgIF0KKyAgICAg ICAgICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAg ICAgICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAiIC0tIGRlZmluaXRpb24gaW5jb21wbGV0 ZSIKKworICAgICAgICAgICAgICAgIGlmICdkYXRhY2wnIGluIGRhdGEgYW5k IGRhdGFbJ2RhdGFjbCddIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAg ICAgICBkYXRhWydkYXRhY2wnXSA9IHNlbGYucGFyc2VfcHJpdmlsZWdlcyhk YXRhWydkYXRhY2wnXSkKKyAgICAgICAgICAgICAgICBTUUwgPSByZW5kZXJf dGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICAgICAgICBbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnc3FsL2NyZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkK KyAgICAgICAgICAgICAgICBpZiBkYXRhWydkZWZpbml0aW9uJ106CisgICAg ICAgICAgICAgICAgICAgIFNRTCArPSAiXG4iCisgICAgICAgICAgICAgICAg ICAgIFNRTCArPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAg ICAgICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3NxbC9ncmFu dC5zcWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBTUUwK KworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihl KSkKKworICAgIGRlZiBnZXRfaW5kZXhfY29sdW1uX2RldGFpbHMoc2VsZiwg aWR4LCBkYXRhKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rp b25hbCB3aWxsIGZldGNoIGxpc3Qgb2YgY29sdW1uIGRldGFpbHMgZm9yIGlu ZGV4CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlkeDogSW5kZXgg T0lECisgICAgICAgICAgICBkYXRhOiBQcm9wZXJ0aWVzIGRhdGEKKworICAg ICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVXBkYXRlZCBwcm9wZXJ0aWVz IGRhdGEgd2l0aCBjb2x1bW4gZGV0YWlscworICAgICAgICAiIiIKKworICAg ICAgICBzZWxmLmluZGV4X3RlbXBfcGF0aCA9ICdpbmRleCcKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLmluZGV4X3Rl bXBfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcWwv OS4xX3BsdXMvY29sdW1uX2RldGFpbHMuc3FsJ10pLCBpZHg9aWR4KQorICAg ICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5 KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKwor ICAgICAgICAjICdhdHRkZWYnIGNvbWVzIHdpdGggcXVvdGVzIGZyb20gcXVl cnkgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisgICAgICAgICMgJ29wdGlv bnMnIHdlIG5lZWQgdHJ1ZS9mYWxzZSB0byByZW5kZXIgc3dpdGNoIEFTQyhm YWxzZSkvREVTQyh0cnVlKQorICAgICAgICBjb2x1bW5zID0gW10KKyAgICAg ICAgY29scyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cydd OgorCisgICAgICAgICAgICAjIFdlIG5lZWQgYWxsIGRhdGEgYXMgY29sbGVj dGlvbiBmb3IgQ29sdW1uc01vZGVsCisgICAgICAgICAgICBjb2xzX2RhdGEg PSB7CisgICAgICAgICAgICAgICAgJ2NvbG5hbWUnOiByb3dbJ2F0dGRlZidd LnN0cmlwKCciJyksCisgICAgICAgICAgICAgICAgJ2NvbGxzcGNuYW1lJzog cm93Wydjb2xsbnNwbmFtZSddLAorICAgICAgICAgICAgICAgICdvcF9jbGFz cyc6IHJvd1snb3BjbmFtZSddLAorICAgICAgICAgICAgfQorICAgICAgICAg ICAgaWYgcm93WydvcHRpb25zJ11bMF0gPT0gJ0RFU0MnOgorICAgICAgICAg ICAgICAgIGNvbHNfZGF0YVsnc29ydF9vcmRlciddID0gVHJ1ZQorICAgICAg ICAgICAgY29sdW1ucy5hcHBlbmQoY29sc19kYXRhKQorCisgICAgICAgICAg ICAjIFdlIG5lZWQgc2FtZSBkYXRhIGFzIHN0cmluZyB0byBkaXNwbGF5IGlu IHByb3BlcnRpZXMgd2luZG93CisgICAgICAgICAgICAjIElmIG11bHRpcGxl IGNvbHVtbiB0aGVuIHNlcGFyYXRlIGl0IGJ5IGNvbG9uCisgICAgICAgICAg ICBjb2xzX3N0ciA9IHJvd1snYXR0ZGVmJ10KKyAgICAgICAgICAgIGlmIHJv d1snY29sbG5zcG5hbWUnXToKKyAgICAgICAgICAgICAgICBjb2xzX3N0ciAr PSAnIENPTExBVEUgJyArIHJvd1snY29sbG5zcG5hbWUnXQorICAgICAgICAg ICAgaWYgcm93WydvcGNuYW1lJ106CisgICAgICAgICAgICAgICAgY29sc19z dHIgKz0gJyAnICsgcm93WydvcGNuYW1lJ10KKyAgICAgICAgICAgIGlmIHJv d1snb3B0aW9ucyddWzBdID09ICdERVNDJzoKKyAgICAgICAgICAgICAgICBj b2xzX3N0ciArPSAnIERFU0MnCisgICAgICAgICAgICBjb2xzLmFwcGVuZChj b2xzX3N0cikKKworICAgICAgICAjIFB1c2ggYXMgY29sbGVjdGlvbgorICAg ICAgICBkYXRhWydjb2x1bW5zJ10gPSBjb2x1bW5zCisgICAgICAgICMgUHVz aCBhcyBzdHJpbmcKKyAgICAgICAgZGF0YVsnY29scyddID0gJywgJy5qb2lu KGNvbHMpCisKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBnZXRf dHJpZ2dlcl9jb2x1bW5fZGV0YWlscyhzZWxmLCB0aWQsIGNsaXN0KToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBs aXN0IG9mIGNvbHVtbiBmb3IgdHJpZ2dlcgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICB0aWQ6IFRhYmxlIE9JRAorICAgICAgICAgICAgY2xpc3Q6 IExpc3Qgb2YgY29sdW1ucworCisgICAgICAgIFJldHVybnM6CisgICAgICAg ICAgICBVcGRhdGVkIHByb3BlcnRpZXMgZGF0YSB3aXRoIGNvbHVtbgorICAg ICAgICAiIiIKKworICAgICAgICBzZWxmLnRyaWdnZXJfdGVtcF9wYXRoID0g J3NjaGVtYS90cmlnZ2VyJworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudHJpZ2dlcl90ZW1wX3BhdGgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dldF9jb2x1bW5z LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10 aWQsIGNsaXN0PWNsaXN0KQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxm LmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKyAgICAgICAgIyAndGdhdHRyJyBjb250YWlu cyBsaXN0IG9mIGNvbHVtbnMgZnJvbSB0YWJsZSB1c2VkIGluIHRyaWdnZXIK KyAgICAgICAgY29sdW1ucyA9IFtdCisKKyAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106CisgICAgICAgICAgICBjb2x1bW5zLmFwcGVuZCh7J2Nv bHVtbic6IHJvd1snbmFtZSddfSkKKworICAgICAgICByZXR1cm4gY29sdW1u cworCisgICAgZGVmIGdldF9ydWxlX3NxbChzZWxmLCB2aWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgR2V0IGFsbCBub24gc3lzdGVtIHJ1bGVzIG9mIHZp ZXcgbm9kZSwKKyAgICAgICAgZ2VuZXJhdGUgdGhlaXIgc3FsIGFuZCByZW5k ZXIKKyAgICAgICAgaW50byBzcWwgdGFiCisgICAgICAgICIiIgorCisgICAg ICAgIHNlbGYucnVsZV90ZW1wX3BhdGggPSAncnVsZXMnCisgICAgICAgIFNR TF9kYXRhID0gJycKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIv Ii5qb2luKAorICAgICAgICAgIFtzZWxmLnJ1bGVfdGVtcF9wYXRoLCAnc3Fs L3Byb3BlcnRpZXMuc3FsJ10pLCB0aWQ9dmlkKQorCisgICAgICAgIHN0YXR1 cywgZGF0YSA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1kYXRhKQorCisgICAgICAgIGZvciBy dWxlIGluIGRhdGFbJ3Jvd3MnXToKKworICAgICAgICAgICAgIyBHZW5lcmF0 ZSBTUUwgb25seSBmb3Igbm9uIHN5c3RlbSBydWxlCisgICAgICAgICAgICBp ZiBydWxlWyduYW1lJ10gIT0gJ19SRVRVUk4nOgorICAgICAgICAgICAgICAg IHJlcyA9IFtdCisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICAgICAgW3NlbGYucnVsZV90 ZW1wX3BhdGgsICdzcWwvcHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgIHJpZD1ydWxlWydvaWQnXQorICAgICAgICAgICAgICAgICAg ICApCisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgICAgICByZXMgPSBwYXJz ZV9ydWxlX2RlZmluaXRpb24ocmVzKQorICAgICAgICAgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAg IFtzZWxmLnJ1bGVfdGVtcF9wYXRoLCAnc3FsL2NyZWF0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgIGRhdGE9cmVzLCBkaXNwbGF5X2NvbW1lbnRz PVRydWUpCisgICAgICAgICAgICAgICAgU1FMX2RhdGEgKz0gJ1xuJworICAg ICAgICAgICAgICAgIFNRTF9kYXRhICs9IFNRTAorICAgICAgICByZXR1cm4g U1FMX2RhdGEKKworICAgIGRlZiBnZXRfdHJpZ2dlcl9zcWwoc2VsZiwgdmlk KToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhbGwgdHJpZ2dlciBub2Rl cyBhc3NvY2lhdGVkIHdpdGggdmlldyBub2RlLAorICAgICAgICBnZW5lcmF0 ZSB0aGVpciBzcWwgYW5kIHJlbmRlcgorICAgICAgICBpbnRvIHNxbCB0YWIK KyAgICAgICAgIiIiCisKKyAgICAgICAgIyBEZWZpbmUgdGVtcGxhdGUgcGF0 aAorICAgICAgICBzZWxmLnRyaWdnZXJfdGVtcF9wYXRoID0gJ3RyaWdnZXIn CisKKyAgICAgICAgU1FMX2RhdGEgPSAnJworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBbc2VsZi50cmln Z2VyX3RlbXBfcGF0aCwgJ3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgIHRpZD12aWQpCisKKyAgICAgICAgc3RhdHVzLCBk YXRhID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPWRhdGEpCisKKyAgICAgICAgZm9yIHRyaWdn ZXIgaW4gZGF0YVsncm93cyddOgorICAgICAgICAgICAgU1FMID0gcmVuZGVy X3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAgICBbc2VsZi50cmln Z2VyX3RlbXBfcGF0aCwgJ3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNxbCdd KSwKKyAgICAgICAgICAgICAgICB0aWQ9dHJpZ2dlclsnb2lkJ10sCisgICAg ICAgICAgICAgICAgdGdyZWxpZD12aWQKKyAgICAgICAgICAgICAgICApCisK KyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisKKyAgICAgICAgICAgIHJlc19yb3dzID0gZGljdChyZXNb J3Jvd3MnXVswXSkKKyAgICAgICAgICAgIGlmIHJlc19yb3dzWyd0Z25hcmdz J10gPiAxOgorICAgICAgICAgICAgICAgICMgV2Uga25vdyB0aGF0IHRyaWdn ZXIgaGFzIG1vcmUgdGhhbiAxCisgICAgICAgICAgICAgICAgIyBhcmd1bWVu dHMsIGxldCdzIGpvaW4gdGhlbQorICAgICAgICAgICAgICAgIHJlc19yb3dz Wyd0Z2FyZ3MnXSA9ICcsICcuam9pbigKKyAgICAgICAgICAgICAgICAgICAg cmVzX3Jvd3NbJ3RnYXJncyddKQorCisgICAgICAgICAgICBpZiBsZW4ocmVz X3Jvd3NbJ3RnYXR0ciddKSA+IDE6CisgICAgICAgICAgICAgICAgY29sdW1u cyA9ICcsICcuam9pbihyZXNfcm93c1sndGdhdHRyJ10uc3BsaXQoJyAnKSkK KyAgICAgICAgICAgICAgICByZXNfcm93c1snY29sdW1ucyddID0gc2VsZi5n ZXRfdHJpZ2dlcl9jb2x1bW5fZGV0YWlscygKKyAgICAgICAgICAgICAgICAg ICAgdHJpZ2dlclsnb2lkJ10sIGNvbHVtbnMpCisgICAgICAgICAgICByZXNf cm93cyA9IHRyaWdnZXJfZGVmaW5pdGlvbihyZXNfcm93cykKKworICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgICAgICBbc2VsZi50cmlnZ2VyX3RlbXBfcGF0aCwgJ3NxbC85LjFfcGx1 cy9jcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAgIGRhdGE9cmVzX3Jv d3MsIGRpc3BsYXlfY29tbWVudHM9VHJ1ZSkKKyAgICAgICAgICAgIFNRTF9k YXRhICs9ICdcbicKKyAgICAgICAgICAgIFNRTF9kYXRhICs9IFNRTAorCisg ICAgICAgIHJldHVybiBTUUxfZGF0YQorCisgICAgZGVmIGdldF9pbmRleF9z cWwoc2VsZiwgdmlkKToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhbGwg aW5kZXggYXNzb2NpYXRlZCB3aXRoIHZpZXcgbm9kZSwKKyAgICAgICAgZ2Vu ZXJhdGUgdGhlaXIgc3FsIGFuZCByZW5kZXIKKyAgICAgICAgaW50byBzcWwg dGFiCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuaW5kZXhfdGVtcF9w YXRoID0gJ2luZGV4JworICAgICAgICBTUUxfZGF0YSA9ICcnCisgICAgICAg IFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICBb c2VsZi5pbmRleF90ZW1wX3BhdGgsICdzcWwvOS4xX3BsdXMvcHJvcGVydGll cy5zcWwnXSksIHRpZD12aWQpCisgICAgICAgIHN0YXR1cywgZGF0YSA9IHNl bGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1kYXRhKQorCisgICAgICAgIGZvciBpbmRleCBpbiBkYXRh Wydyb3dzJ106CisgICAgICAgICAgICByZXMgPSBbXQorICAgICAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAg ICBbc2VsZi5pbmRleF90ZW1wX3BhdGgsICdzcWwvOS4xX3BsdXMvcHJvcGVy dGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgaWR4PWluZGV4WydvaWQn XSwKKyAgICAgICAgICAgICAgICB0aWQ9dmlkCisgICAgICAgICAgICAgICAg KQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKworICAgICAgICAgICAgZGF0YSA9IGRpY3QocmVzWydy b3dzJ11bMF0pCisgICAgICAgICAgICAjIEFkZGluZyBwYXJlbnQgaW50byBk YXRhIGRpY3QsIHdpbGwgYmUgdXNpbmcgaXQgd2hpbGUgY3JlYXRpbmcgc3Fs CisgICAgICAgICAgICBkYXRhWydzY2hlbWEnXSA9IGRhdGFbJ25zcG5hbWUn XQorICAgICAgICAgICAgZGF0YVsndGFibGUnXSA9IGRhdGFbJ3RhYm5hbWUn XQorCisgICAgICAgICAgICAjIEFkZCBjb2x1bW4gZGV0YWlscyBmb3IgY3Vy cmVudCBpbmRleAorICAgICAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X2luZGV4 X2NvbHVtbl9kZXRhaWxzKGluZGV4WydvaWQnXSwgZGF0YSkKKworICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAg ICAgICAgICBbc2VsZi5pbmRleF90ZW1wX3BhdGgsICdzcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGRp c3BsYXlfY29tbWVudHM9VHJ1ZSkKKyAgICAgICAgICAgIFNRTF9kYXRhICs9 ICdcbicKKyAgICAgICAgICAgIFNRTF9kYXRhICs9IFNRTAorICAgICAgICBy ZXR1cm4gU1FMX2RhdGEKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHZpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJh dGUgc3FsIHRvIHJlbmRlciBpbnRvIHRoZSBzcWwgcGFuZWwKKyAgICAgICAg IiIiCisKKyAgICAgICAgU1FMX2RhdGEgPSAnJworICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3NxbC9wcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICB2aWQ9dmlkLAorICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5kYXRs YXN0c3lzb2lkCisgICAgICAgICkKKworICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgIyBGZXRjaCBhbGwgcHJp dmlsZWdlcyBmb3IgdmlldworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oCisgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwg J3NxbC9hY2wuc3FsJ10pLCB2aWQ9dmlkKQorICAgICAgICBzdGF0dXMsIGRh dGFjbHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgZm9yIHJv dyBpbiBkYXRhY2xyZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgIHByaXYgPSBz ZWxmLnBhcnNlX3ZpZXdzX3ByaXZpbGVnZXMocm93KQorICAgICAgICAgICAg aWYgcm93WydkZWZ0eXBlJ10gaW4gcmVzWydyb3dzJ11bMF06CisgICAgICAg ICAgICAgICAgcmVzWydyb3dzJ11bMF1bJ2RhdGFjbCddLmFwcGVuZChwcml2 KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXNbJ3Jv d3MnXVswXVsnZGF0YWNsJ10gPSBbcHJpdl0KKworICAgICAgICByZXN1bHQg PSByZXNbJ3Jvd3MnXVswXQorICAgICAgICBpZiAnZGF0YWNsJyBpbiByZXN1 bHQ6CisgICAgICAgICAgICByZXN1bHRbJ2RhdGFjbCddID0gc2VsZi5wYXJz ZV9wcml2aWxlZ2VzKHJlc3VsdFsnZGF0YWNsJ10pCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICBb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2NyZWF0ZS5zcWwnXSksCisgICAg ICAgICAgICAgICAgZGF0YT1yZXN1bHQsCisgICAgICAgICAgICAgICAgY29u bj1zZWxmLmNvbm4sCisgICAgICAgICAgICAgICAgZGlzcGxheV9jb21tZW50 cz1UcnVlCisgICAgICAgICAgICAgICkKKyAgICAgICAgU1FMICs9ICJcbiIK KyAgICAgICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAg ICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2dyYW50LnNxbCdd KSwgZGF0YT1yZXN1bHQpCisKKyAgICAgICAgU1FMX2RhdGEgKz0gU1FMCisg ICAgICAgIFNRTF9kYXRhICs9IHNlbGYuZ2V0X3J1bGVfc3FsKHZpZCkKKyAg ICAgICAgU1FMX2RhdGEgKz0gc2VsZi5nZXRfdHJpZ2dlcl9zcWwodmlkKQor ICAgICAgICBTUUxfZGF0YSArPSBzZWxmLmdldF9pbmRleF9zcWwodmlkKQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJlc3BvbnNlPVNRTF9k YXRhKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRf dGJsc3BjKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB0byByZXR1cm4gbGlzdCBvZiB0 YWJsZXNwYWNlcworICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10KKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdzcWwvZ2V0X3RibHNwYy5zcWwnXSkKKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93 cyddOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeydsYWJlbCc6IHJvd1snc3BjbmFtZSddLCAn dmFsdWUnOiByb3dbJ3NwY25hbWUnXX0KKyAgICAgICAgICAgICAgICAgICAg ICAgICkKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZSgKKyAgICAgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICAgICAgICAgKQor CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUp KQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRl bnRzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIHZpZCk6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlIGRlcGVuZGVu dHMgYW5kIHJldHVybnMgYW4gYWpheCByZXNwb25zZQorICAgICAgICBmb3Ig dGhlIHZpZXcgbm9kZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAg Z2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNpZDogU2VydmVy IElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisgICAgICAgICAg ICB2aWQ6IFZpZXcgSUQKKyAgICAgICAgIiIiCisgICAgICAgIGRlcGVuZGVu dHNfcmVzdWx0ID0gc2VsZi5nZXRfZGVwZW5kZW50cyhzZWxmLmNvbm4sIHZp ZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAg ICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIHZpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIGdldHMgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJucyBhbiBh amF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgdmlldyBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ RAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIHZpZDogVmlldyBJRAorICAg ICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNlbGYu Z2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4sIHZpZCkKKyAgICAgICAgcmV0 dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1kZXBl bmRlbmNpZXNfcmVzdWx0LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgKQorCisKK2NsYXNzIE1hdGVyaWFsaXplZFZpZXdOb2RlKFZp ZXdOb2RlKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNp YmxlIGZvciBnZW5lcmF0aW5nIHJvdXRlcyBmb3IKKyAgICBtYXRlcmlhbGl6 ZWQgdmlldyBub2RlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisg ICAgKiBfX2luaXRfXygqKmt3YXJncykKKyAgICAgIC0gTWV0aG9kIGlzIHVz ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgTWF0ZXJpYWxpemVkVmlldworICAgICAg YW5kIGl0J3MgYmFzZSB2aWV3LgorCisgICAgKiBtb2R1bGVfanMoKQorICAg ICAgLSBUaGlzIHByb3BlcnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4 aXN0cyBmb3IgdGhpcyBub2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHBy b3BlcnR5IGZvciB5b3VyIG93biBsb2dpYworCisgICAgKiBjcmVhdGUoZ2lk LCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gUmFpc2UgYW4gZXJyb3IgLSB3 ZSBjYW4gbm90IGNyZWF0ZSBhIG1hdGVyaWFsIHZpZXcuCisKKyAgICAqIHVw ZGF0ZShnaWQsIHNpZCwgZGlkLCBzY2lkKQorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgdXBkYXRlIHRoZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQgbWF0 ZXJpYWwgbm9kZQorCisgICAgKiBkZWxldGUoc2VsZiwgZ2lkLCBzaWQsIHNj aWQpOgorICAgICAgLSBSYWlzZSBhbiBlcnJvciAtIHdlIGNhbiBub3QgZGVs ZXRlIGEgbWF0ZXJpYWwgdmlldy4KKworICAgICogZ2V0X3NxbChkYXRhLCBz Y2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3Fs IGZyb20gbW9kZWwgZGF0YQorCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUg PSBtYXRlcmlhbGl6ZWRfdmlld19ibHVlcHJpbnQubm9kZV90eXBlCisKKyAg ICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAg ICAgIiIiCisgICAgICAgIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlcyB1c2Vk IGJ5IG1ldGhvZHMgb2YgVmlld05vZGUuCisgICAgICAgICIiIgorCisgICAg ICAgIHN1cGVyKE1hdGVyaWFsaXplZFZpZXdOb2RlLCBzZWxmKS5fX2luaXRf XygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi50ZW1wbGF0ZV9p bml0aWFsID0gJ21hdGVyaWFsaXplZF92aWV3JworCisgICAgQHN0YXRpY21l dGhvZAorICAgIGRlZiBwZ190ZW1wbGF0ZV9wYXRoKHZlcik6CisgICAgICAg ICIiIgorICAgICAgICBSZXR1cm5zIHRoZSB0ZW1wbGF0ZSBwYXRoIGZvciBQ b3N0Z3JlU1FMIHNlcnZlcnMuCisgICAgICAgICIiIgorICAgICAgICBpZiB2 ZXIgPj0gOTAzMDA6CisgICAgICAgICAgICByZXR1cm4gJ3BnLzkuM19wbHVz JworICAgICAgICByZXR1cm4gJ3BnLzkuM19wbHVzJworCisgICAgZGVmIGdl dF9zcWwoc2VsZiwgZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIHZpZD1Ob25lKToK KyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5l cmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisgICAgICAgICIiIgorICAgICAg ICBpZiBzY2lkIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gYmFkX3Jl cXVlc3QoJ0Nhbm5vdCBjcmVhdGUgYSBWaWV3IScpCisKKyAgICAgICAgcmV0 dXJuIHN1cGVyKE1hdGVyaWFsaXplZFZpZXdOb2RlLCBzZWxmKS5nZXRfc3Fs KAorICAgICAgICAgICAgICAgIGdpZCwgc2lkLCBkYXRhLCBzY2lkLCB2aWQp CisKKyAgICBkZWYgZ2V0U1FMKHNlbGYsIGdpZCwgc2lkLCBkYXRhLCB2aWQ9 Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZ2VucmF0ZSBzcWwgZnJvbSBtb2RlbCBkYXRhCisgICAgICAgICIiIgor ICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB2aWQgaXMgbm90IE5vbmU6 CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5q b2luKAorICAgICAgICAgICAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRo LCAnc3FsL3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg dmlkPXZpZCwKKyAgICAgICAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2Vs Zi5kYXRsYXN0c3lzb2lkCisgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChT UUwpCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jv d3MnXVswXQorCisgICAgICAgICAgICAgICAgaWYgJ25hbWUnIG5vdCBpbiBk YXRhOgorICAgICAgICAgICAgICAgICAgICBkYXRhWyduYW1lJ10gPSByZXNb J3Jvd3MnXVswXVsnbmFtZSddCisgICAgICAgICAgICAgICAgaWYgJ3NjaGVt YScgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ3Nj aGVtYSddID0gcmVzWydyb3dzJ11bMF1bJ3NjaGVtYSddCisKKyAgICAgICAg ICAgICAgICAjIG1lcmdlIHZhY3V1bSBsaXN0cyBpbnRvIG9uZQorICAgICAg ICAgICAgICAgIGRhdGFbJ3ZhY3V1bV9kYXRhJ10gPSB7fQorICAgICAgICAg ICAgICAgIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXSA9IFtdCisg ICAgICAgICAgICAgICAgZGF0YVsndmFjdXVtX2RhdGEnXVsncmVzZXQnXSA9 IFtdCisgICAgICAgICAgICAgICAgaWYgKCd2YWN1dW1fdGFibGUnIGluIGRh dGEpOgorICAgICAgICAgICAgICAgICAgICBpZiAoJ2NoYW5nZWQnIGluIGRh dGFbJ3ZhY3V1bV90YWJsZSddKToKKyAgICAgICAgICAgICAgICAgICAgICAg IGZvciBpdGVtIGluIGRhdGFbJ3ZhY3V1bV90YWJsZSddWydjaGFuZ2VkJ106 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ3ZhbHVlJyBpbiBp dGVtLmtleXMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgaXRlbVsndmFsdWUnXSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVsndmFjdXVtX2RhdGEnXVsncmVzZXQn XS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXS5hcHBlbmQoaXRlbSkK KworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCdhdXRvdmFjdXVtX2Vu YWJsZWQnIGluIGRhdGEgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHIoZGF0YVsnYXV0b3ZhY3V1bV9lbmFibGVkJ10pLmxvd2VyKCkgPT0g J3RydWUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyd2 YWN1dW1fZGF0YSddWydjaGFuZ2VkJ10uYXBwZW5kKAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7J25hbWUnOiAnYXV0b3ZhY3V1bV9lbmFi bGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1 ZSc6IGRhdGFbJ2F1dG92YWN1dW1fZW5hYmxlZCddfSkKKyAgICAgICAgICAg ICAgICAgICAgICAgIGVsaWYgKG9sZF9kYXRhWydhdXRvdmFjdXVtX2VuYWJs ZWQnXSA9PSAndHJ1ZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXS5hcHBlbmQoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbmFtZSc6ICdhdXRvdmFj dXVtX2VuYWJsZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJ3ZhbHVlJzogJ3RydWUnfSkKKyAgICAgICAgICAgICAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsndmFj dXVtX2RhdGEnXVsnY2hhbmdlZCddID0ge30KKworICAgICAgICAgICAgICAg IGtleSA9ICdkYXRhY2wnCisgICAgICAgICAgICAgICAgaWYga2V5IGluIGRh dGEgYW5kIGRhdGFba2V5XSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICAgICAgaWYgJ2FkZGVkJyBpbiBkYXRhW2tleV06CisgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV1bJ2FkZGVkJ10gPSBzZWxmLnBhcnNlX3By aXZpbGVnZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5 XVsnYWRkZWQnXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgJ2NoYW5nZWQn IGluIGRhdGFba2V5XToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFb a2V5XVsnY2hhbmdlZCddID0gc2VsZi5wYXJzZV9wcml2aWxlZ2VzKAorICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2tleV1bJ2NoYW5nZWQnXSkK KyAgICAgICAgICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIGRhdGFba2V5 XToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XVsnZGVsZXRl ZCddID0gc2VsZi5wYXJzZV9wcml2aWxlZ2VzKAorICAgICAgICAgICAgICAg ICAgICAgICAgICBkYXRhW2tleV1bJ2RlbGV0ZWQnXSkKKyAgICAgICAgICAg ICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICBbc2Vs Zi50ZW1wbGF0ZV9wYXRoLCAnc3FsL3VwZGF0ZS5zcWwnXSksIGRhdGE9ZGF0 YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9fZGF0YT1vbGRfZGF0YSwg Y29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2Vw dGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsKKyAg ICAgICAgICAgICAgICAgICAgJ25hbWUnLAorICAgICAgICAgICAgICAgICAg ICAnc2NoZW1hJywKKyAgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24n CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgIGZvciBhcmcg aW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJn IG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu ICIgLS0gZGVmaW5pdGlvbiBpbmNvbXBsZXRlIgorCisgICAgICAgICAgICAg ICAgIyBtZXJnZSB2YWN1dW0gbGlzdHMgaW50byBvbmUKKyAgICAgICAgICAg ICAgICB2YWN1dW1fdGFibGUgPSBbaXRlbSBmb3IgaXRlbSBpbiBkYXRhWyd2 YWN1dW1fdGFibGUnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpZiAndmFsdWUnIGluIGl0ZW0ua2V5cygpXQorICAgICAgICAgICAgICAg IHZhY3V1bV90b2FzdCA9IFsKKyAgICAgICAgICAgICAgICAgICAgeyduYW1l JzogJ3RvYXN0LicraXRlbVsnbmFtZSddLCAndmFsdWUnOml0ZW1bJ3ZhbHVl J119CisgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGRhdGFbJ3Zh Y3V1bV90b2FzdCddIGlmICd2YWx1ZScgaW4gaXRlbS5rZXlzKCldCisKKyAg ICAgICAgICAgICAgICAjIGFkZCB2YWN1dW1fdG9hc3QgZGljdCB0byB2YWN1 dW1fZGF0YSBvbmx5IGlmCisgICAgICAgICAgICAgICAgIyB0b2FzdCdzIGF1 dG92YWN1dW0gaXMgZW5hYmxlZAorICAgICAgICAgICAgICAgIGlmICgndG9h c3RfYXV0b3ZhY3V1bV9lbmFibGVkJyBpbiBkYXRhIGFuZAorICAgICAgICAg ICAgICAgICAgIGRhdGFbJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxlZCddIGlz IFRydWUpOgorICAgICAgICAgICAgICAgICAgICBkYXRhWyd2YWN1dW1fZGF0 YSddID0gdmFjdXVtX3RhYmxlICsgdmFjdXVtX3RvYXN0CisgICAgICAgICAg ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YVsndmFjdXVt X2RhdGEnXSA9IHZhY3V1bV90YWJsZQorCisgICAgICAgICAgICAgICAgaWYg J2RhdGFjbCcgaW4gZGF0YSBhbmQgZGF0YVsnZGF0YWNsJ10gaXMgbm90IE5v bmU6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ2RhdGFjbCddID0gc2Vs Zi5wYXJzZV9wcml2aWxlZ2VzKGRhdGFbJ2RhdGFjbCddKQorICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAg ICAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorICAgICAgICAgICAgICAgIGlmIGRhdGFb J2RlZmluaXRpb24nXToKKyAgICAgICAgICAgICAgICAgICAgU1FMICs9ICJc biIKKyAgICAgICAgICAgICAgICAgICAgU1FMICs9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbigKKyAgICAgICAgICAgICAgICAgICAgICBbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnc3FsL2dyYW50LnNxbCddKSwgZGF0YT1kYXRhKQorICAg ICAgICAgICAgcmV0dXJuIFNRTAorCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJf ZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNvbmRp dGlvbgorICAgIGRlZiBnZXRfdmFjdXVtX2RlZmF1bHRzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIHNjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgRmV0Y2gg dGhlIGRlZmF1bHQgdmFsdWVzIGZvciBhdXRvdmFjdXVtCisgICAgICAgIGZp ZWxkcywgcmV0dXJuIGFuIGFycmF5IG9mCisgICAgICAgICAgLSBsYWJlbAor ICAgICAgICAgIC0gbmFtZQorICAgICAgICAgIC0gc2V0dGluZworICAgICAg ICB2YWx1ZXMKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyByZXR1cm5zIGFu IGFycmF5IG9mIG5hbWUgJiBsYWJlbCB2YWx1ZXMKKyAgICAgICAgdmFjdXVt X2ZpZWxkcyA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAg ICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICd2YWN1dW1fZmllbGRzLmpzb24n XQorICAgICAgICAgICkpCisKKyAgICAgICAgdmFjdXVtX2ZpZWxkcyA9IGpz b24ubG9hZHModmFjdXVtX2ZpZWxkcykKKworICAgICAgICAjIHJldHVybnMg YW4gYXJyYXkgb2Ygc2V0dGluZyAmIG5hbWUgdmFsdWVzCisgICAgICAgIHZh Y3V1bV9maWVsZHNfa2V5cyA9ICInIisiJywnIi5qb2luKAorICAgICAgICAg ICAgdmFjdXVtX2ZpZWxkc1sndGFibGUnXS5rZXlzKCkpKyInIgorICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAg ICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL3ZhY3V1bV9kZWZhdWx0cy5z cWwnXSksCisgICAgICAgICAgICBjb2x1bW5zPXZhY3V1bV9maWVsZHNfa2V5 cykKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KFNRTCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMp CisKKyAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToKKyAgICAgICAg ICAgIHJvd19uYW1lID0gcm93WyduYW1lJ10KKyAgICAgICAgICAgIHJvd1sn bmFtZSddID0gdmFjdXVtX2ZpZWxkc1sndGFibGUnXVtyb3dfbmFtZV1bMF0K KyAgICAgICAgICAgIHJvd1snbGFiZWwnXSA9IHZhY3V1bV9maWVsZHNbJ3Rh YmxlJ11bcm93X25hbWVdWzFdCisgICAgICAgICAgICByb3dbJ2NvbHVtbl90 eXBlJ10gPSB2YWN1dW1fZmllbGRzWyd0YWJsZSddW3Jvd19uYW1lXVsyXQor CisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAg ICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJl Y29uZGl0aW9uCisgICAgZGVmIGdldF92YWN1dW1fdG9hc3RfZGVmYXVsdHMo c2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgorICAg ICAgICBGZXRjaCB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIGF1dG92YWN1dW0K KyAgICAgICAgZmllbGRzLCByZXR1cm4gYW4gYXJyYXkgb2YKKyAgICAgICAg ICAtIGxhYmVsCisgICAgICAgICAgLSBuYW1lCisgICAgICAgICAgLSBzZXR0 aW5nCisgICAgICAgIHZhbHVlcworICAgICAgICAiIiIKKworICAgICAgICAj IHJldHVybnMgYW4gYXJyYXkgb2YgbmFtZSAmIGxhYmVsIHZhbHVlcworICAg ICAgICB2YWN1dW1fZmllbGRzID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2lu KAorICAgICAgICAgICAgW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3ZhY3V1bV9m aWVsZHMuanNvbiddCisgICAgICAgICAgKSkKKworICAgICAgICB2YWN1dW1f ZmllbGRzID0ganNvbi5sb2Fkcyh2YWN1dW1fZmllbGRzKQorCisgICAgICAg ICMgcmV0dXJucyBhbiBhcnJheSBvZiBzZXR0aW5nICYgbmFtZSB2YWx1ZXMK KyAgICAgICAgdmFjdXVtX2ZpZWxkc19rZXlzID0gIiciKyInLCciLmpvaW4o CisgICAgICAgICAgICB2YWN1dW1fZmllbGRzWyd0b2FzdCddLmtleXMoKSkr IiciCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbigK KyAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzcWwvdmFjdXVt X2RlZmF1bHRzLnNxbCddKSwKKyAgICAgICAgICAgIGNvbHVtbnM9dmFjdXVt X2ZpZWxkc19rZXlzKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIHJlc1sncm93cydd OgorICAgICAgICAgICAgcm93X25hbWUgPSByb3dbJ25hbWUnXQorICAgICAg ICAgICAgcm93WyduYW1lJ10gPSB2YWN1dW1fZmllbGRzWyd0b2FzdCddW3Jv d19uYW1lXVswXQorICAgICAgICAgICAgcm93WydsYWJlbCddID0gdmFjdXVt X2ZpZWxkc1sndG9hc3QnXVtyb3dfbmFtZV1bMV0KKyAgICAgICAgICAgIHJv d1snY29sdW1uX3R5cGUnXSA9IHZhY3V1bV9maWVsZHNbJ3RhYmxlJ11bcm93 X25hbWVdWzJdCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAg ICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAg IGRlZiBwYXJzZV92YWN1dW1fZGF0YShzZWxmLCByZXN1bHQsIHR5cGUpOgor ICAgICAgICAiIiIKKyAgICAgICAgUGFyc2UgdmFjdW1tIGRhdGEKKyAgICAg ICAgIiIiCisKKyAgICAgICAgIyByZXR1cm5zIGFuIGFycmF5IG9mIG5hbWUg JiBsYWJlbCB2YWx1ZXMKKyAgICAgICAgdmFjdXVtX2ZpZWxkcyA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFtzZWxmLnRlbXBs YXRlX3BhdGgsICd2YWN1dW1fZmllbGRzLmpzb24nXQorICAgICAgICAgICkp CisKKyAgICAgICAgdmFjdXVtX2ZpZWxkcyA9IGpzb24ubG9hZHModmFjdXVt X2ZpZWxkcykKKworICAgICAgICAjIHJldHVybnMgYW4gYXJyYXkgb2Ygc2V0 dGluZyAmIG5hbWUgdmFsdWVzCisgICAgICAgIHZhY3V1bV9maWVsZHNfa2V5 cyA9ICInIisiJywnIi5qb2luKAorICAgICAgICAgICAgdmFjdXVtX2ZpZWxk c1t0eXBlXS5rZXlzKCkpICsgIiciCisgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFtzZWxmLnRlbXBsYXRl X3BhdGgsICdzcWwvdmFjdXVtX2RlZmF1bHRzLnNxbCddKSwKKyAgICAgICAg ICAgIGNvbHVtbnM9dmFjdXVtX2ZpZWxkc19rZXlzKQorICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBpZiB0 eXBlIGlzICd0YWJsZSc6CisgICAgICAgICAgICBmb3Igcm93IGluIHJlc1sn cm93cyddOgorICAgICAgICAgICAgICAgIHJvd19uYW1lID0gcm93WyduYW1l J10KKyAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSA9IHZhY3V1bV9maWVs ZHNbdHlwZV1bcm93X25hbWVdWzBdCisgICAgICAgICAgICAgICAgcm93Wyds YWJlbCddID0gdmFjdXVtX2ZpZWxkc1t0eXBlXVtyb3dfbmFtZV1bMV0KKyAg ICAgICAgICAgICAgICByb3dbJ2NvbHVtbl90eXBlJ10gPSB2YWN1dW1fZmll bGRzW3R5cGVdW3Jvd19uYW1lXVsyXQorICAgICAgICAgICAgICAgIGlmIHJl c3VsdFtyb3dbJ25hbWUnXV0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAg ICAgICAgIHJvd1sndmFsdWUnXSA9IHJvd1snc2V0dGluZyddID0gZmxvYXQo cmVzdWx0W3Jvd19uYW1lXSkKKyAgICAgICAgICAgICAgICAjZWxzZToKKyAg ICAgICAgICAgICAgICAjICAgIHJvd1sndmFsdWUnXSA9IC0xCisgICAgICAg IGVsaWYgdHlwZSBpcyAndG9hc3QnOgorICAgICAgICAgICAgZm9yIHJvdyBp biByZXNbJ3Jvd3MnXToKKyAgICAgICAgICAgICAgICByb3dfb2xkX25hbWUg PSByb3dbJ25hbWUnXQorICAgICAgICAgICAgICAgIHJvd19uYW1lID0gJ3Rv YXN0X3swfScuZm9ybWF0KHZhY3V1bV9maWVsZHNbdHlwZV1bcm93X29sZF9u YW1lXVswXSkKKyAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSA9IHZhY3V1 bV9maWVsZHNbdHlwZV1bcm93X29sZF9uYW1lXVswXQorICAgICAgICAgICAg ICAgIHJvd1snbGFiZWwnXSA9IHZhY3V1bV9maWVsZHNbdHlwZV1bcm93X29s ZF9uYW1lXVsxXQorICAgICAgICAgICAgICAgIHJvd1snY29sdW1uX3R5cGUn XSA9IHZhY3V1bV9maWVsZHNbdHlwZV1bcm93X29sZF9uYW1lXVsyXQorICAg ICAgICAgICAgICAgIGlmIHJlc3VsdFtyb3dfbmFtZV0gYW5kIHJlc3VsdFty b3dfbmFtZV0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJv d1sndmFsdWUnXSA9IHJvd1snc2V0dGluZyddID0gZmxvYXQocmVzdWx0W3Jv d19uYW1lXSkKKyAgICAgICAgICAgICAgICAjZWxzZToKKyAgICAgICAgICAg ICAgICAjICAgIHJvd1sndmFsdWUnXSA9IC0xCisKKyAgICAgICAgcmV0dXJu IHJlc1sncm93cyddCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgdmlk KToKKyAgICAgICAgIiIiCisgICAgICAgIEZldGNoZXMgdGhlIHByb3BlcnRp ZXMgb2YgYW4gaW5kaXZpZHVhbCB2aWV3CisgICAgICAgIGFuZCByZW5kZXIg aW4gdGhlIHByb3BlcnRpZXMgdGFiCisgICAgICAgICIiIgorICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL3Byb3BlcnRpZXMuc3FsJ10KKyAg ICAgICAgICApLCB2aWQ9dmlkLCBkYXRsYXN0c3lzb2lkPXNlbGYuZGF0bGFz dHN5c29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bigKKyAgICAgICAgICBbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnc3FsL2FjbC5z cWwnXSksIHZpZD12aWQpCisgICAgICAgIHN0YXR1cywgZGF0YWNscmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBz dGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vy cm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICBmb3Igcm93IGluIGRhdGFj bHJlc1sncm93cyddOgorICAgICAgICAgICAgcHJpdiA9IHNlbGYucGFyc2Vf dmlld3NfcHJpdmlsZWdlcyhyb3cpCisgICAgICAgICAgICBpZiByb3dbJ2Rl ZnR5cGUnXSBpbiByZXNbJ3Jvd3MnXVswXToKKyAgICAgICAgICAgICAgICBy ZXNbJ3Jvd3MnXVswXVtyb3dbJ2RlZnR5cGUnXV0uYXBwZW5kKHByaXYpCisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc1sncm93cydd WzBdW3Jvd1snZGVmdHlwZSddXSA9IFtwcml2XQorCisgICAgICAgIHJlc3Vs dCA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgIyBzZW5kaW5nIHJlc3Vs dCB0byBmb3JtdHRlcgorICAgICAgICBmcm10ZF9yZXNsdCA9IHNlbGYuZm9y bWF0dGVyKHJlc3VsdCkKKworICAgICAgICAjIG1lcmdpbmcgZm9ybWF0ZWQg cmVzdWx0IHdpdGggbWFpbiByZXN1bHQgYWdhaW4KKyAgICAgICAgcmVzdWx0 LnVwZGF0ZShmcm10ZF9yZXNsdCkKKworICAgICAgICByZXN1bHRbJ3ZhY3V1 bV90YWJsZSddID0gc2VsZi5wYXJzZV92YWN1dW1fZGF0YShyZXN1bHQsICd0 YWJsZScpCisgICAgICAgIHJlc3VsdFsndmFjdXVtX3RvYXN0J10gPSBzZWxm LnBhcnNlX3ZhY3V1bV9kYXRhKHJlc3VsdCwgJ3RvYXN0JykKKworICAgICAg ICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICByZXNw b25zZT1yZXN1bHQsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICAgICAgICAgICkKKworVmlld05vZGUucmVnaXN0ZXJfbm9kZV92aWV3 KHZpZXdfYmx1ZXByaW50KQorTWF0ZXJpYWxpemVkVmlld05vZGUucmVnaXN0 ZXJfbm9kZV92aWV3KG1hdGVyaWFsaXplZF92aWV3X2JsdWVwcmludCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL2NoaWxkcmVuL19faW5p dF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvY2hpbGRyZW4vX19pbml0 X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3 NTM5ZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L2NoaWxkcmVuL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTIgQEAKKyIiIgor V2Ugd2lsbCB1c2UgdGhlIGV4aXNpdGluZyBtb2R1bGVzIGZvciBjcmVhdGlu ZyBjaGlsZHJlbiBtb2R1bGUgdW5kZXIKK21hdGVyaWFsaXplIHZpZXdzLgor IiIiCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLmNvbHVtbnMgXAorICBpbXBv cnQgYmx1ZXByaW50IGFzIGNvbHVtbnNfbW9kdWxlCitmcm9tIHBnYWRtaW4u YnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzLnNjaGVt YXMudGFibGVzLmluZGV4ZXMgXAorICBpbXBvcnQgYmx1ZXByaW50IGFzIGlu ZGV4ZXNfbW9kdWxlcworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRhYmxlcy50cmlnZ2Vy cyBcCisgIGltcG9ydCBibHVlcHJpbnQgYXMgdHJpZ2dlcnNfbW9kdWxlcwor ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRh dGFiYXNlcy5zY2hlbWFzLnRhYmxlcy5ydWxlcyBcCisgIGltcG9ydCBibHVl cHJpbnQgYXMgcnVsZXNfbW9kdWxlcwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3Mvc3RhdGljL2ltZy9jb2xsLW1hdGVyaWFsaXplZF92aWV3 LnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9pbWcvY29sbC1t YXRlcmlhbGl6ZWRfdmlldy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u NDBlNjVhOTZlMTgwMDQxMDRiMDQxYjBhZTMyNTc5YjI2YWU5NzA1OApHSVQg YmluYXJ5IHBhdGNoCmxpdGVyYWwgMzc0CnpjbVYtKzBnMypKUCk8aDszS3xM azAwMGUxTkpMVHEwMDBtRzAwMG1PMV5AczZBTV5pVjAwMDA5YTdiQm0wMDBY VQp6MDAwWFUwUldudTd5dGtQQ2BtKj9SNTs2fWxmTyNDUCF4eTErZVY2bCl5 O3kqQVA3M1JoQGpRUXI0QnhZTHB6QmUKejteSCQxO3RRbE47TiY2PlBBKD5o TEFPRSQyYjxZTjVAVkN4PiExVl5uaXxQbkV7QSk1LX0hZUJsc3AyIThKd3Z7 CnpfeHhZTiZaYTk4Zk5BTSFyK0VsYjRLPHZGcGd9ZDdxYXkxRlJaQiFsZURh Uk5vNERycl5eVSN1cDNyXyVaeXJ0eQp6TVcwYG9COCtfaXdDclFNSVQkUE0r RDZMT2lhM3BmWWs4NWpTNUJEcFQyeTJtdVhAa3olZlUjJFQpPVJtaGQxcEkK ek57PilfeGgzVFNsb0V2K3N1Z2tDbnpfUVhedSpxNl5iPFE1VV9WYEVLTXJt NmVnQnozdyVaKjlOLTJhOG4za1NgCnpYaGxjWndUKUM2QkxTX0FlSWdrVSVN VCp5NlVQM30xVEkpd1VMPWZ0QXtoV35gREkkd2s2MUh+TWNIbFUzdWsrOApV dn0tPSgmO1M0YzA3KnFvTTZOPCRmPCFAQHAjVDU/CgpsaXRlcmFsIDAKSGNt Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9z dGF0aWMvaW1nL2NvbGwtdmlldy5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy9zdGF0aWMvaW1nL2NvbGwtdmlldy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMC4uMDc4ZDUzMzY4NGI4YmQ3ZTE4NTc0OWM0ZjFjOTYyMGFmMjNkMTE0 YgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDE4CnpjbWVBU0BOPyhvbEh5 YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9WT1CUlFFMDh8PnhPZEtSblJ6 RF45e3JqMgp6X31sVkZAQWZAO2JAfVBAZChXUmdlZkkzeHFvPXA3S1ZQfSFW KVVjYC1UKGdtZC0lVjVgJUFVfHxObjEpcD8+R2gKem4oWiZ0UEphJE57PXhn ZnpxVUpuPlRkb2pKXnM9QUBPeWBTWl9JWVIoKEFIV3swMytOVkBaJS1Gb1ZP aDgpK2E7CnpsREU1eVExeloxQWUoYCt6JDNDNE5QQj4+K3NTTUBBUzIoPyNX NihVYSVne35QPWYtR3YrMjdQOVY+UUp8NDtVNgp6YmUhR0tIK2tQU01OaCUw WUQ7d1ZQcCEmcCQ9SDJRYT40X2lDLVdzYDRvVnVga1h2REllNWxfZVZ8andX Oys1K1MKellneTZ+UFlkeSstY1M0NSl+azJaISRXQUFVY3Qrb2tea3JDK01s VnMrcHBmeWNgQEZgbkM8PmwtVk1xP3Q1cil9CnpCVDc7ZE9IIT9waSZCOVVn T1AhdXB7e3xFdTkxMCZwXjI1RHJJbzN2d3Q8PElma0ZQaGtldyhSYWBSSSUo PCpVbQpVa2JDQHc2e3Z5MSk3OCZxb2xgOyswTFFNVzVkWilICgpsaXRlcmFs IDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy9zdGF0aWMvaW1nL21hdGVyaWFsaXplZF92aWV3LnBuZyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9pbWcvbWF0ZXJpYWxpemVkX3ZpZXcu cG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNzJiZGJiMDI0ZDIwNmE5 Y2NjY2MzMDdiOTgwYWY3ZGM5Y2VhODgKR0lUIGJpbmFyeSBwYXRjaApsaXRl cmFsIDM0NAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2MXw7UF98 NCMlYG9DT3x7I1M5R0chWFY3WkZsJndrMHxPKE0KenI7QjVWI3AmYihpSHJq ciR2SGJFe3tCQ0B6MWJ6eFhvX1p2IThGfnBsbXNBWDxsT2hHWnB5KjRUZT0h UVBGRmJtCnpVO1l0flByWnd6I1EhMj1nTVpIKHZqM2RfKGZtO09hQXc9P149 MWM7SzRBT3ZgK3hnR2BfSktSdkVzS3MrfHBabgp6O14+RCp4Nk9UK0NwZDA4 biFJTSNeTFoxRjNNM3kpNzJjSDspMyloQkB3KDwkRU50dUkhKzM3WCYzWUtw ZTcpaU8Kem83RUJfRT4wNTlXVHJRRVM5O3hYZGlkRCUhSzEwa0pScVBzJjBr e0RmOUgldnU/KE0heHROcz8mdnxVYik2KmokCnpieXErdiR5eGc1JT9qUUUh fUNjJEtFRyFfZTgydl9xfXxffDY5KjEjPXlIczhaZnlqRGhyaSNLMUM4PERw I0Y0bwpsZkEjPFFeX1RwTWc1KVpJZnQ0S3xFNEtVcENTWHU4YylJJHp0YUQw ZTBzeFMpbG0tOSoKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9pbWcvdmlldy5wbmcg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvaW1nL3ZpZXcucG5nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ0MTE2ZGI1NjQ5NmJiNDc3YzhlY2U3 ZDNmZGRhNjY2ZTFiMzc1OGIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQz Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVhA RjBORTA4fD54T2RLUm5hQlRvQU80PjcKejtPbjlYWitBVUBkR1lEPGBfRz8w ZWZJM3g8RU9XN0pZUkZ7TWVAUV5udmVjPlotMSV3fE5zQihGVnReO3A3UHx5 Cnpqb1U5YlQ9fGk2O2NNZFEmdGI8dGRTQ2dUYkt6VSFAc0hseVUjTEMmLSts YXBfayh8SmNtQ0FmezhmN09OQX1fTwp6NCpUQWk/UnVzNlJkclAmJnw9MXRB aXJQK2hpNW1eSyU2OVJjTmY3JlRXeG0lSWgrTF5rO09wVDFCfjVIWDQ/VDcK elMpTU1BQXJoQzk2QW0hK187QGc9OTV7MDMoNVlrUjR4VClFXno3bCY+X1FM UkgzU2x4STU/YWJvZndxI1BwR2huCnozeTNgd2F1cE8xbzw2fXZhS2ZaJTZC dlV3QmB7aH1YeFB6VzZUPmlqcCtSPHspJjwjUjNzeC1BKE5rUSFYY2Ijbgp6 PDBESHFwWXpOTkp6TG18fDUkeXgwSkslTCM1Sk5NQzl4I2NEIUN7WE5IR3sw NyNpcHI4dEVEc2g4UClHbkhYRHsKem19KG9DU3tXRzNkI0FTd01NR3xXTkBp TG1NMXo0UFNPWllDaUlzc0ZNOG0xK3A9KkV8Nyg4QTVULUdAeUd5d254CkNt OSgoewoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3 L2Nzcy9tYXRlcmlhbGl6ZWRfdmlldy5jc3MgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvY3NzL21hdGVyaWFs aXplZF92aWV3LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi44MGI2NGJhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L2Nzcy9tYXRl cmlhbGl6ZWRfdmlldy5jc3MKQEAgLTAsMCArMSwxMiBAQAorLmljb24tbWF0 ZXJpYWxpemVkX3ZpZXd7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgne3sg dXJsX2ZvcignTk9ERS1tYXRlcmlhbGl6ZWRfdmlldy5zdGF0aWMnLCBmaWxl bmFtZT0naW1nL21hdGVyaWFsaXplZF92aWV3LnBuZycpIH19JykgIWltcG9y dGFudDsKKyAgYm9yZGVyLXJhZGl1czogMTBweDsKKyAgYmFja2dyb3VuZC1y ZXBlYXQ6IG5vLXJlcGVhdDsKKyAgYWxpZ24tY29udGVudDogY2VudGVyOwor ICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworICBoZWlnaHQ6IDEuM2VtOwor fQorCisuc3FsX2ZpZWxkX2hlaWdodF8yODAgeworICBoZWlnaHQ6IDI4MHB4 OworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL21hdGVyaWFsaXplZF92aWV3L2pzL21hdGVyaWFsaXplZF92aWV3Lmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXpl ZF92aWV3L2pzL21hdGVyaWFsaXplZF92aWV3LmpzCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYzNkM2MKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxp emVkX3ZpZXcvanMvbWF0ZXJpYWxpemVkX3ZpZXcuanMKQEAgLTAsMCArMSw0 NTAgQEAKK2RlZmluZSgKKyAgWydqcXVlcnknLCAndW5kZXJzY29yZScsICd1 bmRlcnNjb3JlLnN0cmluZycsICdwZ2FkbWluJywKKyAgICAncGdhZG1pbi5i cm93c2VyJywgJ2NvZGVtaXJyb3InLCAncGdhZG1pbi5icm93c2VyLnNlcnZl ci5wcml2aWxlZ2UnXSwKKworZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwg cGdCcm93c2VyLCBDb2RlTWlycm9yKSB7CisKKyAgdmFyIGNlbGxGdW5jdGlv biA9IGZ1bmN0aW9uKG1vZGVsKSB7CisgICAgdmFyIHNlbGYgPSB0aGlzLAor ICAgICAgICBtID0gbW9kZWwsCisgICAgICAgIHZhcnR5cGUgPSBtb2RlbC5n ZXQoJ2NvbHVtbl90eXBlJyk7CisKKyAgICBzd2l0Y2godmFydHlwZSkgewor ICAgICAgY2FzZSAiaW50ZWdlciI6CisgICAgICAgIHJldHVybiBCYWNrZ3Jp ZC5JbnRlZ2VyQ2VsbDsKKyAgICAgIGJyZWFrOworICAgICAgY2FzZSAibnVt YmVyIjoKKyAgICAgICAgcmV0dXJuIEJhY2tncmlkLk51bWJlckNlbGw7Cisg ICAgICBicmVhazsKKyAgICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgIHJl dHVybiBCYWNrZ3JpZC5TdHJpbmdDZWxsOworICAgICAgYnJlYWs7CisgICAg ICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQmFja2dyaWQuQ2VsbDsKKyAg ICAgIGJyZWFrOworICAgIH0KKyAgfTsKKworICAvLyBEZWZpbmUgU2VjdXJp dHkgTW9kZWwgd2l0aCBmaWVsZHMgYW5kIHZhbGlkYXRpb24KKyAgdmFyIFNl Y3VyaXR5TW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRl bmQoeworICAgIGRlZmF1bHRzOiB7CisgICAgICBwcm92aWRlcjogdW5kZWZp bmVkLAorICAgICAgc2VjdXJpdHlsYWJlbDogdW5kZWZpbmVkCisgICAgfSwK KyAgICBzY2hlbWE6IFt7CisgICAgICBpZDogJ3Byb3ZpZGVyJywgbGFiZWw6 ICd7eyBfKCJQcm92aWRlciIpIH19JywKKyAgICAgIHR5cGU6ICd0ZXh0Jywg ZWRpdGFibGU6IHRydWUKKyAgICB9LHsKKyAgICAgIGlkOiAnc2VjdXJpdHlf bGFiZWwnLCBsYWJlbDogJ3t7IF8oIlNlY3VyaXR5IExhYmVsIikgfX0nLAor ICAgICAgdHlwZTogJ3RleHQnLCBlZGl0YWJsZTogdHJ1ZQorICAgIH1dLAor CisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworCisgICAgICAvLyBDbGVh ciBlcnJvck1vZGVsIGJlZm9yZSB2YWxpZGF0ZQorICAgICAgdGhpcy5oYW5k bGVyLmVycm9yTW9kZWwuY2xlYXIoKTsKKworICAgICAgdmFyIGVyciA9IHt9 LAorICAgICAgICBlcnJtc2cgPSBudWxsLAorICAgICAgICBmaWVsZF9uYW1l ID0gdGhpcy5nZXQoJ3Byb3ZpZGVyJyksCisgICAgICAgIGZpZWxkX3NlY3Vy aXR5X2xhYmVsID0gdGhpcy5nZXQoJ3NlY3VyaXR5X2xhYmVsJyk7CisKKyAg ICAgIGlmIChfLmlzVW5kZWZpbmVkKGZpZWxkX25hbWUpIHx8IF8uaXNOdWxs KGZpZWxkX25hbWUpIHx8CisgICAgICAgIFN0cmluZyhmaWVsZF9uYW1lKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09PSAnJykgeworICAgICAgICBl cnJbJ3Byb3ZpZGVyJ10gPSAne3sgXygiUHJvdmlkZXIgY2Fubm90IGJlIGVt cHR5LiIpIH19JzsKKyAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVyclsn cHJvdmlkZXInXTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgncHJv dmlkZXInLCBlcnJtc2cpOworICAgICAgICByZXR1cm4gZXJybXNnOworICAg ICAgfWVsc2V7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgncHJv dmlkZXInKTsKKyAgICAgIH0KKworICAgICAgaWYgKF8uaXNVbmRlZmluZWQo ZmllbGRfc2VjdXJpdHlfbGFiZWwpIHx8IF8uaXNOdWxsKGZpZWxkX3NlY3Vy aXR5X2xhYmVsKSB8fAorICAgICAgICBTdHJpbmcoZmllbGRfc2VjdXJpdHlf bGFiZWwpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT09ICcnKSB7Cisg ICAgICAgIGVyclsnc2VjdXJpdHlfbGFiZWwnXSA9ICd7eyBfKCJTZWN1cml0 eSBMYWJlbCBjYW5ub3QgYmUgZW1wdHkuIikgfX0nOworICAgICAgICBlcnJt c2cgPSBlcnJtc2cgfHwgZXJyWydzZWN1cml0eV9sYWJlbCddOworICAgICAg ICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZWN1cml0eV9sYWJlbCcsIGVycm1z Zyk7CisgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICB9ZWxzZXsKKyAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdzZWN1cml0eV9sYWJlbCcp OworICAgICAgfQorICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICB9KTsK KworICAvLyBEZWZpbmUgU2VjdXJpdHkgTW9kZWwgd2l0aCBmaWVsZHMgYW5k IHZhbGlkYXRpb24KKyAgdmFyIFZhY3V1bVRhYmxlTW9kZWwgPSBwZ0FkbWlu LkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7 CisgICAgICBuYW1lOiB1bmRlZmluZWQsCisgICAgICBzZXR0aW5nOiB1bmRl ZmluZWQsCisgICAgICBsYWJlbDp1bmRlZmluZWQsCisgICAgICB2YWx1ZTog dW5kZWZpbmVkLAorICAgICAgY29sdW1uX3R5cGU6IHVuZGVmaW5lZAorICAg IH0sCisKKyAgICB0b0pTT046IGZ1bmN0aW9uKCl7CisgICAgICB2YXIgZCA9 IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLnByb3RvdHlwZS50b0pTT04u YXBwbHkodGhpcyk7CisgICAgICBkZWxldGUgZC5sYWJlbDsKKyAgICAgIGRl bGV0ZSBkLnNldHRpbmc7CisgICAgICBkZWxldGUgZC5jb2x1bW5fdHlwZTsK KyAgICAgIHJldHVybiBkOworICAgIH0KKyAgfSk7CisKKyAgLyoqCisgICAg Q3JlYXRlIGFuZCBhZGQgYSB2aWV3IGNvbGxlY3Rpb24gaW50byBub2Rlcwor ICAgIEBwYXJhbSB7dmFyaWFibGV9IGxhYmVsIC0gTGFiZWwgZm9yIE5vZGUK KyAgICBAcGFyYW0ge3ZhcmlhYmxlfSB0eXBlIC0gVHlwZSBvZiBOb2RlCisg ICAgQHBhcmFtIHt2YXJpYWJsZX0gY29sdW1ucyAtIExpc3Qgb2YgY29sdW1u cyB0bworICAgICAgZGlzcGxheSB1bmRlciB1bmRlciBwcm9wZXJ0aWVzLgor ICAgKi8KKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtbWF0ZXJpYWxp emVkX3ZpZXcnXSkgeworICAgIHZhciBtYXRlcmlhbGl6ZWRfdmlld3M9IHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1tYXRlcmlhbGl6ZWRfdmlldydd ID0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7 CisgICAgICAgIG5vZGU6ICdtYXRlcmlhbGl6ZWRfdmlldycsCisgICAgICAg IGxhYmVsOiAne3sgXygiTWF0ZXJpYWxpemVkIFZpZXdzIikgfX0nLAorICAg ICAgICB0eXBlOiAnY29sbC1tYXRlcmlhbGl6ZWRfdmlldycsCisgICAgICAg IGNvbHVtbnM6IFsnbmFtZScsICdvd25lciddCisgICAgICB9KTsKKyAgfQor CisgIC8qKgorICAgIENyZWF0ZSBhbmQgQWRkIGEgVmlldyBOb2RlIGludG8g bm9kZXMKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBwYXJlbnRfdHlwZSAtIFRo ZSBsaXN0IG9mIG5vZGVzCisgICAgdW5kZXIgd2hpY2ggdGhpcyBub2RlIHRv IGRpc3BsYXkKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSB0eXBlIC0gVHlwZSBv ZiBOb2RlCisgICAgQHBhcmFtIHt2YXJpYWJsZX0gaGFzU1FMIC0gVG8gc2hv dyBTUUwgdGFiCisgICAgQHBhcmFtIHt2YXJpYWJsZX0gY2FuRHJvcCAtIEFk ZHMgZHJvcCB2aWV3IG9wdGlvbgorICAgIGluIHRoZSBjb250ZXh0IG1lbnUK KyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBjYW5Ecm9wQ2FzY2FkZSAtIEFkZHMg ZHJvcCBDYXNjYWRlCisgICAgdmlldyBvcHRpb24gaW4gdGhlIGNvbnRleHQg bWVudQorICAgKi8KKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ21hdGVyaWFs aXplZF92aWV3J10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ21h dGVyaWFsaXplZF92aWV3J10gPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5leHRl bmQoeworICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cn XSwKKyAgICAgIHR5cGU6ICdtYXRlcmlhbGl6ZWRfdmlldycsCisgICAgICBs YWJlbDogJ3t7IF8oIk1hdGVyaWFsaXplZCBWaWV3IikgfX0nLAorICAgICAg aGFzU1FMOiAgdHJ1ZSwKKyAgICAgIGhhc0RlcGVuZHM6IHRydWUsCisgICAg ICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLW1hdGVyaWFsaXplZF92aWV3JywK KyAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2Fu Q2hpbGREcm9wLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5O b2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgSW5pdDogZnVu Y3Rpb24oKSB7CisKKyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0 cmF0aW9uIG9mIG1lbnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVk KQorICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxp emVkID0gdHJ1ZTsKKworICAgICAgICAvKioKKyAgICAgICAgICBBZGQgImNy ZWF0ZSB2aWV3IiBtZW51IG9wdGlvbiBpbnRvIGNvbnRleHQgYW5kIG9iamVj dCBtZW51CisgICAgICAgICAgZm9yIHRoZSBmb2xsb3dpbmcgbm9kZXM6Cisg ICAgICAgICAgY29sbC1tYXRlcmlhbGl6ZWRfdmlldywgdmlldyBhbmQgc2No ZW1hLgorICAgICAgICAgIEBwcm9wZXJ0eSB7ZGF0YX0gLSBBbGxvdyBjcmVh dGUgdmlldyBvcHRpb24gb24gc2NoZW1hIG5vZGUgb3IKKyAgICAgICAgICBz eXN0ZW0gdmlldyBub2Rlcy4KKyAgICAgICAgICovCisgICAgICAgIHBnQnJv d3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX21h dGVyaWFsaXplZF92aWV3X29uX2NvbGwnLCBub2RlOiAnY29sbC1tYXRlcmlh bGl6ZWRfdmlldycsCisgICAgICAgICAgbW9kdWxlOiB0aGlzLCBhcHBsaWVz OiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpf cHJvcGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBw cmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCJNYXRlcmlhbGl6ZWQgVmlldy4u LiIpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tbWF0 ZXJpYWxpemVkX3ZpZXcnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hl Y2s6IHRydWV9LAorICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAg ICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9tYXRlcmlhbGl6 ZWRfdmlldycsIG5vZGU6ICdtYXRlcmlhbGl6ZWRfdmlldycsIG1vZHVsZTog dGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0 J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAg ICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7 eyBfKCJNYXRlcmlhbGl6ZWQgVmlldy4uLiIpIH19JywKKyAgICAgICAgICBp Y29uOiAnd2NUYWJJY29uIGljb24tbWF0ZXJpYWxpemVkX3ZpZXcnLCBkYXRh OiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAorICAgICAgICAg IGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7CisgICAgICAgICAg bmFtZTogJ2NyZWF0ZV9tYXRlcmlhbGl6ZWRfdmlldycsIG5vZGU6ICdzY2hl bWEnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWydvYmpl Y3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRp ZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6 IDQsIGxhYmVsOiAne3sgXygiTWF0ZXJpYWxpemVkIFZpZXcuLi4iKSB9fScs CisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLW1hdGVyaWFsaXpl ZF92aWV3JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxz ZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9 CisgICAgICAgIF0pOworICAgICAgfSwKKworICAgICAgLyoqCisgICAgICAg IERlZmluZSBtb2RlbCBmb3IgdGhlIHZpZXcgbm9kZSBhbmQgc3BlY2lmeSB0 aGUKKyAgICAgICAgcHJvcGVydGllcyBvZiB0aGUgbW9kZWwgaW4gc2NoZW1h LgorICAgICAgICovCisgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5v ZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAg ICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFt ZScsIGxhYmVsOiAne3sgXygiTmFtZSIpIH19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgdHlwZTogJ3RleHQnCisgICAgICAgIH0sCisgICAgICAg IHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCJPSUQiKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg ZGlzYWJsZWQ6IHRydWUsIG1vZGU6IFsncHJvcGVydGllcyddCisgICAgICAg IH0sCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6 J3t7IF8oIk93bmVyIikgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBub2RlOiAncm9sZScK KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAnc2NoZW1h JywgbGFiZWw6J3t7IF8oIlNjaGVtYSIpIH19JywgY2VsbDogJ3N0cmluZycs IGZpcnN0X2VtcHR5OiBmYWxzZSwKKyAgICAgICAgICB0eXBlOiAnb3B0aW9u cycsIG5vZGU6ICdzY2hlbWEnLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbC5leHRlbmQoeworICAgICAgICAg ICAgcmVuZGVyOiBmdW5jdGlvbigpeworCisgICAgICAgICAgICAgIC8vIElu aXRpYWxpemUgcGFyZW50J3MgcmVuZGVyIG1ldGhvZAorICAgICAgICAgICAg ICBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRyb2wucHJvdG90eXBlLnJl bmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworCisgICAgICAgICAgICAg IC8vIFNldCBzY2hlbWEgZGVmYXVsdCB2YWx1ZSB0byBpdHMgcGFyZW50IFNj aGVtYQorICAgICAgICAgICAgICBpZih0aGlzLm1vZGVsLmlzTmV3KCkpewor ICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KHsnc2NoZW1hJzogdGhp cy5tb2RlbC5ub2RlX2luZm8uc2NoZW1hLmxhYmVsfSk7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgICAg ICB9CisgICAgICAgICAgfSksCisKKyAgICAgICAgICAvLyBEb24ndCBzaG93 IHNjaGVtYSBzdGFydHMgd2l0aCAicGdfIgorICAgICAgICAgIGZpbHRlcjog ZnVuY3Rpb24oZCl7CisgICAgICAgICAgICBpZihkLmxhYmVsICYmIGQubGFi ZWwubWF0Y2goL15wZ18vKSl7CisgICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAg IGlkOiAnY29tbWVudCcsIGxhYmVsOid7eyBfKCJDb21tZW50IikgfX0nLCBj ZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJwor ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgaWQ6ICdzeXN0ZW1f dmlldycsIGxhYmVsOid7eyBfKCJTeXN0ZW0gdmlldz8iKSB9fScsIGNlbGw6 ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBkaXNhYmxl ZDogdHJ1ZSwgbW9kZTogWydwcm9wZXJ0aWVzJ10sCisgICAgICAgIH0sCisg ICAgICAgIHsKKyAgICAgICAgICBpZDogJ2RlZmluaXRpb24nLCBsYWJlbDon e3sgXygiIikgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBl OiAndGV4dCcsIG1vZGU6IFsnY3JlYXRlJywgJ2VkaXQnXSwgZ3JvdXA6ICdE ZWZpbml0aW9uJywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5TcWxG aWVsZENvbnRyb2wsIGV4dHJhQ2xhc3NlczpbJ3NxbF9maWVsZF9oZWlnaHRf MjgwJ10KKyAgICAgICAgfSwKKyAgICAgICAgLy8gQWRkIFByaXZpbGVnZSBD b250cm9sCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ2RhdGFjbCcsIGxh YmVsOiAne3sgXygiUHJpdmlsZWdlcyIpIH19JywKKyAgICAgICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuUHJpdmlsZWdlUm9sZU1vZGVsLmV4 dGVuZCgKKyAgICAgICAgICAgIHtwcml2aWxlZ2VzOiBbJ2EnLCAncicsICd3 JywgJ2QnLCAnRCcsICd4JywgJ3QnXX0pLCB1bmlxdWVDb2wgOiBbJ2dyYW50 ZWUnXSwKKyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdjb2xs ZWN0aW9uJywgZ3JvdXA6ICd7eyBfKCJTZWN1cml0eSIpIH19JywKKyAgICAg ICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDogdHJ1ZSwg Y2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAgIGNvbnRyb2w6ICd1bmlxdWUt Y29sLWNvbGxlY3Rpb24nLCBwcmlvcml0eTogMworICAgICAgICB9LAorCisg ICAgICAgIC8vIEFkZCBTZWN1cml0eSBMYWJlbHMgQ29udHJvbAorICAgICAg ICB7CisgICAgICAgICAgaWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDogJ3t7IF8o IlNlY3VyaXR5IExhYmVscyIpIH19JywKKyAgICAgICAgICBtb2RlbDogU2Vj dXJpdHlNb2RlbCwgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlv bicsCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGdyb3VwOiAne3sgXygi U2VjdXJpdHkiKSB9fScsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAgICAgICBt b2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDogdHJ1ZSwKKyAgICAg ICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywgdW5pcXVl Q29sIDogWydwcm92aWRlciddCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg ICAgICAgICBpZDogJ3dpdGhfZGF0YScsIGxhYmVsOiAne3sgXygiV2l0aCBE YXRhIikgfX0nLAorICAgICAgICAgIGdyb3VwOiAne3sgXygiU3RvcmFnZSIp IH19JywgbW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIHR5 cGU6ICdzd2l0Y2gnLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg ICAgaWQ6ICdzcGNuYW1lJywgbGFiZWw6ICd7eyBfKCJUYWJsZXNwYWNlIikg fX0nLAorICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgZ3JvdXA6ICd7eyBf KCJTdG9yYWdlIikgfX0nLAorICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdj cmVhdGUnXSwgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywKKyAgICAg ICAgICB1cmw6ICdnZXRfdGJsc3BjJywgZmlyc3RfZW1wdHk6IHRydWUKKyAg ICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAnZmlsbGZhY3Rv cicsIGxhYmVsOiAne3sgXygiRmlsbCBGYWN0b3IiKSB9fScsCisgICAgICAg ICAgZ3JvdXA6ICd7eyBfKCJTdG9yYWdlIikgfX0nLCBtb2RlOiBbJ2VkaXQn LCAnY3JlYXRlJ10sCisgICAgICAgICAgdHlwZTogJ2ludGVnZXInLCBtaW46 IDEwLCBtYXg6IDEwMAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg ICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICd0YWInLCBpZDogJ21hdGVy aWFsaXphdGlvbicsCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCJNYXRlcmlh bGl6YXRpb24iKSB9fScsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUnXSwKKyAg ICAgICAgICBncm91cDogJ3t7IF8oIlN0b3JhZ2UiKSB9fScsCisgICAgICAg ICAgc2NoZW1hOlsKKyAgICAgICAgICAgIC8vIERlZmluZSBtYXRlcmlhbGl6 ZWQgdGFibGUgdGFiIGZpZWxkcworICAgICAgICAgICAgeworICAgICAgICAg ICAgICBpZDogJ2F1dG92YWN1dW1fY3VzdG9tJywgbGFiZWw6ICd7eyBfKCJD dXN0b20gYXV0by12YWNjdW0iKSB9fScsCisgICAgICAgICAgICAgIGdyb3Vw OiAne3sgXygiVGFibGUiKSB9fScsIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwKKyAgICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcsCisgICAgICAgICAg ICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ2F1dG92 YWN1dW1fZW5hYmxlZCcsIGxhYmVsOiAne3sgXygiRW5hYmxlZCIpIH19JywK KyAgICAgICAgICAgICAgZ3JvdXA6ICd7eyBfKCJUYWJsZSIpIH19JywgbW9k ZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgICAgICB0eXBlOiAn c3dpdGNoJywKKyAgICAgICAgICAgICAgZGVwczogWydhdXRvdmFjdXVtX2N1 c3RvbSddLAorICAgICAgICAgICAgICBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgICAgIGlmKG0uaGFzKCdhdXRvdmFjdXVtX2N1c3Rv bScpKSB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gIW0uZ2V0KCdhdXRv dmFjdXVtX2N1c3RvbScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICByZXR1cm4gbS5pc05ldygpOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICBp ZDogJ3ZhY3V1bV90YWJsZScsIGxhYmVsOiAne3sgXygiVmFjdXVtIFRhYmxl IikgfX0nLAorICAgICAgICAgICAgICBtb2RlbDogVmFjdXVtVGFibGVNb2Rl bCwgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29sbGVjdGlvbicsCisgICAg ICAgICAgICAgIGNhbkVkaXQ6IHRydWUsIGdyb3VwOiAne3sgXygiVGFibGUi KSB9fScsCisgICAgICAgICAgICAgIG1vZGU6IFsnZWRpdCcsICdjcmVhdGUn XSwgdXJsOiAnZ2V0X3ZhY3V1bV9kZWZhdWx0cycsCisgICAgICAgICAgICAg IGNvbnRyb2w6IEJhY2tmb3JtLlZhY3V1bUNvbGxlY3Rpb25Db250cm9sLmV4 dGVuZCh7CisgICAgICAgICAgICAgICAgZ3JpZF9jb2x1bW5zIDpbCisgICAg ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICds YWJlbCcsIGxhYmVsOiAne3sgXygiTGFiZWwiKSB9fScsCisgICAgICAgICAg ICAgICAgICAgIGNlbGw6ICdzdHJpbmcnLCBlZGl0YWJsZTogZmFsc2UKKyAg ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgIG5hbWU6ICd2YWx1ZScsIGxhYmVsOiAne3sgXygi VmFsdWUiKSB9fScsCisgICAgICAgICAgICAgICAgICAgIGNlbGxGdW5jdGlv bjogY2VsbEZ1bmN0aW9uLCBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAg ICAgICAgICAgICAgICAgICAgIGlmKG0uaGFuZGxlci5oYXMoJ2F1dG92YWN1 dW1fZW5hYmxlZCcpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4gbS5oYW5kbGVyLmdldCgnYXV0b3ZhY3V1bV9lbmFibGVkJyk7CisgICAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiAhbS5oYW5kbGVyLmlzTmV3KCk7CisgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5nJywgbGFiZWw6 ICd7eyBfKCJEZWZhdWx0IHZhbHVlIikgfX0nLAorICAgICAgICAgICAgICAg ICAgICBjZWxsRnVuY3Rpb246IGNlbGxGdW5jdGlvbiwgZWRpdGFibGU6IGZh bHNlCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXQor ICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgZGVwczogWydhdXRv dmFjdXVtX2VuYWJsZWQnXQorICAgICAgICAgICAgfSwKKworICAgICAgICAg ICAgLy8gRGVmaW5lIFRvYXN0IFRhYmxlIGdyb3VwIGZpZWxkcworICAgICAg ICAgICAgeworICAgICAgICAgICAgICBpZDogJ3RvYXN0X2F1dG92YWNjdW0n LCBsYWJlbDogJ3t7IF8oIkN1c3RvbSBhdXRvLXZhY2N1bSIpIH19JywKKyAg ICAgICAgICAgICAgZ3JvdXA6ICd7eyBfKCJUb2FzdCBUYWJsZSIpIH19Jywg bW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgICAgICB0eXBl OiAnc3dpdGNoJywKKyAgICAgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKTsKKyAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgaWQ6ICd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQn LCBsYWJlbDogJ3t7IF8oIkVuYWJsZWQiKSB9fScsCisgICAgICAgICAgICAg IGdyb3VwOiAne3sgXygiVG9hc3QgVGFibGUiKSB9fScsIG1vZGU6IFsnZWRp dCcsICdjcmVhdGUnXSwKKyAgICAgICAgICAgICAgdHlwZTogJ3N3aXRjaCcs CisgICAgICAgICAgICAgIGRlcHM6Wyd0b2FzdF9hdXRvdmFjY3VtJ10sCisg ICAgICAgICAgICAgIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICAgICAgaWYoIW0uaXNOZXcoKSkgeworICAgICAgICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIGVsc2UgaWYgKG0uaGFzKCd0b2FzdF9hdXRvdmFjY3VtJykpCisgICAg ICAgICAgICAgICAgICByZXR1cm4gIW0uZ2V0KCd0b2FzdF9hdXRvdmFjY3Vt Jyk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlkOiAndmFjdXVtX3Rv YXN0JywgbGFiZWw6ICd7eyBfKCJWYWN1dW0gVG9hc3QgVGFibGUiKSB9fScs CisgICAgICAgICAgICAgIG1vZGVsOiBWYWN1dW1UYWJsZU1vZGVsLCB0eXBl OiAnY29sbGVjdGlvbicsIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIG0uaXNOZXcoKTsKKyAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgY2FuRWRpdDogdHJ1ZSwgZ3JvdXA6ICd7eyBf KCJUb2FzdCBUYWJsZSIpIH19JywKKyAgICAgICAgICAgICAgbW9kZTogWydl ZGl0JywgJ2NyZWF0ZSddLCB1cmw6ICdnZXRfdmFjdXVtX3RvYXN0X2RlZmF1 bHRzJywKKyAgICAgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uVmFjdXVt Q29sbGVjdGlvbkNvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgICAgICBn cmlkX2NvbHVtbnMgOlsKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgICAgbmFtZTogJ2xhYmVsJywgbGFiZWw6ICd7eyBfKCJMYWJl bCIpIH19JywKKyAgICAgICAgICAgICAgICAgICAgY2VsbDogJ3N0cmluZycs IGVkaXRhYmxlOiBmYWxzZQorICAgICAgICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3Zh bHVlJywgbGFiZWw6ICd7eyBfKCJWYWx1ZSIpIH19JywKKyAgICAgICAgICAg ICAgICAgICAgY2VsbEZ1bmN0aW9uOiBjZWxsRnVuY3Rpb24sIGVkaXRhYmxl OiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgICAgICAgICAgaWYoIW0u aGFuZGxlci5pc05ldygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgICAgICAgIGVsc2UgaWYobS5oYW5kbGVyLmhhcygndG9hc3Rf YXV0b3ZhY3V1bV9lbmFibGVkJykpIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBtLmhhbmRsZXIuZ2V0KCd0b2FzdF9hdXRvdmFjdXVtX2Vu YWJsZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdzZXR0aW5n JywgbGFiZWw6ICd7eyBfKCJEZWZhdWx0IHZhbHVlIikgfX0nLAorICAgICAg ICAgICAgICAgICAgICBjZWxsRnVuY3Rpb246IGNlbGxGdW5jdGlvbiwgZWRp dGFibGU6IGZhbHNlCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgXQorICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgZGVw czogWyd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQnXQorICAgICAgICAgICAg fQorCisgICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAg ICAgICAgaWQ6ICdhY2wnLCBsYWJlbDogJ3t7IF8oIkFDTCIpIH19JywKKyAg ICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwgdHlwZTogJ3RleHQnCisg ICAgICAgIH0sCisgICAgICAgIF0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5j dGlvbigpIHsKKworICAgICAgICAgIC8vIFRyaWdnZXJzIHNwZWNpZmljIGVy cm9yIG1lc3NhZ2VzIGZvciBmaWVsZHMKKyAgICAgICAgICB2YXIgZXJyID0g e30sCisgICAgICAgICAgICBlcnJtc2csCisgICAgICAgICAgICBmaWVsZF9u YW1lID0gdGhpcy5nZXQoJ25hbWUnKSwKKyAgICAgICAgICAgIGZpZWxkX2Rl ZiA9IHRoaXMuZ2V0KCdkZWZpbml0aW9uJyk7CisgICAgICAgICAgaWYgKF8u aXNVbmRlZmluZWQoZmllbGRfbmFtZSkgfHwgXy5pc051bGwoZmllbGRfbmFt ZSkgfHwKKyAgICAgICAgICAgIFN0cmluZyhmaWVsZF9uYW1lKS5yZXBsYWNl KC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJb J25hbWUnXSA9ICd7eyBfKCJQbGVhc2Ugc3BlY2lmeSBuYW1lLiIpIH19JzsK KyAgICAgICAgICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ25hbWUnXTsK KyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBlcnJt c2cpOworICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICB9 ZWxzZXsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmFt ZScpOworICAgICAgICAgIH0KKyAgICAgICAgICBpZih0aGlzLmlzTmV3KCkp eworICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZmllbGRfZGVmKSB8 fCBfLmlzTnVsbChmaWVsZF9kZWYpIHx8CisgICAgICAgICAgICAgIFN0cmlu ZyhmaWVsZF9kZWYpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycp IHsKKyAgICAgICAgICAgICAgZXJyWydkZWZpbml0aW9uJ10gPSAne3sgXygi UGxlYXNlIGVudGVyIGZ1bmN0aW9uIGRlZmluaXRpb24uIikgfX0nOworICAg ICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydkZWZpbml0aW9u J107CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2RlZmlu aXRpb24nLCBlcnJtc2cpOworICAgICAgICAgICAgICByZXR1cm4gZXJybXNn OworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgIHRoaXMuZXJy b3JNb2RlbC51bnNldCgnZGVmaW5pdGlvbicpOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg fQorCisgICAgICB9KSwKKworICAgICAgLyoqCisgICAgICAgIFNob3cgb3Ig aGlkZSBjcmVhdGUgdmlldyBtZW51IG9wdGlvbiBvbiBwYXJlbnQgbm9kZQor ICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3Mu CisgICAgICAgKi8KKyAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURh dGEsIGl0ZW0sIGRhdGEpIHsKKworICAgICAgICAvLyBJZiBjaGVjayBpcyBm YWxzZSB0aGVuLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51CisgICAgICAg IGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZhbHNlKQorICAgICAgICAg IHJldHVybiB0cnVlOworCisgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisKKyAgICAgICAgLy8gVG8g aXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAg ICAgd2hpbGUgKGkpIHsKKworICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVt YSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcKKyAgICAgICAgICBp ZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCisgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgIGlmICgnY29sbC1t YXRlcmlhbGl6ZWRfdmlldycgPT0gZC5fdHlwZSkgeworCisgICAgICAgICAg ICAvLyBDaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIHZpZXcKKyAgICAg ICAgICAgIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOworICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVt RGF0YShwcmV2X2kpIDogbnVsbDsKKyAgICAgICAgICAgIGlmKCBwcmV2X2Qu X3R5cGUgPT0gJ2NhdGFsb2cnKSB7CisgICAgICAgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7 CisgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKKyAg ICAgICAgfQorCisgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdh bnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgcmV0dXJuIHRydWU7 CisKKyAgICAgIH0KKyAgfSk7CisgIH0KKworICByZXR1cm4gcGdCcm93c2Vy Lk5vZGVzWydjb2xsLW1hdGVyaWFsaXplZF92aWV3J107Cit9KTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlh bGl6ZWRfdmlldy9wZy85LjNfcGx1cy9zcWwvYWNsLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85 LjNfcGx1cy9zcWwvYWNsLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4wYzFiZDZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3Bn LzkuM19wbHVzL3NxbC9hY2wuc3FsCkBAIC0wLDAgKzEsNDEgQEAKK3sjPT09 PT09PT09PT09PT09PT09PT09PT09PT09PUdldCBBQ0xzPT09PT09PT09PT09 PT09PT09PT09PT09PSN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAgICdk YXRhY2wnIGFzIGRlZnR5cGUsCisgICAgQ09BTEVTQ0UoZ3Qucm9sbmFtZSwg J3B1YmxpYycpIGdyYW50ZWUsCisgICAgZy5yb2xuYW1lIGdyYW50b3IsCisg ICAgYXJyYXlfYWdnKHByaXZpbGVnZV90eXBlKSBhcyBwcml2aWxlZ2VzLAor ICAgIGFycmF5X2FnZyhpc19ncmFudGFibGUpIGFzIGdyYW50YWJsZQorRlJP TQorICAgIChTRUxFQ1QKKyAgICAgICAgZC5ncmFudGVlLAorICAgICAgICBk LmdyYW50b3IsCisgICAgICAgIGQuaXNfZ3JhbnRhYmxlLAorICAgICAgICBD QVNFIGQucHJpdmlsZWdlX3R5cGUKKyAgICAgICAgICBXSEVOICdERUxFVEUn IFRIRU4gJ2QnCisgICAgICAgICAgV0hFTiAnSU5TRVJUJyBUSEVOICdhJwor ICAgICAgICAgIFdIRU4gJ1JFRkVSRU5DRVMnIFRIRU4gJ3gnCisgICAgICAg ICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICAgIFdIRU4gJ1RS SUdHRVInIFRIRU4gJ3QnCisgICAgICAgICAgV0hFTiAnVVBEQVRFJyBUSEVO ICd3JworICAgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAg ICAgICAgIEVMU0UgJ1VOS05PV04nCisgICAgICAgIEVORCBBUyBwcml2aWxl Z2VfdHlwZQorICAgIEZST00KKyAgICAgICAgKFNFTEVDVAorICAgICAgICAg ICAgcmVsYWNsCisgICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFz cyBjbAorICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3NoZGVzY3JpcHRp b24gZGVzY3IgT04KKyAgICAgICAgICAgIChjbC5vaWQ9ZGVzY3Iub2Jqb2lk IEFORCBkZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAg ICAgICAgIFdIRVJFCisgICAgICAgICAgICBjbC5vaWQgPSB7eyB2aWQgfX06 Ok9JRCBBTkQgcmVsa2luZCA9ICdtJworICAgICAgICApIGFjbCwKKyAgICAg ICAgYWNsZXhwbG9kZShyZWxhY2wpIGQKKyAgICApIGQKK0xFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQor TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRl ZSA9IGd0Lm9pZCkKK0dST1VQIEJZCisgICAgZy5yb2xuYW1lLAorICAgIGd0 LnJvbG5hbWUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcGcvOS4z X3BsdXMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2Ny ZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MDMyNjBjOQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Zp ZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85LjNfcGx1cy9z cWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDQ1IEBACit7IyA9PT09PT09PT09 PT09PT09PT09PT0gQ3JlYXRlIG5ldyB2aWV3ID09PT09PT09PT09PT09PT09 PT09PSAjfQoreyUgaWYgZGlzcGxheV9jb21tZW50cyAlfQorLS0gVmlldzog e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisK Ky0tIERST1AgTUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5uYW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5kZWZpbml0 aW9uICV9CitDUkVBVEUgTUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElk ZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19Cit7JSBpZihkYXRhLmZp bGxmYWN0b3Igb3IgZGF0YVsnYXV0b3ZhY3V1bV9lbmFibGVkJ10gb3IgZGF0 YVsndG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkJ10pICV9CitXSVRIKAoreyUg aWYgZGF0YS5maWxsZmFjdG9yICV9CisgIEZJTExGQUNUT1IgPSB7eyBkYXRh LmZpbGxmYWN0b3IgfX17JSBpZiBkYXRhWydhdXRvdmFjdXVtX2VuYWJsZWQn XSBvciBkYXRhWyd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQnXSBvciBkYXRh Wyd2YWN1dW1fZGF0YSddfGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX17eyAn XHInIH19Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YVsnYXV0b3ZhY3V1bV9l bmFibGVkJ10gJX0KKyAgYXV0b3ZhY3V1bV9lbmFibGVkID0ge3sgZGF0YVsn YXV0b3ZhY3V1bV9lbmFibGVkJ118bG93ZXIgfX17JSBpZiBkYXRhWyd0b2Fz dF9hdXRvdmFjdXVtX2VuYWJsZWQnXSBvciBkYXRhWyd2YWN1dW1fZGF0YSdd fGxlbmd0aCA+IDAgJX0seyUgZW5kaWYgJX17eyAnXHInIH19Cit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YVsndG9hc3RfYXV0b3ZhY3V1bV9lbmFibGVkJ10g JX0KKyAge3sgJ3RvYXN0LmF1dG92YWN1dW1fZW5hYmxlZCcgfX0gPSB7eyBk YXRhWyd0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQnXXxsb3dlciB9fXslIGlm IGRhdGFbJ3ZhY3V1bV9kYXRhJ118bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAl fXt7ICdccicgfX0KK3slIGVuZGlmICV9Cit7JSBmb3IgZmllbGQgaW4gZGF0 YVsndmFjdXVtX2RhdGEnXSAlfQoreyUgaWYgZmllbGQudmFsdWUgaXMgZGVm aW5lZCBhbmQgZmllbGQudmFsdWUgIT0gJycgYW5kIGZpZWxkLnZhbHVlICE9 IG5vbmUgJX0KK3slIGlmIGxvb3AuaW5kZXggPiAxJX0sCit7JSBlbmRpZiAl fSAge3sgZmllbGQubmFtZSB9fSA9IHt7IGZpZWxkLnZhbHVlfGxvd2VyIH19 eyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfXt7ICdccicgfX0KKykKK3slIGVu ZGlmICV9Cit7JSBpZiBkYXRhLnNwY25hbWUgJX1UQUJMRVNQQUNFIHt7IGRh dGEuc3BjbmFtZSB9fQoreyUgZW5kaWYgJX0gQVMKK3t7IGRhdGEuZGVmaW5p dGlvbi5yc3RyaXAoJzsnKSB9fQoreyUgaWYgZGF0YS53aXRoX2RhdGEgJX0K KyBXSVRIIERBVEE7Cit7JSBlbHNlICV9CisgV0lUSCBOTyBEQVRBOworeyUg ZW5kaWYgJX0KK3slIGlmIGRhdGEub3duZXIgJX0KKworQUxURVIgVEFCTEUg e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19Cisg ICAgT1dORVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19Owor eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVudCAlfQorQ09NTUVOVCBP TiBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1l KSB9fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85 LjNfcGx1cy9zcWwvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85LjNfcGx1cy9zcWwv ZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jZjY2N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3BnLzkuM19wbHVz L3NxbC9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sjID09PT09PT09 PT09PT09PT09PT0gRHJvcC9DYXNjYWRlIG1hdGVyaWFsaXplZCB2aWV3IGJ5 IG5hbWUgPT09PT09PT09PT09PT09PT09PT0jfQoreyUgaWYgdmlkICV9CitT RUxFQ1QKKyAgICBjLnJlbG5hbWUgQXMgbmFtZSwKKyAgICBuc3AubnNwbmFt ZQorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19uYW1lc3Bh Y2UgbnNwIE9OIGMucmVsbmFtZXNwYWNlID0gbnNwLm9pZAorV0hFUkUKKyAg ICBjLnJlbGZpbGVub2RlID0ge3sgdmlkIH19OworeyUgZWxpZiAobmFtZSBh bmQgbnNwbmFtZSkgJX0KK0RST1AgTUFURVJJQUxJWkVEIFZJRVcge3sgY29u bnxxdElkZW50KG5zcG5hbWUsIG5hbWUpIH19IHslIGlmIGNhc2NhZGUgJX0g Q0FTQ0FERSB7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRf dmlldy9wZy85LjNfcGx1cy9zcWwvZ2V0X3RibHNwYy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcGcv OS4zX3BsdXMvc3FsL2dldF90YmxzcGMuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLmE4YTQ4MmMKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVk X3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2dldF90YmxzcGMuc3FsCkBAIC0wLDAg KzEsMiBAQAoreyMgPT09PT0gR2V0IGxpc3Qgb2YgdGFibGVzcGFjZXMgPT09 PT0gI30KK3NlbGVjdCB0YmxzcGMuc3BjbmFtZSBmcm9tIHBnX3RhYmxlc3Bh Y2UgdGJsc3BjIFdIRVJFIHRibHNwYy5zcGNuYW1lICE9ICdwZ19nbG9iYWwn CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv bWF0ZXJpYWxpemVkX3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2dyYW50LnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRf dmlldy9wZy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZGM4ZTUKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxp emVkX3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2dyYW50LnNxbApAQCAtMCwwICsx LDE0IEBACit7IyA9PT09PSBHcmFudCBQZXJtaXNzaW9ucyB0byBVc2VyIFJv bGUgb24gVmlld3MvVGFibGVzID09PT0gI30KK3slIGltcG9ydCAnbWFjcm9z L3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAn bWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdF ICV9Cit7IyBXZSB3aWxsIGdlbmVyYXRlIFNlY3VyaXR5IExhYmVsIFNRTCB1 c2luZyBtYWNybyAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZv ciByIGluIGRhdGEuc2VjbGFiZWxzICV9Cit7eyBTRUNMQUJMRS5BUFBMWShj b25uLCAnVklFVycsIGRhdGEubmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0 eV9sYWJlbCkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlm IGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbCAl fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50 ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhf Z3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL21hdGVyaWFsaXplZF92aWV3L3BnLzkuM19wbHVzL3NxbC9wcm9wZXJ0 aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRl cmlhbGl6ZWRfdmlldy9wZy85LjNfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxMTEyMwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85LjNfcGx1cy9zcWwvcHJvcGVy dGllcy5zcWwKQEAgLTAsMCArMSwxMDkgQEAKK3sjID09PT09PT09PT09PT09 PT09PT09PT09PT09IEZldGNoIE1hdGVyaWFsaXplZCBWaWV3IFByb3BlcnRp ZXMgPT09PT09PT09PT09PT09PT09PT09PT09PSAjfQoreyUgaWYgKHZpZCBh bmQgZGF0bGFzdHN5c29pZCkgb3Igc2NpZCAlfQorU0VMRUNUCisgICAgYy5v aWQsCisgICAgYy54bWluLAorICAgIGMucmVsbmFtZSBBUyBuYW1lLAorICAg IGMucmVsdGFibGVzcGFjZSBBUyBzcGNvaWQsCisgICAgYy5yZWxpc3BvcHVs YXRlZCBBUyB3aXRoX2RhdGEsCisgICAgKENBU0UgV0hFTiBsZW5ndGgoc3Bj LnNwY25hbWUpID4gMCBUSEVOIHNwYy5zcGNuYW1lIEVMU0UgJ3BnX2RlZmF1 bHQnIEVORCkgYXMgc3BjbmFtZSwKKyAgICBjLnJlbGFjbCwKKyAgICBuc3Au bnNwbmFtZSBhcyBzY2hlbWEsCisgICAgcGdfZ2V0X3VzZXJieWlkKGMucmVs b3duZXIpIEFTIG93bmVyLAorICAgIGRlc2NyaXB0aW9uIEFTIGNvbW1lbnQs CisgICAgcGdfZ2V0X3ZpZXdkZWYoYy5vaWQsIHRydWUpIEFTIGRlZmluaXRp b24sCisgICAgeyM9PT09PT09PT09PT09Q2hlY2tzIGlmIGl0IGlzIHN5c3Rl bSB2aWV3PT09PT09PT09PT09PT09PSN9CisgICAgeyUgaWYgdmlkIGFuZCBk YXRsYXN0c3lzb2lkICV9CisgICAgQ0FTRSBXSEVOIHt7dmlkfX0gPD0ge3tk YXRsYXN0c3lzb2lkfX0gVEhFTiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFTIHN5 c3RlbV92aWV3LAorICAgIHslIGVuZGlmICV9CisgICAgVHJ1ZSBBUyBhdXRv dmFjdXVtX2N1c3RvbSwKKyAgICBUcnVlIEFTIHRvYXN0X2F1dG92YWNjdW0s CisgICAgYXJyYXlfdG9fc3RyaW5nKGMucmVsYWNsOjp0ZXh0W10sICcsICcp IEFTIGFjbCwKKyAgICAoU0VMRUNUIGFycmF5X2FnZyhwcm92aWRlciB8fCAn PScgfHwgbGFiZWwpIEZST00gcGdfc2VjbGFiZWxzIHNsMSBXSEVSRSBzbDEu b2Jqb2lkPWMub2lkIEFORCBzbDEub2Jqc3ViaWQ9MCkgQVMgc2VjbGFiZWxz LAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25z LCAnLCcpCisgICAgICBGUk9NICdmaWxsZmFjdG9yPShbMC05XSopJykgQVMg ZmlsbGZhY3RvciwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMu cmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9lbmFi bGVkPShbYS16fDAtOV0qKScpIEFTIGF1dG92YWN1dW1fZW5hYmxlZCwKKyAg ICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywn KQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShb MC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAg IHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcp CisgICAgICBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9 KFswLTldKlsuXVswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1bV9zY2Fs ZV9mYWN0b3IsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJl bG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fYW5hbHl6 ZV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2FuYWx5emVf dGhyZXNob2xkLAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5y ZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX2FuYWx5 emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSopJykgQVMgYXV0b3Zh Y3V1bV9hbmFseXplX3NjYWxlX2ZhY3RvciwKKyAgICBzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAn YXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFTIGF1 dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00g J2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQ9KFswLTldKiknKSBBUyBh dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0LAorICAgIHN1YnN0cmluZyhh cnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9N ICdhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlPShbMC05XSopJykgQVMgYXV0 b3ZhY3V1bV9mcmVlemVfbWluX2FnZSwKKyAgICBzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0 b3ZhY3V1bV9mcmVlemVfbWF4X2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1 dW1fZnJlZXplX21heF9hZ2UsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1 dW1fZnJlZXplX3RhYmxlX2FnZT0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1f ZnJlZXplX3RhYmxlX2FnZSwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFj dXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1 bV9lbmFibGVkLAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcodHN0 LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFj dXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVswLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgICAg c3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywn KQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0o WzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hv bGQsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9hbmFseXplX3Nj YWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92 YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJP TSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheT0oWzAtOV0qKScpIEFT IHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXksCisgICAgc3Vi c3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQor ICAgICAgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1pdD0oWzAt OV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQs CisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9u cywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWluX2Fn ZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21pbl9h Z2UsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVsb3B0 aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfbWF4 X2FnZT0oWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fZnJlZXplX21h eF9hZ2UsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyh0c3QucmVs b3B0aW9ucywgJywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVf dGFibGVfYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9mcmVl emVfdGFibGVfYWdlLAorICAgIGMucmVsb3B0aW9ucyBBUyByZWxvcHRpb25z LCB0c3QucmVsb3B0aW9ucyBBUyB0b2FzdF9yZWxvcHRpb25zLAorICAgIChD QVNFIFdIRU4gYy5yZWx0b2FzdHJlbGlkID0gMCBUSEVOIGZhbHNlIEVMU0Ug dHJ1ZSBFTkQpIEFTIGhhc3RvYXN0dGFibGUKK0ZST00KKyAgICBwZ19jbGFz cyBjCitMRUZUIE9VVEVSIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBvbiBuc3Au b2lkID0gYy5yZWxuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTiBwZ190YWJs ZXNwYWNlIHNwYyBvbiBzcGMub2lkPWMucmVsdGFibGVzcGFjZQorTEVGVCBP VVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1j Lm9pZCBhbmQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFzc29pZD0ncGdf Y2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTiBwZ19jbGFzcyB0 c3QgT04gdHN0Lm9pZCA9IGMucmVsdG9hc3RyZWxpZAorICAgIFdIRVJFICgo Yy5yZWxoYXNydWxlcyBBTkQgKEVYSVNUUyAoCisgICAgICAgIFNFTEVDVAor ICAgICAgICAgICAgci5ydWxlbmFtZQorICAgICAgICBGUk9NCisgICAgICAg ICAgICBwZ19yZXdyaXRlIHIKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAg ICgoci5ldl9jbGFzcyA9IGMub2lkKQorICAgICAgICAgICAgICAgIEFORCAo YnBjaGFyKHIuZXZfdHlwZSkgPSAnMSc6OmJwY2hhcikpICkpKQorICAgICAg ICAgICAgQU5EIChjLnJlbGtpbmQgPSAnbSc6OmNoYXIpCisgICAgICAgICAg KQoreyUgaWYgKHZpZCBhbmQgZGF0bGFzdHN5c29pZCkgJX0KKyAgICBBTkQg Yy5vaWQgPSB7e3ZpZH19OjpvaWQKK3slIGVsaWYgc2NpZCAlfQorICAgIEFO RCBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK09SREVSIEJZCisg ICAgYy5yZWxuYW1lCit7JSBlbmRpZiAlfQorCit7JSBlbGlmIHR5cGUgPT0g J3JvbGVzJyAlfQorU0VMRUNUCisgICAgcHIucm9sbmFtZQorRlJPTQorICAg IHBnX3JvbGVzIHByCitXSEVSRQorICAgIHByLnJvbGNhbmxvZ2luCitPUkRF UiBCWQorICAgIHByLnJvbG5hbWUKKworeyUgZWxpZiB0eXBlID09ICdzY2hl bWFzJyAlfQorU0VMRUNUCisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBw Z19uYW1lc3BhY2UgbnNwCitXSEVSRQorICAgIChuc3AubnNwbmFtZSBOT1Qg TElLRSBFJ3BnXFxfJScKKyAgICAgICAgQU5EIG5zcC5uc3BuYW1lICE9ICdp bmZvcm1hdGlvbl9zY2hlbWEnKQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRf dmlldy9wZy85LjNfcGx1cy9zcWwvdXBkYXRlLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85LjNf cGx1cy9zcWwvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4zMGE5YTM0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3Bn LzkuM19wbHVzL3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTUyIEBACit7 IyA9PT09PT09PT09PT09PT09PT09PT0gVXBkYXRlIFZpZXcgPT09PT09PT09 PT09PT09PT09PSN9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1cml0eS5tYWNy b3MnIGFzIFNFQ0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFz L3ByaXZpbGVnZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUtIGlmIGRh dGEgLSV9Cit7JSBzZXQgdmlld19uYW1lID0gZGF0YS5uYW1lIGlmIGRhdGEu bmFtZSBlbHNlIG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgdmlld19zY2hlbWEg PSBkYXRhLnNjaGVtYSBpZiBkYXRhLnNjaGVtYSBlbHNlIG9fZGF0YS5zY2hl bWEgJX0KK3slIHNldCBkZWYgPSBkYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7 JykgaWYgZGF0YS5kZWZpbml0aW9uICV9Cit7IyA9PT09PSBSZW5hbWUgbWF0 IHZpZXcgPT09PT0gI30KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5uYW1l ICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBNQVRFUklBTElaRUQgVklFVyB7 eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19 CisgIFJFTkFNRSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsK KworeyUgZW5kaWYgJX0KK3sjID09PT09IEFsdGVyIHNjaGVtYSB2aWV3ID09 PT09ICN9Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0YS5zY2hlbWEgIT0g b19kYXRhLnNjaGVtYSAlfQorQUxURVIgTUFURVJJQUxJWkVEIFZJRVcge3sg Y29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEsIHZpZXdfbmFtZSApIH19Cisg IFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsK KworeyUgZW5kaWYgJX0KK3sjID09PT09IEFsdGVyIFRhYmxlIG93bmVyID09 PT09ICN9Cit7JSBpZiBkYXRhLm93bmVyIGFuZCBkYXRhLm93bmVyICE9IG9f ZGF0YS5vd25lciAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KHZp ZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgIE9XTkVSIFRPIHt7IGNvbm58 cXRJZGVudChkYXRhLm93bmVyKSB9fTsKKworeyUgZW5kaWYgJX0KK3slIGlm IGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ3Jlc2V0J118bGVuZ3RoID4gMCAlfQor QUxURVIgTUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdf c2NoZW1hLCB2aWV3X25hbWUpIH19CitSRVNFVCgKK3slIGZvciBmaWVsZCBp biBkYXRhWyd2YWN1dW1fZGF0YSddWydyZXNldCddICV9CisgIHt7IGZpZWxk Lm5hbWUgfX17JSBpZiBub3QgbG9vcC5sYXN0ICAlfSx7JSBlbmRpZiAlfXt7 ICdccicgfX0KK3slIGVuZGZvciAlfQorKQoreyUgZW5kaWYgJX0KK3sjID09 PT09IEZpcnN0IERyb3AgYW5kIHRoZW4gY3JlYXRlIG1hdCB2aWV3ID09PT09 ICN9Cit7JSBpZiBkZWYgYW5kIGRlZiAhPSBvX2RhdGEuZGVmaW5pdGlvbi5y c3RyaXAoJzsnKSAlfQoreyUgaWYgZGF0YS5maWxsZmFjdG9yIG9yICggZGF0 YVsndmFjdXVtX2RhdGEnXVsnY2hhbmdlZCddfGxlbmd0aCA+IDAgKSAlfQor RFJPUCBNQVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19z Y2hlbWEsIHZpZXdfbmFtZSkgfX07CitDUkVBVEUgTUFURVJJQUxJWkVEIFZJ RVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19 CitXSVRIKAoreyUgaWYgZGF0YS5maWxsZmFjdG9yICV9CisgIEZJTExGQUNU T1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBpZiBkYXRhWyd2YWN1dW1f ZGF0YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCAlfSx7JSBlbmRpZiAlfXt7 ICdccicgfX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhWyd2YWN1dW1fZGF0 YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCAlfQoreyUgZm9yIGZpZWxkIGlu IGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXSAlfQorICB7eyBmaWVs ZC5uYW1lIH19ID0ge3sgZmllbGQudmFsdWV8bG93ZXIgfX17JSBpZiBub3Qg bG9vcC5sYXN0ICAlfSx7JSBlbmRpZiAlfXt7ICdccicgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KKykKKyBBUwore3sgZGVmIH19Cit7JSBpZiBk YXRhLndpdGhfZGF0YSAlfQorIFdJVEggREFUQTsKKworeyUgZWxzZSAlfQor IFdJVEggTk8gREFUQTsKKworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7 JSBlbHNlICV9Cit7IyA9PT09PT09IEFsdGVyIFRhYmxlc3BhY2UgPT09PT09 PT09ICN9Cit7JS0gaWYgZGF0YS5zcGNvaWQgYW5kIG9fZGF0YS5zcGNvaWQg IT0gZGF0YS5zcGNvaWQgIC0lfQorQUxURVIgTUFURVJJQUxJWkVEIFZJRVcg e3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19Cisg IFNFVCBUQUJMRVNQQUNFIHt7IGRhdGEuc3Bjb2lkIH19OworCit7JSBlbmRp ZiAlfQoreyMgPT09PT09PSBTRVQvUkVTRVQgRmlsbGZhY3RvciA9PT09PT09 PT0gI30KK3slIGlmIGRhdGEuZmlsbGZhY3RvciBhbmQgb19kYXRhLmZpbGxm YWN0b3IgIT0gZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBNQVRFUklBTEla RUQgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFt ZSkgfX0KK1NFVChGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9yIH19 KTsKKworeyUgZWxpZiBkYXRhLmZpbGxmYWN0b3IgPT0gJycgJX0KK0FMVEVS IE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVt YSwgdmlld19uYW1lKSB9fQorUkVTRVQoCisgIEZJTExGQUNUT1IKKyk7CisK K3slIGVuZGlmICV9Cit7IyA9PT09PSBDaGVjayBmb3Igd2l0aF9kYXRhIHBy b3BlcnR5ID09PT09ICN9Cit7JSBpZiBkYXRhLndpdGhfZGF0YSBpcyBkZWZp bmVkIGFuZCBvX2RhdGEud2l0aF9kYXRhfGxvd2VyICE9IGRhdGEud2l0aF9k YXRhfGxvd2VyICAlfQorUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyB7eyBj b25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0gV0lUSHt7 ICcgTk8nIGlmIGRhdGEud2l0aF9kYXRhfGxvd2VyID09ICdmYWxzZScgZWxz ZSAnJyB9fSBEQVRBOworCit7JSBlbmRpZiAlfQoreyMgPT09PT0gQ2hlY2sg Zm9yIFRhYmxlIHRhYiBwcm9wZXJ0aWVzID09PT09ICN9Cit7JSBpZiBkYXRh LmF1dG92YWN1dW1fY3VzdG9tIGlzIGRlZmluZWQgYW5kIGRhdGEuYXV0b3Zh Y3V1bV9jdXN0b218bG93ZXIgPT0gJ2ZhbHNlJyAlfQorQUxURVIgTUFURVJJ QUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3 X25hbWUpIH19CitSRVNFVCgKKyAgYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNo b2xkLAorICBhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkLAorICBhdXRv dmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgIGF1dG92YWN1dW1fYW5h bHl6ZV9zY2FsZV9mYWN0b3IsCisgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3Rf ZGVsYXksCisgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsCisgIGF1 dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgIGF1dG92YWN1dW1fZnJlZXpl X21heF9hZ2UsCisgIGF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZQorKTsK KworeyUgZWxpZihkYXRhWyd2YWN1dW1fZGF0YSddWydjaGFuZ2VkJ118bGVu Z3RoID4gMCkgJX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58 cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fSBTRVQoCit7JSBm b3IgZmllbGQgaW4gZGF0YVsndmFjdXVtX2RhdGEnXVsnY2hhbmdlZCddICV9 Cit7JSBpZiBmaWVsZC52YWx1ZSAhPSBOb25lICV9CisgIHt7IGZpZWxkLm5h bWUgfX0gPSB7eyBmaWVsZC52YWx1ZXxsb3dlciB9fXslIGlmIG5vdCBsb29w Lmxhc3QgICV9LHslIGVuZGlmICV9e3sgJ1xyJyB9fQoreyUgZW5kaWYgJX0K K3slIGVuZGZvciAlfQorKTsKKworeyUgZW5kaWYgJX17IyA9PT09PSBFbmQg Y2hlY2sgZm9yIGN1c3RvbSBhdXRvdmFjY3VtID09PT09ICN9Cit7JSBlbmRp ZiAlfXsjID09PT09IEVuZCBibG9jayBmb3IgY2hlY2sgZGF0YSBkZWZpbml0 aW9uID09PT09ICN9Cit7JS0gaWYgZGF0YS5jb21tZW50IGFuZCBkYXRhLmNv bW1lbnQgIT0gb19kYXRhLmNvbW1lbnQgLSV9CitDT01NRU5UIE9OIFZJRVcg e3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19Cisg IElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07CisKK3slIGVuZGlm ICV9Cit7IyA9PT09PT09PT09PT09IFRoZSBTUUwgZ2VuZXJhdGVkIGJlbG93 IHdpbGwgY2hhbmdlIHByaXZpbGVnZXMgPT09PT09PT09PT09PSAjfQoreyUg aWYgZGF0YS5kYXRhY2wgJX0KK3slIGlmICdkZWxldGVkJyBpbiBkYXRhLmRh dGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuZGVsZXRlZCAl fQore3sgUFJJVklMRUdFLlJFU0VUQUxMKGNvbm4sICdUQUJMRScsIHByaXYu Z3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBkYXRhLmRh dGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuY2hhbmdlZCAt JX0KK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFCTEUnLCBwcml2 LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19Cit7eyBQUklW SUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5u YW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0 YS5zY2hlbWEpIH19Cit7JS0gZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwg J1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91 dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3sl IGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7IyA9PT09 PT09PT09PT09PSBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5n ZSBTZWN1cml0eSBMYWJlbCA9PT09PT09PT0gI30KK3slIGlmIGRhdGEuc2Vj bGFiZWxzIGlzIG5vdCBub25lIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGgg PiAwICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0K K3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5k ZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5k ZWxldGVkICV9Cit7eyBTRUNMQUJMRS5EUk9QKGNvbm4sICdWSUVXJywgZGF0 YS5uYW1lLCByLnByb3ZpZGVyKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVs cy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMu YWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0 YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNl Y2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxF LkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCBy LnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcv cGcvOS4zX3BsdXMvc3FsL3ZhY3V1bV9kZWZhdWx0cy5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcGcv OS4zX3BsdXMvc3FsL3ZhY3V1bV9kZWZhdWx0cy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYwNTk4YwotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlh bGl6ZWRfdmlldy9wZy85LjNfcGx1cy9zcWwvdmFjdXVtX2RlZmF1bHRzLnNx bApAQCAtMCwwICsxLDIgQEAKK3sjID09PT09PT09PT09PT0gRmV0Y2ggbGlz dCBvZiBkZWZhdWx0IHZhbHVlcyBmb3IgYXV0b3ZhY3V1bSBwYXJhbWV0ZXJz ID09PT09PT09PT09PT09PSAjfQorU0VMRUNUIG5hbWUsIHNldHRpbmc6Om51 bWVyaWMgQVMgc2V0dGluZyBGUk9NIHBnX3NldHRpbmdzIFdIRVJFIG5hbWUg SU4oe3sgY29sdW1ucyB9fSkgT1JERVIgQlkgbmFtZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92 aWV3L3BnLzkuM19wbHVzL3NxbC92aWV3X2lkLnNxbCBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wZy85LjNf cGx1cy9zcWwvdmlld19pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZDE5MmE4MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9w Zy85LjNfcGx1cy9zcWwvdmlld19pZC5zcWwKQEAgLTAsMCArMSw0IEBACit7 IyA9PT09PSBCZWxvdyB3aWxsIHByb3ZpZGUgdmlldyBpZCBmb3IgbGFzdCBj cmVhdGVkIHZpZXcgPT09PSAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMu b2lkIEZST00gcGdfY2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0 YS5uYW1lIH19JzsKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcGcv OS4zX3BsdXMvdmFjdXVtX2ZpZWxkcy5qc29uIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3BnLzkuM19wbHVz L3ZhY3V1bV9maWVsZHMuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi43ZjhmYjI4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3Bn LzkuM19wbHVzL3ZhY3V1bV9maWVsZHMuanNvbgpAQCAtMCwwICsxLDI1IEBA Cit7IyA9PT09PSBEZWZpbmUgbmFtZSwgbGFiZWwgYW5kIGNvbHVtbiB0eXBl IG9mIHZhY3V1bSBzZXR0aW5ncyA9PT09PSAjfQoreworICAidGFibGUiOgor ICB7CisgICAgImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCI6IFsiYXV0 b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIiwgIlZBQ0NVTSBiYXNlIHRocmVz aG9sZCIsICJpbnRlZ2VyIl0sCisgICAgImF1dG92YWN1dW1fYW5hbHl6ZV90 aHJlc2hvbGQiOiBbImF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQiLCAi QU5BTFlaRSBiYXNlIHRocmVzaG9sZCIsICJpbnRlZ2VyIl0sCisgICAgImF1 dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciI6IFsiYXV0b3ZhY3V1bV92 YWN1dW1fc2NhbGVfZmFjdG9yIiwgIlZBQ0NVTSBzY2FsZSBmYWN0b3IiLCAi bnVtYmVyIl0sCisgICAgImF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0 b3IiOiBbImF1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IiLCAiQU5B TFlaRSBzY2FsZSBmYWN0b3IiLCAibnVtYmVyIl0sCisgICAgImF1dG92YWN1 dW1fdmFjdXVtX2Nvc3RfZGVsYXkiOiBbImF1dG92YWN1dW1fdmFjdXVtX2Nv c3RfZGVsYXkiLCAiVkFDQ1VNIGNvc3QgZGVsYXkiLCAiaW50ZWdlciJdLAor ICAgICJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0IjogWyJhdXRvdmFj dXVtX3ZhY3V1bV9jb3N0X2xpbWl0IiwgIlZBQ0NVTSBjb3N0IGxpbWl0Iiwg ImludGVnZXIiXSwKKyAgICAiYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSI6 IFsiYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSIsICJGUkVFWkUgbWF4aW11 bSBhZ2UiLCAiaW50ZWdlciJdLAorICAgICJ2YWN1dW1fZnJlZXplX21pbl9h Z2UiOiBbImF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UiLCAiRlJFRVpFIG1p bmltdW0gYWdlIiwgImludGVnZXIiXSwKKyAgICAidmFjdXVtX2ZyZWV6ZV90 YWJsZV9hZ2UiOiBbImF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSIsICJG UkVFWkUgdGFibGUgYWdlIiwgImludGVnZXIiXQorICB9LAorICAidG9hc3Qi OgorICB7CisgICAgImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCI6IFsi YXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIiwgIlZBQ0NVTSBiYXNlIHRo cmVzaG9sZCIsICJpbnRlZ2VyIl0sCisgICAgImF1dG92YWN1dW1fdmFjdXVt X3NjYWxlX2ZhY3RvciI6IFsiYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFj dG9yIiwgIlZBQ0NVTSBzY2FsZSBmYWN0b3IiLCAibnVtYmVyIl0sCisgICAg ImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiOiBbImF1dG92YWN1dW1f dmFjdXVtX2Nvc3RfZGVsYXkiLCAiVkFDQ1VNIGNvc3QgZGVsYXkiLCAiaW50 ZWdlciJdLAorICAgICJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0Ijog WyJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0IiwgIlZBQ0NVTSBjb3N0 IGxpbWl0IiwgImludGVnZXIiXSwKKyAgICAiYXV0b3ZhY3V1bV9mcmVlemVf bWF4X2FnZSI6IFsiYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSIsICJGUkVF WkUgbWF4aW11bSBhZ2UiLCAiaW50ZWdlciJdLAorICAgICJ2YWN1dW1fZnJl ZXplX21pbl9hZ2UiOiBbImF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UiLCAi RlJFRVpFIG1pbmltdW0gYWdlIiwgImludGVnZXIiXSwKKyAgICAidmFjdXVt X2ZyZWV6ZV90YWJsZV9hZ2UiOiBbImF1dG92YWN1dW1fZnJlZXplX3RhYmxl X2FnZSIsICJGUkVFWkUgdGFibGUgYWdlIiwgImludGVnZXIiXQorICB9Cit9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv bWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvYWNsLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRf dmlldy9wcGFzLzkuM19wbHVzL3NxbC9hY2wuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMWJkNmMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxp emVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvYWNsLnNxbApAQCAtMCwwICsx LDQxIEBACit7Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT1HZXQgQUNM cz09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyUgaWYgdmlkICV9CitT RUxFQ1QKKyAgICAnZGF0YWNsJyBhcyBkZWZ0eXBlLAorICAgIENPQUxFU0NF KGd0LnJvbG5hbWUsICdwdWJsaWMnKSBncmFudGVlLAorICAgIGcucm9sbmFt ZSBncmFudG9yLAorICAgIGFycmF5X2FnZyhwcml2aWxlZ2VfdHlwZSkgYXMg cHJpdmlsZWdlcywKKyAgICBhcnJheV9hZ2coaXNfZ3JhbnRhYmxlKSBhcyBn cmFudGFibGUKK0ZST00KKyAgICAoU0VMRUNUCisgICAgICAgIGQuZ3JhbnRl ZSwKKyAgICAgICAgZC5ncmFudG9yLAorICAgICAgICBkLmlzX2dyYW50YWJs ZSwKKyAgICAgICAgQ0FTRSBkLnByaXZpbGVnZV90eXBlCisgICAgICAgICAg V0hFTiAnREVMRVRFJyBUSEVOICdkJworICAgICAgICAgIFdIRU4gJ0lOU0VS VCcgVEhFTiAnYScKKyAgICAgICAgICBXSEVOICdSRUZFUkVOQ0VTJyBUSEVO ICd4JworICAgICAgICAgIFdIRU4gJ1NFTEVDVCcgVEhFTiAncicKKyAgICAg ICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0JworICAgICAgICAgIFdIRU4g J1VQREFURScgVEhFTiAndycKKyAgICAgICAgICBXSEVOICdUUlVOQ0FURScg VEhFTiAnRCcKKyAgICAgICAgICBFTFNFICdVTktOT1dOJworICAgICAgICBF TkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxF Q1QKKyAgICAgICAgICAgIHJlbGFjbAorICAgICAgICAgRlJPTQorICAgICAg ICAgICAgcGdfY2xhc3MgY2wKKyAgICAgICAgIExFRlQgT1VURVIgSk9JTiBw Z19zaGRlc2NyaXB0aW9uIGRlc2NyIE9OCisgICAgICAgICAgICAoY2wub2lk PWRlc2NyLm9iam9pZCBBTkQgZGVzY3IuY2xhc3NvaWQ9J3BnX2NsYXNzJzo6 cmVnY2xhc3MpCisgICAgICAgICBXSEVSRQorICAgICAgICAgICAgY2wub2lk ID0ge3sgdmlkIH19OjpPSUQgQU5EIHJlbGtpbmQgPSAnbScKKyAgICAgICAg KSBhY2wsCisgICAgICAgIGFjbGV4cGxvZGUocmVsYWNsKSBkCisgICAgKSBk CitMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9OIChkLmdyYW50 b3IgPSBnLm9pZCkKK0xFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX3JvbGVzIGd0 IE9OIChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWQorICAgIGcucm9s bmFtZSwKKyAgICBndC5yb2xuYW1lCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXpl ZF92aWV3L3BwYXMvOS4zX3BsdXMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBh cy85LjNfcGx1cy9zcWwvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kNWYxYTg3Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92 aWV3L3BwYXMvOS4zX3BsdXMvc3FsL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwz OSBAQAoreyMgPT09PT09PT09PT09PT09PT09PT09IENyZWF0ZSBuZXcgdmll dyA9PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIGRpc3BsYXlfY29t bWVudHMgJX0KKy0tIFZpZXc6IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVt YSwgZGF0YS5uYW1lKSB9fQorCistLSBEUk9QIE1BVEVSSUFMSVpFRCBWSUVX IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fTsK KworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5zY2hl bWEgYW5kIGRhdGEuZGVmaW5pdGlvbiAlfQorQ1JFQVRFIE1BVEVSSUFMSVpF RCBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1l KSB9fQoreyUgaWYoZGF0YS5maWxsZmFjdG9yIG9yIGRhdGFbJ2F1dG92YWN1 dW1fZW5hYmxlZCddIG9yIGRhdGFbJ3RvYXN0X2F1dG92YWN1dW1fZW5hYmxl ZCddKSAlfQorV0lUSCgKK3slIGlmIGRhdGEuZmlsbGZhY3RvciAlfQorICBG SUxMRkFDVE9SID0ge3sgZGF0YS5maWxsZmFjdG9yIH19eyUgaWYgZGF0YVsn dmFjdXVtX2RhdGEnXXxsZW5ndGggPiAwICV9LHslIGVuZGlmICV9e3sgJ1xy JyB9fQoreyUgZW5kaWYgJX0KK3slIGZvciBmaWVsZCBpbiBkYXRhWyd2YWN1 dW1fZGF0YSddICV9Cit7JSBpZiBmaWVsZC52YWx1ZSBpcyBkZWZpbmVkIGFu ZCBmaWVsZC52YWx1ZSAhPSAnJyBhbmQgZmllbGQudmFsdWUgIT0gbm9uZSAl fQoreyUgaWYgbG9vcC5pbmRleCA+IDElfSwKK3slIGVuZGlmICV9ICB7eyBm aWVsZC5uYW1lIH19ID0ge3sgZmllbGQudmFsdWV8bG93ZXIgfX17JSBlbmRp ZiAlfQoreyUgZW5kZm9yICV9e3sgJ1xyJyB9fQorKQoreyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuc3BjbmFtZSAlfVRBQkxFU1BBQ0Uge3sgZGF0YS5zcGNu YW1lIH19Cit7JSBlbmRpZiAlfSBBUwore3sgZGF0YS5kZWZpbml0aW9uLnJz dHJpcCgnOycpIH19Cit7JSBpZiBkYXRhLndpdGhfZGF0YSAlfQorIFdJVEgg REFUQTsKK3slIGVsc2UgJX0KKyBXSVRIIE5PIERBVEE7Cit7JSBlbmRpZiAl fQoreyUgaWYgZGF0YS5vd25lciAlfQorCitBTFRFUiBUQUJMRSB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBPV05F UiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIFZJRVcg e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19Cisg ICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3BwYXMvOS4zX3Bs dXMvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvZGVs ZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j ZjY2N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3BwYXMvOS4zX3BsdXMv c3FsL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwxMyBAQAoreyMgPT09PT09PT09 PT09PT09PT09PSBEcm9wL0Nhc2NhZGUgbWF0ZXJpYWxpemVkIHZpZXcgYnkg bmFtZSA9PT09PT09PT09PT09PT09PT09PSN9Cit7JSBpZiB2aWQgJX0KK1NF TEVDVAorICAgIGMucmVsbmFtZSBBcyBuYW1lLAorICAgIG5zcC5uc3BuYW1l CitGUk9NCisgICAgcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX25hbWVzcGFj ZSBuc3AgT04gYy5yZWxuYW1lc3BhY2UgPSBuc3Aub2lkCitXSEVSRQorICAg IGMucmVsZmlsZW5vZGUgPSB7eyB2aWQgfX07Cit7JSBlbGlmIChuYW1lIGFu ZCBuc3BuYW1lKSAlfQorRFJPUCBNQVRFUklBTElaRUQgVklFVyB7eyBjb25u fHF0SWRlbnQobnNwbmFtZSwgbmFtZSkgfX0geyUgaWYgY2FzY2FkZSAlfSBD QVNDQURFIHslIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92 aWV3L3BwYXMvOS4zX3BsdXMvc3FsL2dldF90YmxzcGMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFsaXplZF92aWV3L3Bw YXMvOS4zX3BsdXMvc3FsL2dldF90YmxzcGMuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YTQ4MmMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxp emVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvZ2V0X3RibHNwYy5zcWwKQEAg LTAsMCArMSwyIEBACit7IyA9PT09PSBHZXQgbGlzdCBvZiB0YWJsZXNwYWNl cyA9PT09PSAjfQorc2VsZWN0IHRibHNwYy5zcGNuYW1lIGZyb20gcGdfdGFi bGVzcGFjZSB0YmxzcGMgV0hFUkUgdGJsc3BjLnNwY25hbWUgIT0gJ3BnX2ds b2JhbCcKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wcGFzLzkuM19wbHVzL3NxbC9ncmFu dC5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJp YWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvZ3JhbnQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjZGM4ZTUKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv bWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvZ3JhbnQuc3Fs CkBAIC0wLDAgKzEsMTQgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Npb25z IHRvIFVzZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PSAjfQoreyUgaW1w b3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBh cyBQUklWSUxFR0UgJX0KK3sjIFdlIHdpbGwgZ2VuZXJhdGUgU2VjdXJpdHkg TGFiZWwgU1FMIHVzaW5nIG1hY3JvICN9Cit7JSBpZiBkYXRhLnNlY2xhYmVs cyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3t7IFNFQ0xB QkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVy LCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRh dGEuZGF0YWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScs IHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQs IHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1 cy9zcWwvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwv cHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uODU0NmVlMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wcGFzLzku M19wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDExMCBAQAor eyMgPT09PT09PT09PT09PT09PT09PT09PT09PT0gRmV0Y2ggTWF0ZXJpYWxp emVkIFZpZXcgUHJvcGVydGllcyA9PT09PT09PT09PT09PT09PT09PT09PT09 ICN9Cit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lzb2lkKSBvciBzY2lkICV9 CitTRUxFQ1QKKyAgICBjLm9pZCwKKyAgICBjLnhtaW4sCisgICAgYy5yZWxu YW1lIEFTIG5hbWUsCisgICAgYy5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCwK KyAgICBjLnJlbGlzcG9wdWxhdGVkIEFTIHdpdGhfZGF0YSwKKyAgICAoQ0FT RSBXSEVOIGxlbmd0aChzcGMuc3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25h bWUgRUxTRSAncGdfZGVmYXVsdCcgRU5EKSBhcyBzcGNuYW1lLAorICAgIGMu cmVsYWNsLAorICAgIG5zcC5uc3BuYW1lIGFzIHNjaGVtYSwKKyAgICBwZ19n ZXRfdXNlcmJ5aWQoYy5yZWxvd25lcikgQVMgb3duZXIsCisgICAgZGVzY3Jp cHRpb24gQVMgY29tbWVudCwKKyAgICBwZ19nZXRfdmlld2RlZihjLm9pZCwg dHJ1ZSkgQVMgZGVmaW5pdGlvbiwKKyAgICB7Iz09PT09PT09PT09PT1DaGVj a3MgaWYgaXQgaXMgc3lzdGVtIHZpZXc9PT09PT09PT09PT09PT09I30KKyAg ICB7JSBpZiB2aWQgYW5kIGRhdGxhc3RzeXNvaWQgJX0KKyAgICBDQVNFIFdI RU4ge3t2aWR9fSA8PSB7e2RhdGxhc3RzeXNvaWR9fSBUSEVOIFRydWUgRUxT RSBGYWxzZSBFTkQgQVMgc3lzdGVtX3ZpZXcsCisgICAgeyUgZW5kaWYgJX0K KyAgICBUcnVlIEFTIGF1dG92YWN1dW1fY3VzdG9tLAorICAgIFRydWUgQVMg dG9hc3RfYXV0b3ZhY2N1bSwKKyAgICBhcnJheV90b19zdHJpbmcoYy5yZWxh Y2w6OnRleHRbXSwgJywgJykgQVMgYWNsLAorICAgIChTRUxFQ1QgYXJyYXlf YWdnKHByb3ZpZGVyIHx8ICc9JyB8fCBsYWJlbCkgRlJPTSBwZ19zZWNsYWJl bHMgc2wxIFdIRVJFIHNsMS5vYmpvaWQ9Yy5vaWQgQU5EIHNsMS5vYmpzdWJp ZD0wKSBBUyBzZWNsYWJlbHMsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0 cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2ZpbGxmYWN0 b3I9KFswLTldKiknKSBBUyBmaWxsZmFjdG9yLAorICAgIHN1YnN0cmluZyhh cnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9N ICdhdXRvdmFjdXVtX2VuYWJsZWQ9KFthLXp8MC05XSopJykgQVMgYXV0b3Zh Y3V1bV9lbmFibGVkLAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmco Yy5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3Zh Y3V1bV90aHJlc2hvbGQ9KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhj LnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fdmFj dXVtX3NjYWxlX2ZhY3Rvcj0oWzAtOV0qWy5dWzAtOV0qKScpIEFTIGF1dG92 YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciwKKyAgICBzdWJzdHJpbmcoYXJy YXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJPTSAn YXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZD0oWzAtOV0qKScpIEFTIGF1 dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQsCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgIEZST00g J2F1dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3I9KFswLTldKlsuXVsw LTldKiknKSBBUyBhdXRvdmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yLAor ICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAn LCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5 PShbMC05XSopJykgQVMgYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSwK KyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywg JywnKQorICAgICAgRlJPTSAnYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9saW1p dD0oWzAtOV0qKScpIEFTIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQs CisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9wdGlvbnMs ICcsJykKKyAgICAgIEZST00gJ2F1dG92YWN1dW1fZnJlZXplX21pbl9hZ2U9 KFswLTldKiknKSBBUyBhdXRvdmFjdXVtX2ZyZWV6ZV9taW5fYWdlLAorICAg IHN1YnN0cmluZyhhcnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcp CisgICAgICBGUk9NICdhdXRvdmFjdXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05 XSopJykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKyAgICBzdWJz dHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0aW9ucywgJywnKQorICAg ICAgRlJPTSAnYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlPShbMC05XSop JykgQVMgYXV0b3ZhY3V1bV9mcmVlemVfdGFibGVfYWdlLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAg ICAgIEZST00gJ2F1dG92YWN1dW1fZW5hYmxlZD0oW2EtenwwLTldKiknKSBB UyB0b2FzdF9hdXRvdmFjdXVtX2VuYWJsZWQsCisgICAgc3Vic3RyaW5nKGFy cmF5X3RvX3N0cmluZyh0c3QucmVsb3B0aW9ucywgJywnKQorICAgICAgRlJP TSAnYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkPShbMC05XSopJykgQVMg dG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkLAorICAgIHN1YnN0 cmluZyhhcnJheV90b19zdHJpbmcodHN0LnJlbG9wdGlvbnMsICcsJykKKyAg ICAgIEZST00gJ2F1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3Rvcj0oWzAt OV0qWy5dWzAtOV0qKScpIEFTIHRvYXN0X2F1dG92YWN1dW1fdmFjdXVtX3Nj YWxlX2ZhY3RvciwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRz dC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX2Fu YWx5emVfdGhyZXNob2xkPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1 bV9hbmFseXplX3RocmVzaG9sZCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRv dmFjdXVtX2FuYWx5emVfc2NhbGVfZmFjdG9yPShbMC05XSpbLl1bMC05XSop JykgQVMgdG9hc3RfYXV0b3ZhY3V1bV9hbmFseXplX3NjYWxlX2ZhY3RvciwK KyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5yZWxvcHRpb25z LCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2Rl bGF5PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92YWN1dW1fY29z dF9kZWxheSwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKHRzdC5y ZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFjdXVtX3ZhY3V1 bV9jb3N0X2xpbWl0PShbMC05XSopJykgQVMgdG9hc3RfYXV0b3ZhY3V1bV92 YWN1dW1fY29zdF9saW1pdCwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3Ry aW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRvdmFj dXVtX2ZyZWV6ZV9taW5fYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0b3Zh Y3V1bV9mcmVlemVfbWluX2FnZSwKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9f c3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdhdXRv dmFjdXVtX2ZyZWV6ZV9tYXhfYWdlPShbMC05XSopJykgQVMgdG9hc3RfYXV0 b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSwKKyAgICBzdWJzdHJpbmcoYXJyYXlf dG9fc3RyaW5nKHRzdC5yZWxvcHRpb25zLCAnLCcpCisgICAgICBGUk9NICdh dXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2U9KFswLTldKiknKSBBUyB0b2Fz dF9hdXRvdmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UsCisgICAgYy5yZWxvcHRp b25zIEFTIHJlbG9wdGlvbnMsIHRzdC5yZWxvcHRpb25zIEFTIHRvYXN0X3Jl bG9wdGlvbnMsCisgICAgKENBU0UgV0hFTiBjLnJlbHRvYXN0cmVsaWQgPSAw IFRIRU4gZmFsc2UgRUxTRSB0cnVlIEVORCkgQVMgaGFzdG9hc3R0YWJsZQor RlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgT1VURVIgSk9JTiBwZ19uYW1l c3BhY2UgbnNwIG9uIG5zcC5vaWQgPSBjLnJlbG5hbWVzcGFjZQorTEVGVCBP VVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9Yy5yZWx0 YWJsZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVz IE9OIChkZXMub2Jqb2lkPWMub2lkIGFuZCBkZXMub2Jqc3ViaWQ9MCBBTkQg ZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorTEVGVCBPVVRF UiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lkID0gYy5yZWx0b2FzdHJl bGlkCisgICAgV0hFUkUgKChjLnJlbGhhc3J1bGVzIEFORCAoRVhJU1RTICgK KyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICByLnJ1bGVuYW1lCisgICAg ICAgIEZST00KKyAgICAgICAgICAgIHBnX3Jld3JpdGUgcgorICAgICAgICBX SEVSRQorICAgICAgICAgICAgKChyLmV2X2NsYXNzID0gYy5vaWQpCisgICAg ICAgICAgICAgICAgQU5EIChicGNoYXIoci5ldl90eXBlKSA9ICcxJzo6YnBj aGFyKSkgKSkpCisgICAgICAgICAgICBBTkQgKGMucmVsa2luZCA9ICdtJzo6 Y2hhcikKKyAgICAgICAgICApCit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lz b2lkKSAlfQorICAgIEFORCBjLm9pZCA9IHt7dmlkfX06Om9pZAoreyUgZWxp ZiBzY2lkICV9CisgICAgQU5EIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06 Om9pZAorT1JERVIgQlkKKyAgICBjLnJlbG5hbWUKK3slIGVuZGlmICV9CisK K3slIGVsaWYgdHlwZSA9PSAncm9sZXMnICV9CitTRUxFQ1QKKyAgICBwci5y b2xuYW1lCitGUk9NCisgICAgcGdfcm9sZXMgcHIKK1dIRVJFCisgICAgcHIu cm9sY2FubG9naW4KK09SREVSIEJZCisgICAgcHIucm9sbmFtZQorCit7JSBl bGlmIHR5cGUgPT0gJ3NjaGVtYXMnICV9CitTRUxFQ1QKKyAgICBuc3AubnNw bmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AKK1dIRVJFCisgICAg KG5zcC5uc3BuYW1lIE5PVCBMSUtFIEUncGdcXF8lJworICAgICAgICBBTkQg bnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3NjaGVtYScpCit7JSBlbmRp ZiAlfQorCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdXBk YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRl cmlhbGl6ZWRfdmlldy9wcGFzLzkuM19wbHVzL3NxbC91cGRhdGUuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNDIyMWQKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdXBkYXRl LnNxbApAQCAtMCwwICsxLDE0NCBAQAoreyMgPT09PT09PT09PT09PT09PT09 PT09IFVwZGF0ZSBWaWV3ID09PT09PT09PT09PT09PT09PT0jfQoreyUgaW1w b3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQor eyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBh cyBQUklWSUxFR0UgJX0KK3slLSBpZiBkYXRhIC0lfQoreyUgc2V0IHZpZXdf bmFtZSA9IGRhdGEubmFtZSBpZiBkYXRhLm5hbWUgZWxzZSBvX2RhdGEubmFt ZSAlfQoreyUgc2V0IHZpZXdfc2NoZW1hID0gZGF0YS5zY2hlbWEgaWYgZGF0 YS5zY2hlbWEgZWxzZSBvX2RhdGEuc2NoZW1hICV9Cit7JSBzZXQgZGVmID0g ZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIGlmIGRhdGEuZGVmaW5pdGlv biAlfQoreyMgPT09PT0gUmVuYW1lIG1hdCB2aWV3ID09PT09ICN9Cit7JSBp ZiBkYXRhLm5hbWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQor QUxURVIgTUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KG9fZGF0 YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICBSRU5BTUUgVE8ge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX07CisKK3slIGVuZGlmICV9Cit7IyA9 PT09PSBBbHRlciBzY2hlbWEgdmlldyA9PT09PSAjfQoreyUgaWYgZGF0YS5z Y2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FM VEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudChvX2RhdGEu c2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICBTRVQgU0NIRU1BIHt7IGNvbm58 cXRJZGVudChkYXRhLnNjaGVtYSkgfX07CisKK3slIGVuZGlmICV9Cit7IyA9 PT09PSBBbHRlciBUYWJsZSBvd25lciA9PT09PSAjfQoreyUgaWYgZGF0YS5v d25lciBhbmQgZGF0YS5vd25lciAhPSBvX2RhdGEub3duZXIgJX0KK0FMVEVS IFRBQkxFIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1l KSB9fQorICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25lcikg fX07CisKK3slIGVuZGlmICV9Cit7IyA9PT09PSBGaXJzdCBEcm9wIGFuZCB0 aGVuIGNyZWF0ZSBtYXQgdmlldyA9PT09PSAjfQoreyUgaWYgZGVmIGFuZCBk ZWYgIT0gb19kYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7JykgJX0KK3slIGlm IGRhdGEuZmlsbGZhY3RvciBvciAoZGF0YVsnYXV0b3ZhY3V1bV9lbmFibGVk J10gYW5kIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXXxsZW5ndGgg PiAwKSAlfQorRFJPUCBNQVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRl bnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX07CitDUkVBVEUgTUFURVJJ QUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3 X25hbWUpIH19CitXSVRIKAoreyUgaWYgZGF0YS5maWxsZmFjdG9yICV9Cisg IEZJTExGQUNUT1IgPSB7eyBkYXRhLmZpbGxmYWN0b3IgfX17JSBpZiBkYXRh Wyd2YWN1dW1fZGF0YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCAlfSx7JSBl bmRpZiAlfXt7ICdccicgfX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhWyd2 YWN1dW1fZGF0YSddWydjaGFuZ2VkJ118bGVuZ3RoID4gMCAlfQoreyUgZm9y IGZpZWxkIGluIGRhdGFbJ3ZhY3V1bV9kYXRhJ11bJ2NoYW5nZWQnXSAlfQor ICB7eyBmaWVsZC5uYW1lIH19ID0ge3sgZmllbGQudmFsdWV8bG93ZXIgfX17 JSBpZiBub3QgbG9vcC5sYXN0ICAlfSx7JSBlbmRpZiAlfXt7ICdccicgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KKykKKyBBUwore3sgZGVmIH19 Cit7JSBpZiBkYXRhLndpdGhfZGF0YSAlfQorIFdJVEggREFUQTsKKworeyUg ZWxzZSAlfQorIFdJVEggTk8gREFUQTsKKworeyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9Cit7JSBlbHNlICV9Cit7IyA9PT09PT09IEFsdGVyIFRhYmxlc3Bh Y2UgPT09PT09PT09ICN9Cit7JS0gaWYgZGF0YS5zcGNvaWQgYW5kIG9fZGF0 YS5zcGNvaWQgIT0gZGF0YS5zcGNvaWQgIC0lfQorQUxURVIgTUFURVJJQUxJ WkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25h bWUpIH19CisgIFNFVCBUQUJMRVNQQUNFIHt7IGRhdGEuc3Bjb2lkIH19Owor Cit7JSBlbmRpZiAlfQoreyMgPT09PT09PSBTRVQvUkVTRVQgRmlsbGZhY3Rv ciA9PT09PT09PT0gI30KK3slIGlmIGRhdGEuZmlsbGZhY3RvciBhbmQgb19k YXRhLmZpbGxmYWN0b3IgIT0gZGF0YS5maWxsZmFjdG9yICV9CitBTFRFUiBN QVRFUklBTElaRUQgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEs IHZpZXdfbmFtZSkgfX0KK1NFVChGSUxMRkFDVE9SID0ge3sgZGF0YS5maWxs ZmFjdG9yIH19KTsKKworeyUgZWxpZiBkYXRhLmZpbGxmYWN0b3IgPT0gJycg JX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVXIHt7IGNvbm58cXRJZGVudCh2 aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQorUkVTRVQoCisgIEZJTExGQUNU T1IKKyk7CisKK3slIGVuZGlmICV9Cit7IyA9PT09PSBDaGVjayBmb3Igd2l0 aF9kYXRhIHByb3BlcnR5ID09PT09ICN9Cit7JSBpZiBkYXRhLndpdGhfZGF0 YSBpcyBkZWZpbmVkIGFuZCBvX2RhdGEud2l0aF9kYXRhfGxvd2VyICE9IGRh dGEud2l0aF9kYXRhfGxvd2VyICAlfQorUkVGUkVTSCBNQVRFUklBTElaRUQg VklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFtZSkg fX0gV0lUSHt7ICcgTk8nIGlmIGRhdGEud2l0aF9kYXRhfGxvd2VyID09ICdm YWxzZScgZWxzZSAnJyB9fSBEQVRBOworCit7JSBlbmRpZiAlfQoreyMgPT09 PT0gQ2hlY2sgZm9yIFRhYmxlIHRhYiBwcm9wZXJ0aWVzID09PT09ICN9Cit7 JSBpZiBkYXRhLmF1dG92YWN1dW1fY3VzdG9tIGlzIGRlZmluZWQgYW5kIGRh dGEuYXV0b3ZhY3V1bV9jdXN0b218bG93ZXIgPT0gJ2ZhbHNlJyAlfQorQUxU RVIgTUFURVJJQUxJWkVEIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2No ZW1hLCB2aWV3X25hbWUpIH19CitSRVNFVCgKKyAgYXV0b3ZhY3V1bV92YWN1 dW1fdGhyZXNob2xkLAorICBhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xk LAorICBhdXRvdmFjdXVtX3ZhY3V1bV9zY2FsZV9mYWN0b3IsCisgIGF1dG92 YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IsCisgIGF1dG92YWN1dW1fdmFj dXVtX2Nvc3RfZGVsYXksCisgIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGlt aXQsCisgIGF1dG92YWN1dW1fZnJlZXplX21pbl9hZ2UsCisgIGF1dG92YWN1 dW1fZnJlZXplX21heF9hZ2UsCisgIGF1dG92YWN1dW1fZnJlZXplX3RhYmxl X2FnZQorKTsKKworeyUgZWxpZihkYXRhWyd2YWN1dW1fZGF0YSddWydjaGFu Z2VkJ118bGVuZ3RoID4gMCkgJX0KK0FMVEVSIE1BVEVSSUFMSVpFRCBWSUVX IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fSBT RVQoCit7JSBmb3IgZmllbGQgaW4gZGF0YVsndmFjdXVtX2RhdGEnXVsnY2hh bmdlZCddICV9Cit7JSBpZiBmaWVsZC52YWx1ZSAhPSBOb25lICV9CisgIHt7 IGZpZWxkLm5hbWUgfX0gPSB7eyBmaWVsZC52YWx1ZXxsb3dlciB9fXslIGlm IG5vdCBsb29wLmxhc3QgICV9LHslIGVuZGlmICV9e3sgJ1xyJyB9fQoreyUg ZW5kaWYgJX0KK3slIGVuZGZvciAlfQorKTsKKworeyUgZW5kaWYgJX17IyA9 PT09PSBFbmQgY2hlY2sgZm9yIGN1c3RvbSBhdXRvdmFjY3VtID09PT09ICN9 Cit7JSBlbmRpZiAlfXsjID09PT09IEVuZCBibG9jayBmb3IgY2hlY2sgZGF0 YSBkZWZpbml0aW9uID09PT09ICN9Cit7JS0gaWYgZGF0YS5jb21tZW50IGFu ZCBkYXRhLmNvbW1lbnQgIT0gb19kYXRhLmNvbW1lbnQgLSV9CitDT01NRU5U IE9OIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25h bWUpIH19CisgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07CisK K3slIGVuZGlmICV9Cit7IyA9PT09PT09PT09PT09IFRoZSBTUUwgZ2VuZXJh dGVkIGJlbG93IHdpbGwgY2hhbmdlIHByaXZpbGVnZXMgPT09PT09PT09PT09 PSAjfQoreyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGlmICdkZWxldGVkJyBp biBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wu ZGVsZXRlZCAlfQore3sgUFJJVklMRUdFLlJFU0VUQUxMKGNvbm4sICdUQUJM RScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRhLnNjaGVtYSkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBp biBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wu Y2hhbmdlZCAtJX0KK3t7IFBSSVZJTEVHRS5VTlNFVEFMTChjb25uLCAnVEFC TEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgZGF0YS5zY2hlbWEpIH19 Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRl ZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9n cmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JS0gZW5kZm9yICV9Cit7JSBlbmRp ZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9y IHByaXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5T RVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHBy aXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVt YSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 Cit7IyA9PT09PT09PT09PT09PSBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3 aWxsIGNoYW5nZSBTZWN1cml0eSBMYWJlbCA9PT09PT09PT0gI30KK3slIGlm IGRhdGEuc2VjbGFiZWxzIGlzIG5vdCBub25lIGFuZCBkYXRhLnNlY2xhYmVs c3xsZW5ndGggPiAwICV9Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNs YWJlbHMgJX0KK3slIGlmICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNl Y2xhYmVscy5kZWxldGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNl Y2xhYmVscy5kZWxldGVkICV9Cit7eyBTRUNMQUJMRS5EUk9QKGNvbm4sICdW SUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5k IHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBz ZWNsYWJlbHMuYWRkZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdW SUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVs KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5n ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7 IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnBy b3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJpYWxp emVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdmFjdXVtX3NldHRpbmdzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy9tYXRlcmlhbGl6 ZWRfdmlldy9wcGFzLzkuM19wbHVzL3NxbC92YWN1dW1fc2V0dGluZ3Muc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MDU5OGMK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvbWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdmFj dXVtX3NldHRpbmdzLnNxbApAQCAtMCwwICsxLDIgQEAKK3sjID09PT09PT09 PT09PT0gRmV0Y2ggbGlzdCBvZiBkZWZhdWx0IHZhbHVlcyBmb3IgYXV0b3Zh Y3V1bSBwYXJhbWV0ZXJzID09PT09PT09PT09PT09PSAjfQorU0VMRUNUIG5h bWUsIHNldHRpbmc6Om51bWVyaWMgQVMgc2V0dGluZyBGUk9NIHBnX3NldHRp bmdzIFdIRVJFIG5hbWUgSU4oe3sgY29sdW1ucyB9fSkgT1JERVIgQlkgbmFt ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVz L21hdGVyaWFsaXplZF92aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3ZpZXdfaWQu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL21hdGVyaWFs aXplZF92aWV3L3BwYXMvOS4zX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxOTJhODAKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv bWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy9zcWwvdmlld19pZC5z cWwKQEAgLTAsMCArMSw0IEBACit7IyA9PT09PSBCZWxvdyB3aWxsIHByb3Zp ZGUgdmlldyBpZCBmb3IgbGFzdCBjcmVhdGVkIHZpZXcgPT09PSAjfQoreyUg aWYgZGF0YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdfY2xhc3MgYyBXSEVS RSBjLnJlbG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv bWF0ZXJpYWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy92YWN1dW1fZmllbGRz Lmpzb24gYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvbWF0ZXJp YWxpemVkX3ZpZXcvcHBhcy85LjNfcGx1cy92YWN1dW1fZmllbGRzLmpzb24K bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y4ZmIyOAot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy9tYXRlcmlhbGl6ZWRfdmlldy9wcGFzLzkuM19wbHVzL3ZhY3V1bV9m aWVsZHMuanNvbgpAQCAtMCwwICsxLDI1IEBACit7IyA9PT09PSBEZWZpbmUg bmFtZSwgbGFiZWwgYW5kIGNvbHVtbiB0eXBlIG9mIHZhY3V1bSBzZXR0aW5n cyA9PT09PSAjfQoreworICAidGFibGUiOgorICB7CisgICAgImF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZCI6IFsiYXV0b3ZhY3V1bV92YWN1dW1fdGhy ZXNob2xkIiwgIlZBQ0NVTSBiYXNlIHRocmVzaG9sZCIsICJpbnRlZ2VyIl0s CisgICAgImF1dG92YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQiOiBbImF1dG92 YWN1dW1fYW5hbHl6ZV90aHJlc2hvbGQiLCAiQU5BTFlaRSBiYXNlIHRocmVz aG9sZCIsICJpbnRlZ2VyIl0sCisgICAgImF1dG92YWN1dW1fdmFjdXVtX3Nj YWxlX2ZhY3RvciI6IFsiYXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9y IiwgIlZBQ0NVTSBzY2FsZSBmYWN0b3IiLCAibnVtYmVyIl0sCisgICAgImF1 dG92YWN1dW1fYW5hbHl6ZV9zY2FsZV9mYWN0b3IiOiBbImF1dG92YWN1dW1f YW5hbHl6ZV9zY2FsZV9mYWN0b3IiLCAiQU5BTFlaRSBzY2FsZSBmYWN0b3Ii LCAibnVtYmVyIl0sCisgICAgImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVs YXkiOiBbImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiLCAiVkFDQ1VN IGNvc3QgZGVsYXkiLCAiaW50ZWdlciJdLAorICAgICJhdXRvdmFjdXVtX3Zh Y3V1bV9jb3N0X2xpbWl0IjogWyJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xp bWl0IiwgIlZBQ0NVTSBjb3N0IGxpbWl0IiwgImludGVnZXIiXSwKKyAgICAi YXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSI6IFsiYXV0b3ZhY3V1bV9mcmVl emVfbWF4X2FnZSIsICJGUkVFWkUgbWF4aW11bSBhZ2UiLCAiaW50ZWdlciJd LAorICAgICJ2YWN1dW1fZnJlZXplX21pbl9hZ2UiOiBbImF1dG92YWN1dW1f ZnJlZXplX21pbl9hZ2UiLCAiRlJFRVpFIG1pbmltdW0gYWdlIiwgImludGVn ZXIiXSwKKyAgICAidmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2UiOiBbImF1dG92 YWN1dW1fZnJlZXplX3RhYmxlX2FnZSIsICJGUkVFWkUgdGFibGUgYWdlIiwg ImludGVnZXIiXQorICB9LAorICAidG9hc3QiOgorICB7CisgICAgImF1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZCI6IFsiYXV0b3ZhY3V1bV92YWN1dW1f dGhyZXNob2xkIiwgIlZBQ0NVTSBiYXNlIHRocmVzaG9sZCIsICJpbnRlZ2Vy Il0sCisgICAgImF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciI6IFsi YXV0b3ZhY3V1bV92YWN1dW1fc2NhbGVfZmFjdG9yIiwgIlZBQ0NVTSBzY2Fs ZSBmYWN0b3IiLCAibnVtYmVyIl0sCisgICAgImF1dG92YWN1dW1fdmFjdXVt X2Nvc3RfZGVsYXkiOiBbImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXki LCAiVkFDQ1VNIGNvc3QgZGVsYXkiLCAiaW50ZWdlciJdLAorICAgICJhdXRv dmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0IjogWyJhdXRvdmFjdXVtX3ZhY3V1 bV9jb3N0X2xpbWl0IiwgIlZBQ0NVTSBjb3N0IGxpbWl0IiwgImludGVnZXIi XSwKKyAgICAiYXV0b3ZhY3V1bV9mcmVlemVfbWF4X2FnZSI6IFsiYXV0b3Zh Y3V1bV9mcmVlemVfbWF4X2FnZSIsICJGUkVFWkUgbWF4aW11bSBhZ2UiLCAi aW50ZWdlciJdLAorICAgICJ2YWN1dW1fZnJlZXplX21pbl9hZ2UiOiBbImF1 dG92YWN1dW1fZnJlZXplX21pbl9hZ2UiLCAiRlJFRVpFIG1pbmltdW0gYWdl IiwgImludGVnZXIiXSwKKyAgICAidmFjdXVtX2ZyZWV6ZV90YWJsZV9hZ2Ui OiBbImF1dG92YWN1dW1fZnJlZXplX3RhYmxlX2FnZSIsICJGUkVFWkUgdGFi bGUgYWdlIiwgImludGVnZXIiXQorICB9Cit9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9jc3Mvdmlldy5jc3Mg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9jc3Mvdmll dy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODll YWU0ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L2Nzcy92aWV3LmNzcwpAQCAtMCwwICsxLDEyIEBA CisuaWNvbi12aWV3eworICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ3t7IHVy bF9mb3IoJ05PREUtdmlldy5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL3ZpZXcu cG5nJykgfX0nKSAhaW1wb3J0YW50OworICBib3JkZXItcmFkaXVzOiAxMHB4 OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICBhbGlnbi1j b250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cisg IGhlaWdodDogMS4zZW07Cit9CisKKy5zcWxfZmllbGRfaGVpZ2h0XzE0MCB7 CisgIGhlaWdodDogMTQwcHg7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9qcy92aWV3LmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvanMvdmlldy5qcwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTkyMTU0Ci0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVz L3ZpZXcvanMvdmlldy5qcwpAQCAtMCwwICsxLDMwNCBAQAorZGVmaW5lKAor ICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5n JywgJ3BnYWRtaW4nLAorICAgICdwZ2FkbWluLmJyb3dzZXInLCAnY29kZW1p cnJvcicsICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZSddLAor CitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIENvZGVN aXJyb3IpIHsKKworICAvLyBEZWZpbmUgU2VjdXJpdHkgTW9kZWwgd2l0aCBm aWVsZHMgYW5kIHZhbGlkYXRpb24KKyAgdmFyIFNlY3VyaXR5TW9kZWwgPSBw Z0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoeworICAgIGRlZmF1 bHRzOiB7CisgICAgICBwcm92aWRlcjogdW5kZWZpbmVkLAorICAgICAgc2Vj dXJpdHlsYWJlbDogdW5kZWZpbmVkCisgICAgfSwKKyAgICBzY2hlbWE6IFt7 CisgICAgICBpZDogJ3Byb3ZpZGVyJywgbGFiZWw6ICd7eyBfKCJQcm92aWRl ciIpIH19JywKKyAgICAgIHR5cGU6ICd0ZXh0JywgZWRpdGFibGU6IHRydWUK KyAgICB9LHsKKyAgICAgIGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDog J3t7IF8oIlNlY3VyaXR5IExhYmVsIikgfX0nLAorICAgICAgdHlwZTogJ3Rl eHQnLCBlZGl0YWJsZTogdHJ1ZQorICAgIH1dLAorCisgICAgdmFsaWRhdGU6 IGZ1bmN0aW9uKCkgeworCisgICAgICAvLyBDbGVhciBlcnJvck1vZGVsIGJl Zm9yZSB2YWxpZGF0ZQorICAgICAgdGhpcy5oYW5kbGVyLmVycm9yTW9kZWwu Y2xlYXIoKTsKKworICAgICAgdmFyIGVyciA9IHt9LAorICAgICAgICBlcnJt c2cgPSBudWxsLAorICAgICAgICBmaWVsZF9uYW1lID0gdGhpcy5nZXQoJ3By b3ZpZGVyJyksCisgICAgICAgIGZpZWxkX3NlY3VyaXR5X2xhYmVsID0gdGhp cy5nZXQoJ3NlY3VyaXR5X2xhYmVsJyk7CisKKyAgICAgIGlmIChfLmlzVW5k ZWZpbmVkKGZpZWxkX25hbWUpIHx8IF8uaXNOdWxsKGZpZWxkX25hbWUpIHx8 CisgICAgICAgIFN0cmluZyhmaWVsZF9uYW1lKS5yZXBsYWNlKC9eXHMrfFxz KyQvZywgJycpID09ICcnKSB7CisgICAgICAgIGVyclsncHJvdmlkZXInXSA9 ICd7eyBfKCJQcm92aWRlciBjYW5ub3QgYmUgZW1wdHkuIikgfX0nOworICAg ICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydwcm92aWRlciddOworICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdwcm92aWRlcicsIGVycm1zZyk7 CisgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICB9ZWxzZXsKKyAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdwcm92aWRlcicpOworICAgICAg fQorCisgICAgICBpZiAoXy5pc1VuZGVmaW5lZChmaWVsZF9zZWN1cml0eV9s YWJlbCkgfHwgXy5pc051bGwoZmllbGRfc2VjdXJpdHlfbGFiZWwpIHx8Cisg ICAgICAgIFN0cmluZyhmaWVsZF9zZWN1cml0eV9sYWJlbCkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICBlcnJbJ3NlY3Vy aXR5X2xhYmVsJ10gPSAne3sgXygiU2VjdXJpdHkgTGFiZWwgY2Fubm90IGJl IGVtcHR5LiIpIH19JzsKKyAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnc2VjdXJpdHlfbGFiZWwnXTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVs LnNldCgnc2VjdXJpdHlfbGFiZWwnLCBlcnJtc2cpOworICAgICAgICByZXR1 cm4gZXJybXNnOworICAgICAgfWVsc2V7CisgICAgICAgIHRoaXMuZXJyb3JN b2RlbC51bnNldCgnc2VjdXJpdHlfbGFiZWwnKTsKKyAgICAgIH0KKyAgICAg IHJldHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKworICAvKioKKyAgICBD cmVhdGUgYW5kIGFkZCBhIHZpZXcgY29sbGVjdGlvbiBpbnRvIG5vZGVzCisg ICAgQHBhcmFtIHt2YXJpYWJsZX0gbGFiZWwgLSBMYWJlbCBmb3IgTm9kZQor ICAgIEBwYXJhbSB7dmFyaWFibGV9IHR5cGUgLSBUeXBlIG9mIE5vZGUKKyAg ICBAcGFyYW0ge3ZhcmlhYmxlfSBjb2x1bW5zIC0gTGlzdCBvZiBjb2x1bW5z IHRvCisgICAgICBkaXNwbGF5IHVuZGVyIHVuZGVyIHByb3BlcnRpZXMuCisg ICAqLworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC12aWV3J10pIHsK KyAgICB2YXIgdmlld3M9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC12 aWV3J10gPQorICAgICAgcGdBZG1pbi5Ccm93c2VyLkNvbGxlY3Rpb24uZXh0 ZW5kKHsKKyAgICAgICAgbm9kZTogJ3ZpZXcnLAorICAgICAgICBsYWJlbDog J3t7IF8oIlZpZXdzIikgfX0nLAorICAgICAgICB0eXBlOiAnY29sbC12aWV3 JywKKyAgICAgICAgY29sdW1uczogWyJuYW1lIiwgIm93bmVyIl0KKyAgICAg IH0pOworICB9CisKKyAgLyoqCisgICAgQ3JlYXRlIGFuZCBBZGQgYSBWaWV3 IE5vZGUgaW50byBub2RlcworICAgIEBwYXJhbSB7dmFyaWFibGV9IHBhcmVu dF90eXBlIC0gVGhlIGxpc3Qgb2Ygbm9kZXMKKyAgICB1bmRlciB3aGljaCB0 aGlzIG5vZGUgdG8gZGlzcGxheQorICAgIEBwYXJhbSB7dmFyaWFibGV9IHR5 cGUgLSBUeXBlIG9mIE5vZGUKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBoYXNT UUwgLSBUbyBzaG93IFNRTCB0YWIKKyAgICBAcGFyYW0ge3ZhcmlhYmxlfSBj YW5Ecm9wIC0gQWRkcyBkcm9wIHZpZXcgb3B0aW9uCisgICAgaW4gdGhlIGNv bnRleHQgbWVudQorICAgIEBwYXJhbSB7dmFyaWFibGV9IGNhbkRyb3BDYXNj YWRlIC0gQWRkcyBkcm9wIENhc2NhZGUKKyAgICB2aWV3IG9wdGlvbiBpbiB0 aGUgY29udGV4dCBtZW51CisgICAqLworICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1sndmlldyddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWyd2aWV3 J10gPSBwZ0FkbWluLkJyb3dzZXIuTm9kZS5leHRlbmQoeworICAgICAgcGFy ZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKKyAgICAgIHR5cGU6 ICd2aWV3JywKKyAgICAgIGxhYmVsOiAne3sgXygnVmlldycpIH19JywKKyAg ICAgIGhhc1NRTDogIHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0cnVlLAor ICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC12aWV3JywKKyAgICAgIGNh bkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9w LAorICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2No ZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7 CisKKyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9m IG1lbnVzCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAgICAg ICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1 ZTsKKworICAgICAgICAvKioKKyAgICAgICAgICBBZGQgImNyZWF0ZSB2aWV3 IiBtZW51IG9wdGlvbiBpbnRvIGNvbnRleHQgYW5kIG9iamVjdCBtZW51Cisg ICAgICAgICAgZm9yIHRoZSBmb2xsb3dpbmcgbm9kZXM6CisgICAgICAgICAg Y29sbC12aWV3LCB2aWV3IGFuZCBzY2hlbWEuCisgICAgICAgICAgQHByb3Bl cnR5IHtkYXRhfSAtIEFsbG93IGNyZWF0ZSB2aWV3IG9wdGlvbiBvbiBzY2hl bWEgbm9kZSBvcgorICAgICAgICAgIHN5c3RlbSB2aWV3IG5vZGVzLgorICAg ICAgICAgKi8KKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAg ICAgICAgIG5hbWU6ICdjcmVhdGVfdmlld19vbl9jb2xsJywgbm9kZTogJ2Nv bGwtdmlldycsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBb J29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJv cGVydGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlv cml0eTogNCwgbGFiZWw6ICd7eyBfKCdWaWV3Li4uJykgfX0nLAorICAgICAg ICAgIGljb246ICd3Y1RhYkljb24gaWNvbi12aWV3JywgZGF0YToge2FjdGlv bjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFibGU6 ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdj cmVhdGVfdmlldycsIG5vZGU6ICd2aWV3JywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ1ZpZXcu Li4nKSB9fScsCisgICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLXZp ZXcnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6IHRydWV9LAor ICAgICAgICAgIGVuYWJsZTogJ2NhbkNyZWF0ZScKKyAgICAgICAgfSx7Cisg ICAgICAgICAgbmFtZTogJ2NyZWF0ZV92aWV3Jywgbm9kZTogJ3NjaGVtYScs IG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcs ICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycs CisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwg bGFiZWw6ICd7eyBfKCdWaWV3Li4uJykgfX0nLAorICAgICAgICAgIGljb246 ICd3Y1RhYkljb24gaWNvbi12aWV3JywgZGF0YToge2FjdGlvbjogJ2NyZWF0 ZScsIGNoZWNrOiBmYWxzZX0sCisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3Jl YXRlJworICAgICAgICB9CisgICAgICAgIF0pOworICAgICAgfSwKKworICAg ICAgLyoqCisgICAgICAgIERlZmluZSBtb2RlbCBmb3IgdGhlIHZpZXcgbm9k ZSBhbmQgc3BlY2lmeSB0aGUKKyAgICAgICAgcHJvcGVydGllcyBvZiB0aGUg bW9kZWwgaW4gc2NoZW1hLgorICAgICAgICovCisgICAgICBtb2RlbDogcGdB ZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAgICAgZGVm YXVsdHM6IHsKKyAgICAgICAgfSwKKyAgICAgICAgc2NoZW1hOiBbeworICAg ICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScpIH19Jywg Y2VsbDogJ3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ3RleHQnCisgICAg ICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ29pZCcsIGxhYmVs Oid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAg IHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IHRydWUsIG1vZGU6IFsncHJvcGVy dGllcyddCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBpZDog J293bmVyJywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3Ry aW5nJywgY29udHJvbDogJ25vZGUtbGlzdC1ieS1uYW1lJywKKyAgICAgICAg ICBub2RlOiAncm9sZScKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAg ICAgIGlkOiAnc2NoZW1hJywgbGFiZWw6J3t7IF8oJ1NjaGVtYScpIH19Jywg Y2VsbDogJ3N0cmluZycsIGZpcnN0X2VtcHR5OiBmYWxzZSwKKyAgICAgICAg ICB0eXBlOiAnb3B0aW9ucycsIG5vZGU6ICdzY2hlbWEnLAorICAgICAgICAg IGNvbnRyb2w6IEJhY2tmb3JtLk5vZGVMaXN0QnlOYW1lQ29udHJvbC5leHRl bmQoeworICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpeworCisgICAg ICAgICAgICAgIC8vIEluaXRpYWxpemUgcGFyZW50J3MgcmVuZGVyIG1ldGhv ZAorICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlTGlzdEJ5TmFtZUNvbnRy b2wucHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor CisgICAgICAgICAgICAgIC8vIFNldCBzY2hlbWEgZGVmYXVsdCB2YWx1ZSB0 byBpdHMgcGFyZW50IFNjaGVtYQorICAgICAgICAgICAgICBpZih0aGlzLm1v ZGVsLmlzTmV3KCkpeworICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0 KHsnc2NoZW1hJzogdGhpcy5tb2RlbC5ub2RlX2luZm8uc2NoZW1hLmxhYmVs fSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJuIHRo aXM7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSksCisKKyAgICAgICAg ICAvLyBEb24ndCBzaG93IHNjaGVtYSBzdGFydHMgd2l0aCAicGdfIgorICAg ICAgICAgIGZpbHRlcjogZnVuY3Rpb24oZCl7CisgICAgICAgICAgICBpZihk LmxhYmVsICYmIGQubGFiZWwubWF0Y2goL15wZ18vKSl7CisgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg ICAgeworICAgICAgICAgIGlkOiAnY29tbWVudCcsIGxhYmVsOid7eyBfKCdD b21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBl OiAnbXVsdGlsaW5lJworICAgICAgICB9LAorICAgICAgICB7CisgICAgICAg ICAgaWQ6ICdzeXN0ZW1fdmlldycsIGxhYmVsOid7eyBfKCdTeXN0ZW0gdmll dz8nKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICdz d2l0Y2gnLCBkaXNhYmxlZDogdHJ1ZSwgbW9kZTogWydwcm9wZXJ0aWVzJ10K KyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgIGlkOiAnc2VjdXJp dHlfYmFycmllcicsIGxhYmVsOid7eyBfKCdTZWN1cml0eSBCYXJyaWVyJykg fX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAnc3dpdGNo JywgbWluX3ZlcnNpb246ICc5MDIwMCcsIG1vZGU6IFsnY3JlYXRlJywgJ2Vk aXQnXSwKKyAgICAgICAgICBncm91cDogJ0RlZmluaXRpb24nCisgICAgICAg IH0sCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ2NoZWNrX29wdGlvbics IGxhYmVsOid7eyBfKCdDaGVjayBPcHRpb25zJykgfX0nLAorICAgICAgICAg IGNvbnRyb2w6ICdzZWxlY3QyJywgZ3JvdXA6ICdEZWZpbml0aW9uJywgdHlw ZTogJ3RleHQnLAorICAgICAgICAgIG1pbl92ZXJzaW9uOiAnOTA0MDAnLCBt b2RlOlsncHJvcGVydGllcycsICdjcmVhdGUnLCAnZWRpdCddLAorICAgICAg ICAgIHNlbGVjdDI6IHsKKworICAgICAgICAgICAgLy8gc2V0IHNlbGVjdDIg b3B0aW9uIHdpZHRoIHRvIDEwMCUKKyAgICAgICAgICAgIHdpZHRoOiAnMTAw JScKKyAgICAgICAgICB9LAorICAgICAgICAgIG9wdGlvbnM6WworICAgICAg ICAgICAge2xhYmVsOiAiTm8iLCB2YWx1ZTogIm5vIn0sCisgICAgICAgICAg ICB7bGFiZWw6ICJMb2NhbCIsIHZhbHVlOiAibG9jYWwifSwKKyAgICAgICAg ICAgIHtsYWJlbDogIkNhc2NhZGVkIiwgdmFsdWU6ICJjYXNjYWRlZCJ9Cisg ICAgICAgICAgXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg aWQ6ICdkZWZpbml0aW9uJywgbGFiZWw6J3t7IF8oJ0RlZmluaXRpb24nKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg bW9kZTogWydjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ0RlZmluaXRpb24n LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlNxbEZpZWxkQ29udHJv bCwgZXh0cmFDbGFzc2VzOlsnc3FsX2ZpZWxkX2hlaWdodF8xNDAnXQorICAg ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgaWQ6ICdhY2wnLCBsYWJl bDogJ3t7IF8oIkFDTCIpIH19JywKKyAgICAgICAgICBtb2RlOiBbJ3Byb3Bl cnRpZXMnXSwgdHlwZTogJ3RleHQnCisgICAgICAgIH0sCisKKyAgICAgICAg Ly8gQWRkIFByaXZpbGVnZSBDb250cm9sCisgICAgICAgIHsKKyAgICAgICAg ICBpZDogJ2RhdGFjbCcsIGxhYmVsOiAne3sgXygnUHJpdmlsZWdlcycpIH19 JywKKyAgICAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuUHJp dmlsZWdlUm9sZU1vZGVsLmV4dGVuZCgKKyAgICAgICAgICAgIHtwcml2aWxl Z2VzOiBbJ2EnLCAncicsICd3JywgJ2QnLCAnRCcsICd4JywgJ3QnXX0pLCB1 bmlxdWVDb2wgOiBbJ2dyYW50ZWUnXSwKKyAgICAgICAgICBlZGl0YWJsZTog ZmFsc2UsIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICd7eyBfKCdTZWN1 cml0eScpIH19JywKKyAgICAgICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRl J10sIGNhbkFkZDogdHJ1ZSwgY2FuRGVsZXRlOiB0cnVlLAorICAgICAgICAg IGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24nLAorICAgICAgICB9 LAorCisgICAgICAgIC8vIEFkZCBTZWN1cml0eSBMYWJlbHMgQ29udHJvbAor ICAgICAgICB7CisgICAgICAgICAgaWQ6ICdzZWNsYWJlbHMnLCBsYWJlbDog J3t7IF8oJ1NlY3VyaXR5IExhYmVscycpIH19JywKKyAgICAgICAgICBtb2Rl bDogU2VjdXJpdHlNb2RlbCwgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAnY29s bGVjdGlvbicsCisgICAgICAgICAgY2FuRWRpdDogZmFsc2UsIGdyb3VwOiAn e3sgXygnU2VjdXJpdHknKSB9fScsIGNhbkRlbGV0ZTogdHJ1ZSwKKyAgICAg ICAgICBtb2RlOiBbJ2VkaXQnLCAnY3JlYXRlJ10sIGNhbkFkZDogdHJ1ZSwK KyAgICAgICAgICBjb250cm9sOiAndW5pcXVlLWNvbC1jb2xsZWN0aW9uJywg dW5pcXVlQ29sIDogWydwcm92aWRlciddCisgICAgICAgIH0sCisgICAgICAg IF0sCisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKworICAgICAg ICAgIC8vIFRyaWdnZXJzIHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZvciBm aWVsZHMKKyAgICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICBl cnJtc2csCisgICAgICAgICAgICBmaWVsZF9uYW1lID0gdGhpcy5nZXQoJ25h bWUnKSwKKyAgICAgICAgICAgIGZpZWxkX2RlZiA9IHRoaXMuZ2V0KCdkZWZp bml0aW9uJyk7CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZmllbGRf bmFtZSkgfHwgXy5pc051bGwoZmllbGRfbmFtZSkgfHwKKyAgICAgICAgICAg IFN0cmluZyhmaWVsZF9uYW1lKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycp ID09ICcnKSB7CisgICAgICAgICAgICBlcnJbJ25hbWUnXSA9ICd7eyBfKCJQ bGVhc2Ugc3BlY2lmeSBuYW1lLiIpIH19JzsKKyAgICAgICAgICAgIGVycm1z ZyA9IGVycm1zZyB8fCBlcnJbJ25hbWUnXTsKKyAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBlcnJtc2cpOworICAgICAgICAgICAg cmV0dXJuIGVycm1zZzsKKyAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmFtZScpOworICAgICAgICAgIH0K KyAgICAgICAgICBpZih0aGlzLmlzTmV3KCkpeworICAgICAgICAgICAgaWYg KF8uaXNVbmRlZmluZWQoZmllbGRfZGVmKSB8fCBfLmlzTnVsbChmaWVsZF9k ZWYpIHx8CisgICAgICAgICAgICAgIFN0cmluZyhmaWVsZF9kZWYpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgICAg ZXJyWydkZWZpbml0aW9uJ10gPSAne3sgXygiUGxlYXNlIGVudGVyIGZ1bmN0 aW9uIGRlZmluaXRpb24uIikgfX0nOworICAgICAgICAgICAgICBlcnJtc2cg PSBlcnJtc2cgfHwgZXJyWydkZWZpbml0aW9uJ107CisgICAgICAgICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2RlZmluaXRpb24nLCBlcnJtc2cpOwor ICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICAgICAgfWVs c2V7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnZGVm aW5pdGlvbicpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAg ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgfSksCisKKyAg ICAgIC8qKgorICAgICAgICBTaG93IG9yIGhpZGUgY3JlYXRlIHZpZXcgbWVu dSBvcHRpb24gb24gcGFyZW50IG5vZGUKKyAgICAgICAgYW5kIGhpZGUgZm9y IHN5c3RlbSB2aWV3IGluIGNhdGFsb2dzLgorICAgICAgICovCisgICAgICBj YW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7CisK KyAgICAgICAgLy8gSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiwgd2Ugd2lsbCBh bGxvdyBjcmVhdGUgbWVudQorICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNo ZWNrID09IGZhbHNlKQorICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg ICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRl bURhdGE7CisKKyAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8g Y2hlY2sgcGFyZW50IG5vZGUKKyAgICAgICAgd2hpbGUgKGkpIHsKKworICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8g Y3JlYXRlIHZpZXcKKyAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1h J10sIGQuX3R5cGUpID4gLTEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK KworICAgICAgICAgIGlmICgnY29sbC12aWV3JyA9PSBkLl90eXBlKSB7CisK KyAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2Yg dmlldworICAgICAgICAgICAgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgICBwcmV2X2QgPSBwcmV2 X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOworICAgICAgICAgICAg aWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKKyAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfQorICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50 KGkpIDogbnVsbDsKKyAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkg OiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLy8gYnkgZGVmYXVsdCB3 ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQorICAgICAgICBy ZXR1cm4gdHJ1ZTsKKworICAgICAgfQorICB9KTsKKyAgfQorCisgIHJldHVy biBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdmlldyddOworfSk7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85 LjFfcGx1cy9zcWwvYWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3NxbC9hY2wuc3FsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NTA2MzkKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmll dy9wZy85LjFfcGx1cy9zcWwvYWNsLnNxbApAQCAtMCwwICsxLDUxIEBACit7 IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEdldCBBQ0xzID09PT09 PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VMRUNU CisgICAgJ2RhdGFjbCcgYXMgZGVmdHlwZSwKKyAgICBDT0FMRVNDRShndC5y b2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwKKyAgICBnLnJvbG5hbWUgZ3Jh bnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHByaXZp bGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3JhbnRh YmxlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBkLmdyYW50ZWUsIGQu Z3JhbnRvciwgZC5pc19ncmFudGFibGUsCisgICAgICAgIENBU0UgZC5wcml2 aWxlZ2VfdHlwZQorICAgICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2QnCisg ICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhFTiAnYScKKyAgICAgICAgV0hFTiAn UkVGRVJFTkNFUycgVEhFTiAneCcKKyAgICAgICAgV0hFTiAnU0VMRUNUJyBU SEVOICdyJworICAgICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0JworICAg ICAgICBXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4gJ1RS VU5DQVRFJyBUSEVOICdEJworICAgICAgICBFTFNFICdVTktOT1dOJworICAg ICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAgICAg IChTRUxFQ1QKKyAgICAgICAgICAgIHJlbGFjbAorICAgICAgICBGUk9NCisg ICAgICAgICAgICBwZ19jbGFzcyBjbAorICAgICAgICBMRUZUIE9VVEVSIEpP SU4gcGdfc2hkZXNjcmlwdGlvbiBkZXNjciBPTiAoCisgICAgICAgICAgICBj bC5vaWQ9ZGVzY3Iub2Jqb2lkIEFORCBkZXNjci5jbGFzc29pZD0ncGdfY2xh c3MnOjpyZWdjbGFzcykKKyAgICAgICAgV0hFUkUKKyAgICAgICAgICAgIGNs Lm9pZCA9IHt7IHZpZCB9fTo6T0lEIEFORCByZWxraW5kID0gJ3YnCisgICAg ICAgICkgYWNsLAorICAgICAgICAoU0VMRUNUCisgICAgICAgICAgICAoZCku Z3JhbnRlZSBBUyBncmFudGVlLAorICAgICAgICAgICAgKGQpLmdyYW50b3Ig QVMgZ3JhbnRvciwKKyAgICAgICAgICAgIChkKS5pc19ncmFudGFibGUgQVMg aXNfZ3JhbnRhYmxlLAorICAgICAgICAgICAgKGQpLnByaXZpbGVnZV90eXBl IEFTIHByaXZpbGVnZV90eXBlCisgICAgICAgIEZST00KKyAgICAgICAgICAg IChTRUxFQ1QKKyAgICAgICAgICAgICAgICBhY2xleHBsb2RlKHJlbGFjbCkg QVMgZAorICAgICAgICAgICAgIEZST00KKyAgICAgICAgICAgICAgICBwZ19j bGFzcyBjbDEKKyAgICAgICAgICAgICBXSEVSRQorICAgICAgICAgICAgICAg IGNsMS5vaWQgPSB7eyB2aWQgfX0KKyAgICAgICAgICAgICkgYQorICAgICAg ICApIGQKKyAgICApIGQKKyAgICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19y b2xlcyBnIE9OIChkLmdyYW50b3IgPSBnLm9pZCkKKyAgICBMRUZUIEpPSU4g cGdfY2F0YWxvZy5wZ19yb2xlcyBndCBPTiAoZC5ncmFudGVlID0gZ3Qub2lk KQorR1JPVVAgQlkKKyAgICBnLnJvbG5hbWUsIGd0LnJvbG5hbWUKK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvY3JlYXRlLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3Nx bC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmQ1NGZmZjkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvY3JlYXRl LnNxbApAQCAtMCwwICsxLDIxIEBACit7Iz09PT09PT09PT09PT09PT09PT09 PT09PT09PT1DcmVhdGUgbmV3IHZpZXc9PT09PT09PT09PT09PT09PT09PT09 PT09I30KK3slIGlmIGRpc3BsYXlfY29tbWVudHMgJX0KKy0tIFZpZXc6IHt7 IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorCist LSBEUk9QIFZJRVcge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRh Lm5hbWUpIH19OworCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5uYW1lIGFu ZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5kZWZpbml0aW9uICV9CitDUkVBVEUg T1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fQorQVMKK3t7IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAo JzsnKSB9fTsKK3slIGlmIGRhdGEub3duZXIgJX0KKworQUxURVIgVEFCTEUg e3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19Cisg ICAgT1dORVIgVE8ge3sgZGF0YS5vd25lciB9fTsKK3slIGVuZGlmICV9Cit7 JSBpZiBkYXRhLmNvbW1lbnQgJX0KK0NPTU1FTlQgT04gVklFVyB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKyAgICBJUyB7 eyBkYXRhLmNvbW1lbnR8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvZGVsZXRlLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVz L3NxbC9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmU1MGJlZWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvZGVs ZXRlLnNxbApAQCAtMCwwICsxLDEzIEBACit7IyA9PT09PT09PT09PT09PT09 PT09PT09IERyb3AvQ2FzY2FkZSB2aWV3IGJ5IG5hbWUgPT09PT09PT09PT09 PT09PT09PT09ICN9Cit7JSBpZiB2aWQgJX0KK1NFTEVDVAorICAgIGMucmVs bmFtZSBBUyBuYW1lLAorICAgIG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdf Y2xhc3MgYworTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04gYy5yZWxu YW1lc3BhY2UgPSBuc3Aub2lkCitXSEVSRQorICAgIGMucmVsZmlsZW5vZGUg PSB7eyB2aWQgfX07Cit7JSBlbGlmIChuYW1lIGFuZCBuc3BuYW1lKSAlfQor RFJPUCBWSUVXIHt7bnNwbmFtZX19Lnt7IGNvbm58cXRJZGVudChuYW1lKSB9 fSB7JSBpZiBjYXNjYWRlICV9IENBU0NBREUgeyUgZW5kaWYgJX0KK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3Fs L2dyYW50LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jZTk0ZWNjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL2dyYW50LnNx bApAQCAtMCwwICsxLDE0IEBACit7IyA9PT09PSBHcmFudCBQZXJtaXNzaW9u cyB0byBVc2VyIFJvbGUgb24gVmlld3MvVGFibGVzID09PT09ICN9Cit7JSBp bXBvcnQgJ21hY3Jvcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNFQ0xBQkxFICV9 Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVnZS5tYWNyb3Mn IGFzIFBSSVZJTEVHRSAlfQoreyMgPT09PT0gV2Ugd2lsbCBnZW5lcmF0ZSBT ZWN1cml0eSBMYWJlbCBTUUwgdXNpbmcgbWFjcm8gPT09PT0gI30KK3slIGlm IGRhdGEuc2VjbGFiZWxzICV9Cit7JSBmb3IgciBpbiBkYXRhLnNlY2xhYmVs cyAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5h bWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUg Zm9yIHByaXYgaW4gZGF0YS5kYXRhY2wgJX0KK3t7IFBSSVZJTEVHRS5TRVQo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYu d2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkg fX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVz L3NxbC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTFkODAxCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcGcvOS4xX3BsdXMvc3FsL3Byb3BlcnRpZXMuc3FsCkBAIC0w LDAgKzEsNjkgQEAKK3slIGlmICh2aWQgYW5kIGRhdGxhc3RzeXNvaWQpIG9y IHNjaWQgJX0KK1NFTEVDVAorICAgIGMub2lkLAorICAgIGMueG1pbiwKKyAg ICAoQ0FTRSBXSEVOIGxlbmd0aChzcGMuc3BjbmFtZSkgPiAwIFRIRU4gc3Bj LnNwY25hbWUgRUxTRSAncGdfZGVmYXVsdCcgRU5EKSBhcyBzcGNuYW1lLAor ICAgIGMucmVsbmFtZSBBUyBuYW1lLAorICAgIG5zcC5uc3BuYW1lIEFTIHNj aGVtYSwKKyAgICBkZXNjcmlwdGlvbiBBUyBjb21tZW50LAorICAgIGMucmVs dGFibGVzcGFjZSBBUyBzcGNvaWQsCisgICAgcGdfZ2V0X3VzZXJieWlkKGMu cmVsb3duZXIpIEFTIG93bmVyLAorICAgIHBnX2dldF92aWV3ZGVmKGMub2lk LCB0cnVlKSBBUyBkZWZpbml0aW9uLAorICAgIGFycmF5X3RvX3N0cmluZyhj LnJlbGFjbDo6dGV4dFtdLCAnLCAnKSBBUyBhY2wsCisgICAgeyM9PT09PT09 PT09PT09Q2hlY2tzIGlmIGl0IGlzIHN5c3RlbSB2aWV3PT09PT09PT09PT09 PT09PSN9CisgICAgeyUgaWYgdmlkIGFuZCBkYXRsYXN0c3lzb2lkICV9Cisg ICAgQ0FTRSBXSEVOIHt7dmlkfX0gPD0ge3tkYXRsYXN0c3lzb2lkfX0gVEhF TiBUcnVlIEVMU0UgRmFsc2UgRU5EIEFTIHN5c3RlbV92aWV3LAorICAgIHsl IGVuZGlmICV9CisgICAgKFNFTEVDVAorICAgICAgICBhcnJheV9hZ2cobGFi ZWwpCisgICAgIEZST00KKyAgICAgICAgcGdfc2VjbGFiZWxzIHNsMQorICAg ICBXSEVSRQorICAgICAgICBzbDEub2Jqb2lkPWMub2lkIEFORCBzbDEub2Jq c3ViaWQ9MAorICAgICkgQVMgbGFiZWxzLAorICAgIChTRUxFQ1QKKyAgICAg ICAgYXJyYXlfYWdnKHByb3ZpZGVyKQorICAgICBGUk9NCisgICAgICAgIHBn X3NlY2xhYmVscyBzbDIKKyAgICAgV0hFUkUgc2wyLm9iam9pZD1jLm9pZCBB TkQgc2wyLm9ianN1YmlkPTAKKyAgICApIEFTIHByb3ZpZGVycworRlJPTSBw Z19jbGFzcyBjCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX25hbWVzcGFjZSBu c3Agb24gbnNwLm9pZCA9IGMucmVsbmFtZXNwYWNlCisgICAgTEVGVCBPVVRF UiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9Yy5yZWx0YWJs ZXNwYWNlCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRl cyBPTiAoZGVzLm9iam9pZD1jLm9pZCBhbmQgZGVzLm9ianN1YmlkPTAgQU5E IGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK1dIRVJFICgo Yy5yZWxoYXNydWxlcworICAgICAgICAgICAgQU5ECisgICAgICAgICAgICAg ICAgKEVYSVNUUygKKyAgICAgICAgICAgICAgICAgICAgU0VMRUNUCisgICAg ICAgICAgICAgICAgICAgICAgICByLnJ1bGVuYW1lCisgICAgICAgICAgICAg ICAgICAgIEZST00KKyAgICAgICAgICAgICAgICAgICAgICAgIHBnX3Jld3Jp dGUgcgorICAgICAgICAgICAgICAgICAgICBXSEVSRQorICAgICAgICAgICAg ICAgICAgICAgICAgKChyLmV2X2NsYXNzID0gYy5vaWQpIEFORCAoYnBjaGFy KHIuZXZfdHlwZSkgPSAnMSc6OmJwY2hhcikpCisgICAgICAgICAgICAgICAg KSkKKyAgICAgICApIEFORCAoYy5yZWxraW5kID0gJ3YnOjpjaGFyKSkKK3sl IGlmICh2aWQgYW5kIGRhdGxhc3RzeXNvaWQpICV9CisgICAgQU5EIGMub2lk ID0ge3t2aWR9fTo6b2lkCit7JSBlbGlmIHNjaWQgJX0KKyAgICBBTkQgYy5y ZWxuYW1lc3BhY2UgPSB7e3NjaWR9fTo6b2lkIE9SREVSIEJZIGMucmVsbmFt ZQoreyUgZW5kaWYgJX0KKworeyUgZWxpZiB0eXBlID09ICdyb2xlcycgJX0K K1NFTEVDVAorICAgIHByLnJvbG5hbWUKK0ZST00KKyAgICBwZ19yb2xlcyBw cgorV0hFUkUKKyAgICBwci5yb2xjYW5sb2dpbgorT1JERVIgQlkKKyAgICBw ci5yb2xuYW1lCisKK3slIGVsaWYgdHlwZSA9PSAnc2NoZW1hcycgJX0KK1NF TEVDVAorICAgIG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNl IG5zcAorV0hFUkUKKyAgICAobnNwLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xc XyUnCisgICAgICAgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25f c2NoZW1hJykKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFfcGx1cy9zcWwvdXBk YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3 L3BnLzkuMV9wbHVzL3NxbC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjJmN2Y4MmUKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjFf cGx1cy9zcWwvdXBkYXRlLnNxbApAQCAtMCwwICsxLDY2IEBACit7IyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09IFVwZGF0ZSBWaWV3ID09PT09PT09 PT09PT09PT09PT09PT09PT0gI30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3Vy aXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9z L3NjaGVtYXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7 JSBpZiBkYXRhICV9Cit7JSBzZXQgdmlld19uYW1lID0gZGF0YS5uYW1lIGlm IGRhdGEubmFtZSBlbHNlIG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgdmlld19z Y2hlbWEgPSBkYXRhLnNjaGVtYSBpZiBkYXRhLnNjaGVtYSBlbHNlIG9fZGF0 YS5zY2hlbWEgJX0KK3slIHNldCBkZWYgPSBkYXRhLmRlZmluaXRpb24ucnN0 cmlwKCc7JykgaWYgZGF0YS5kZWZpbml0aW9uICV9Cit7JSBpZiBkYXRhLm5h bWUgYW5kIGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgVklF VyB7eyBjb25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUp IH19CisgICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUp IH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRh LnNjaGVtYSAhPSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBWSUVXIHt7IGNv bm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICAg IFNFVCBTQ0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsK K3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyIGFuZCBkYXRhLm93bmVy ICE9IG9fZGF0YS5vd25lciAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElk ZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgT1dORVIgVE8g e3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19OworeyUgZW5kaWYgJX0K K3slIGlmIGRlZiBhbmQgZGVmICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJp cCgnOycpICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJ ZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQorICAgIEFTe3sgZGVm IH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuY29tbWVudCBhbmQgZGF0 YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIFZJ RVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19 CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVu ZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5n ZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUgaWYg J2RlbGV0ZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBk YXRhLmRhdGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEu c2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYg J2NoYW5nZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBk YXRhLmRhdGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEu c2NoZW1hKSB9fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBw cml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBw cml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFjbCAl fQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7IFBS SVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRh Lm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBk YXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3sl IGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNo YW5nZSBTZWN1cml0eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMg aXMgbm90IG5vbmUgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0K K3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYg J2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8 bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQg JX0KK3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUs IHIucHJvdmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVk fGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAl fQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUs IHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3Ig JX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxz IGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3Ig ciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQTFko Y29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJp dHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBl bmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMV9wbHVzL3NxbC92aWV3 X2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3 L3BnLzkuMV9wbHVzL3NxbC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi42ZGZmMDRlCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4x X3BsdXMvc3FsL3ZpZXdfaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyMgQmVs b3cgd2lsbCBwcm92aWRlIHZpZXcgaWQgZm9yIG5ld2x5IGNyZWF0ZWQgdmll dyAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdfY2xh c3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsKK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvYWNsLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9wbHVzL3Nx bC9hY2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjVmMmQwZmIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvYWNsLnNxbApA QCAtMCwwICsxLDUyIEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09IEdldCBBQ0xzID09PT09PT09PT09PT09PT09PT09PT09PT0gI30KK3sl IGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlwZSwK KyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwK KyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmls ZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dy YW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAorICAg ICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUsCisg ICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVOICdE RUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhFTiAn YScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAgICAg ICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVOICdUUklH R0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4gJ3cn CisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAgICAgICBF TFNFICdVTktOT1dOJworICAgICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUK KyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHJlbGFj bAorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFzcyBjbAorICAg ICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfc2hkZXNjcmlwdGlvbiBkZXNjciBP TiAoCisgICAgICAgICAgICBjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFORCBkZXNj ci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAgICAgICAgV0hF UkUKKyAgICAgICAgICAgIGNsLm9pZCA9IHt7IHZpZCB9fTo6T0lEIEFORCBy ZWxraW5kID0gJ3YnCisgICAgICAgICkgYWNsLAorICAgICAgICAoU0VMRUNU CisgICAgICAgICAgICAoZCkuZ3JhbnRlZSBBUyBncmFudGVlLAorICAgICAg ICAgICAgKGQpLmdyYW50b3IgQVMgZ3JhbnRvciwKKyAgICAgICAgICAgIChk KS5pc19ncmFudGFibGUgQVMgaXNfZ3JhbnRhYmxlLAorICAgICAgICAgICAg KGQpLnByaXZpbGVnZV90eXBlIEFTIHByaXZpbGVnZV90eXBlCisgICAgICAg IEZST00KKyAgICAgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAgICAgICBh Y2xleHBsb2RlKHJlbGFjbCkgQVMgZAorICAgICAgICAgICAgIEZST00KKyAg ICAgICAgICAgICAgICBwZ19jbGFzcyBjbDEKKyAgICAgICAgICAgICBXSEVS RQorICAgICAgICAgICAgICAgIGNsMS5vaWQgPSB7eyB2aWQgfX0KKyAgICAg ICAgICAgICkgYQorICAgICAgICApIGQKKyAgICApIGQKK0xFRlQgSk9JTiBw Z19jYXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQor TEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRl ZSA9IGd0Lm9pZCkKK0dST1VQIEJZCisgICAgZy5yb2xuYW1lLAorICAgIGd0 LnJvbG5hbWUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvY3Jl YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3 L3BnLzkuMl9wbHVzL3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjE3OGJhNjQKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJf cGx1cy9zcWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDIyIEBACit7Iz09PT09 PT09PT09PT09PT09PT09PT09PT09PT1DcmVhdGUgbmV3IHZpZXc9PT09PT09 PT09PT09PT09PT09PT09PT09I30KK3slIGlmIGRpc3BsYXlfY29tbWVudHMg JX0KKy0tIFZpZXc6IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0 YS5uYW1lKSB9fQorCistLSBEUk9QIFZJRVcge3sgY29ubnxxdElkZW50KGRh dGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5uYW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5kZWZpbml0 aW9uICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVu dChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQoreyUgaWYgKGRhdGEuc2Vj dXJpdHlfYmFycmllcikgJX0KK1dJVEggKHslIGlmIGRhdGEuc2VjdXJpdHlf YmFycmllciAlfXNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1cml0eV9i YXJyaWVyfGxvd2VyIH19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX0gQVMKK3t7 IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSB9fTsKK3slIGlmIGRhdGEu b3duZXIgJX0KKworQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KGRhdGEu c2NoZW1hLCBkYXRhLm5hbWUpIH19CisgIE9XTkVSIFRPIHt7IGRhdGEub3du ZXIgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb21tZW50ICV9CitD T01NRU5UIE9OIFZJRVcge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hLCBk YXRhLm5hbWUpIH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJh bCB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4yX3Bs dXMvc3FsL2RlbGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvZGVsZXRlLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTBiZWVjCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3Zp ZXcvcGcvOS4yX3BsdXMvc3FsL2RlbGV0ZS5zcWwKQEAgLTAsMCArMSwxMyBA QAoreyMgPT09PT09PT09PT09PT09PT09PT09PSBEcm9wL0Nhc2NhZGUgdmll dyBieSBuYW1lID09PT09PT09PT09PT09PT09PT09PSAjfQoreyUgaWYgdmlk ICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgbmFtZSwKKyAgICBuc3Au bnNwbmFtZQorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xFRlQgSk9JTiBwZ19u YW1lc3BhY2UgbnNwIE9OIGMucmVsbmFtZXNwYWNlID0gbnNwLm9pZAorV0hF UkUKKyAgICBjLnJlbGZpbGVub2RlID0ge3sgdmlkIH19OworeyUgZWxpZiAo bmFtZSBhbmQgbnNwbmFtZSkgJX0KK0RST1AgVklFVyB7e25zcG5hbWV9fS57 eyBjb25ufHF0SWRlbnQobmFtZSkgfX0geyUgaWYgY2FzY2FkZSAlfSBDQVND QURFIHslIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4yX3BsdXMv c3FsL2dyYW50LnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRl cy92aWV3L3BnLzkuMl9wbHVzL3NxbC9ncmFudC5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5NGVjYwotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3Bn LzkuMl9wbHVzL3NxbC9ncmFudC5zcWwKQEAgLTAsMCArMSwxNCBAQAoreyMg PT09PT0gR3JhbnQgUGVybWlzc2lvbnMgdG8gVXNlciBSb2xlIG9uIFZpZXdz L1RhYmxlcyA9PT09PSAjfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHku bWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2No ZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3sjID09 PT09IFdlIHdpbGwgZ2VuZXJhdGUgU2VjdXJpdHkgTGFiZWwgU1FMIHVzaW5n IG1hY3JvID09PT09ICN9Cit7JSBpZiBkYXRhLnNlY2xhYmVscyAlfQoreyUg Zm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3t7IFNFQ0xBQkxFLkFQUExZ KGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3Vy aXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNs ICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3Jh bnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0 aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVu ZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1 cy9zcWwvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZWViZTBmNQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9wbHVzL3Nx bC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDcwIEBACit7JSBpZiAodmlk IGFuZCBkYXRsYXN0c3lzb2lkKSBvciBzY2lkICV9CitTRUxFQ1QKKyAgICBj Lm9pZCwKKyAgICBjLnhtaW4sCisgICAgYy5yZWxuYW1lIEFTIG5hbWUsCisg ICAgYy5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCwKKyAgICAoQ0FTRSBXSEVO IGxlbmd0aChzcGMuc3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25hbWUgRUxT RSAncGdfZGVmYXVsdCcgRU5EKSBhcyBzcGNuYW1lLAorICAgIHBnX2dldF91 c2VyYnlpZChjLnJlbG93bmVyKSBBUyBvd25lciwKKyAgICBkZXNjcmlwdGlv biBBcyBjb21tZW50LAorICAgIHBnX2dldF92aWV3ZGVmKGMub2lkLCB0cnVl KSBBUyBkZWZpbml0aW9uLAorICAgIG5zcC5uc3BuYW1lIEFTIHNjaGVtYSwK KyAgICBhcnJheV90b19zdHJpbmcoYy5yZWxhY2w6OnRleHRbXSwgJywgJykg QVMgYWNsLAorICAgIHsjPT09PT09PT09PT09PUNoZWNrcyBpZiBpdCBpcyBz eXN0ZW0gdmlldz09PT09PT09PT09PT09PT0jfQorICAgIHslIGlmIHZpZCBh bmQgZGF0bGFzdHN5c29pZCAlfQorICAgIENBU0UgV0hFTiB7e3ZpZH19IDw9 IHt7ZGF0bGFzdHN5c29pZH19IFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBB UyBzeXN0ZW1fdmlldywKKyAgICB7JSBlbmRpZiAlfQorKFNFTEVDVAorICAg IGFycmF5X2FnZyhsYWJlbCkKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wx CitXSEVSRQorICAgIHNsMS5vYmpvaWQ9Yy5vaWQgQU5EIHNsMS5vYmpzdWJp ZD0wKSBBUyBsYWJlbHMsCisoU0VMRUNUCisgICAgYXJyYXlfYWdnKHByb3Zp ZGVyKQorRlJPTQorICAgIHBnX3NlY2xhYmVscyBzbDIKK1dIRVJFCisgICAg c2wyLm9iam9pZD1jLm9pZCBBTkQgc2wyLm9ianN1YmlkPTApIEFTIHByb3Zp ZGVycworICAgICwgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhjLnJlbG9w dGlvbnMsICcsJykKKyAgICAgICAgRlJPTSAnc2VjdXJpdHlfYmFycmllcj0o W2EtenwwLTldKiknKSBBUyBzZWN1cml0eV9iYXJyaWVyCitGUk9NIHBnX2Ns YXNzIGMKK0xFRlQgT1VURVIgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIG9uIG5z cC5vaWQgPSBjLnJlbG5hbWVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX3Rh Ymxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9Yy5yZWx0YWJsZXNwYWNlCitMRUZU IE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lk PWMub2lkIGFuZCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdw Z19jbGFzcyc6OnJlZ2NsYXNzKQorICAgIFdIRVJFICgoYy5yZWxoYXNydWxl cyBBTkQgKEVYSVNUUyAoCisgICAgICAgICAgICBTRUxFQ1QKKyAgICAgICAg ICAgICAgICByLnJ1bGVuYW1lCisgICAgICAgICAgICBGUk9NCisgICAgICAg ICAgICAgICAgcGdfcmV3cml0ZSByCisgICAgICAgICAgICBXSEVSRQorICAg ICAgICAgICAgICAgICgoci5ldl9jbGFzcyA9IGMub2lkKQorICAgICAgICAg ICAgICAgICAgICBBTkQgKGJwY2hhcihyLmV2X3R5cGUpID0gJzEnOjpicGNo YXIpCisgICAgICAgICAgICAgICAgKSApKQorICAgICAgICAgICApIEFORCAo Yy5yZWxraW5kID0gJ3YnOjpjaGFyKQorICAgICAgICAgICkKK3slIGlmICh2 aWQgYW5kIGRhdGxhc3RzeXNvaWQpICV9CisgICAgQU5EIGMub2lkID0ge3t2 aWR9fTo6b2lkCit7JSBlbGlmIHNjaWQgJX0KKyAgICBBTkQgYy5yZWxuYW1l c3BhY2UgPSB7e3NjaWR9fTo6b2lkIE9SREVSIEJZIGMucmVsbmFtZQoreyUg ZW5kaWYgJX0KKworeyUgZWxpZiB0eXBlID09ICdyb2xlcycgJX0KK1NFTEVD VAorICAgIHByLnJvbG5hbWUKK0ZST00KKyAgICBwZ19yb2xlcyBwcgorV0hF UkUKKyAgICBwci5yb2xjYW5sb2dpbgorT1JERVIgQlkKKyAgICBwci5yb2xu YW1lCisKK3slIGVsaWYgdHlwZSA9PSAnc2NoZW1hcycgJX0KK1NFTEVDVAor ICAgIG5zcC5uc3BuYW1lCitGUk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAor V0hFUkUKKyAgICAobnNwLm5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXyUnCisg ICAgICAgIEFORCBuc3AubnNwbmFtZSAhPSAnaW5mb3JtYXRpb25fc2NoZW1h JykKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92 aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9zcWwvdXBkYXRlLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzku Ml9wbHVzL3NxbC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmMzN2Q0YmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjJfcGx1cy9z cWwvdXBkYXRlLnNxbApAQCAtMCwwICsxLDc0IEBACit7IyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09IFVwZGF0ZSBWaWV3ID09PT09PT09PT09PT09 PT09PT09PT09PT0gI30KK3slIGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1h Y3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVt YXMvcHJpdmlsZWdlLm1hY3JvcycgYXMgUFJJVklMRUdFICV9Cit7JSBpZiBk YXRhICV9Cit7JSBzZXQgdmlld19uYW1lID0gZGF0YS5uYW1lIGlmIGRhdGEu bmFtZSBlbHNlIG9fZGF0YS5uYW1lICV9Cit7JSBzZXQgdmlld19zY2hlbWEg PSBkYXRhLnNjaGVtYSBpZiBkYXRhLnNjaGVtYSBlbHNlIG9fZGF0YS5zY2hl bWEgJX0KK3slIHNldCBkZWYgPSBkYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7 JykgaWYgZGF0YS5kZWZpbml0aW9uICV9Cit7JSBpZiBkYXRhLm5hbWUgYW5k IGRhdGEubmFtZSAhPSBvX2RhdGEubmFtZSAlfQorQUxURVIgVklFVyB7eyBj b25ufHF0SWRlbnQob19kYXRhLnNjaGVtYSwgb19kYXRhLm5hbWUpIH19Cisg ICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19Owor eyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVt YSAhPSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJ ZGVudChvX2RhdGEuc2NoZW1hLCB2aWV3X25hbWUgKSB9fQorICAgIFNFVCBT Q0hFTUEge3sgY29ubnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsKK3slIGVu ZGlmICV9Cit7JSBpZiBkYXRhLm93bmVyIGFuZCBkYXRhLm93bmVyICE9IG9f ZGF0YS5vd25lciAlfQorQUxURVIgVEFCTEUge3sgY29ubnxxdElkZW50KHZp ZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgT1dORVIgVE8ge3sgY29u bnxxdElkZW50KGRhdGEub3duZXIpIH19OworeyUgZW5kaWYgJX0KK3slIGlm IGRlZiBhbmQgZGVmICE9IG9fZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycp ICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJZGVudCh2 aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9fQoreyUgaWYgKGRhdGEuc2VjdXJp dHlfYmFycmllciBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyICE9IG9fZGF0 YS5zZWN1cml0eV9iYXJyaWVyKSAlfQorICAgIFdJVEggKHslIGlmIGRhdGEu c2VjdXJpdHlfYmFycmllciAlfXNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5z ZWN1cml0eV9iYXJyaWVyfGxvd2VyIH19eyUgZW5kaWYgJX0pIHslIGVuZGlm ICV9CisgICAgQVN7eyBkZWYgfX07Cit7JSBlbHNlICV9Cit7JSBpZiAoZGF0 YS5zZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgYW5kIGRhdGEuc2VjdXJp dHlfYmFycmllcnxsb3dlciAhPSAgb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8 bG93ZXIpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3Nj aGVtYSwgdmlld19uYW1lKSB9fQorICAgIFNFVCAoc2VjdXJpdHlfYmFycmll cj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUgZW5k aWYgJX0KK3slIGVuZGlmICV9CisKK3slIGlmIGRhdGEuY29tbWVudCBhbmQg ZGF0YS5jb21tZW50ICE9IG9fZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9O IFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUp IH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3sl IGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNo YW5nZSBwcml2aWxlZ2VzICN9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBp biBkYXRhLmRhdGFjbC5kZWxldGVkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRB TEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRh dGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg aWYgJ2NoYW5nZWQnIGluIGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBp biBkYXRhLmRhdGFjbC5jaGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRB TEwoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRh dGEuc2NoZW1hKSB9fQore3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUn LCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50 LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFj bCAlfQoreyUgZm9yIHByaXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7 IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBk YXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50 LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0K K3slIGVuZGlmICV9Cit7IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxs IGNoYW5nZSBTZWN1cml0eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJl bHMgaXMgbm90IG5vbmUgYW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAg JX0KK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUg aWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0 ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0 ZWQgJX0KK3t7IFNFQ0xBQkxFLkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRhLm5h bWUsIHIucHJvdmlkZXIpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnYWRkZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFk ZGVkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRl ZCAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5h bWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRm b3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFi ZWxzIGFuZCBzZWNsYWJlbHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBm b3IgciBpbiBzZWNsYWJlbHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQ TFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2Vj dXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuMl9wbHVzL3NxbC92 aWV3X2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BnLzkuMl9wbHVzL3NxbC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGZmMDRlCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcv OS4yX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyMg QmVsb3cgd2lsbCBwcm92aWRlIHZpZXcgaWQgZm9yIG5ld2x5IGNyZWF0ZWQg dmlldyAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdf Y2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsK K3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3 cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvYWNsLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVz L3NxbC9hY2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjg0MzAwY2YKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvYWNsLnNx bApAQCAtMCwwICsxLDM4IEBACit7IyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09IEdldCBBQ0xzID09PT09PT09PT09PT09PT09PT09PT09PT0gI30K K3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlw ZSwKKyAgICBDT0FMRVNDRShndC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRl ZSwKKyAgICBnLnJvbG5hbWUgZ3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJp dmlsZWdlX3R5cGUpIGFzIHByaXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlz X2dyYW50YWJsZSkgYXMgZ3JhbnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAor ICAgICAgICBkLmdyYW50ZWUsIGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUs CisgICAgICAgIENBU0UgZC5wcml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVO ICdERUxFVEUnIFRIRU4gJ2QnCisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhF TiAnYScKKyAgICAgICAgV0hFTiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAg ICAgICAgV0hFTiAnU0VMRUNUJyBUSEVOICdyJworICAgICAgICBXSEVOICdU UklHR0VSJyBUSEVOICd0JworICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4g J3cnCisgICAgICAgIFdIRU4gJ1RSVU5DQVRFJyBUSEVOICdEJworICAgICAg ICBFTFNFICdVTktOT1dOJworICAgICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5 cGUKKyAgICBGUk9NCisgICAgICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHJl bGFjbAorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFzcyBjbAor ICAgICAgICBMRUZUIE9VVEVSIEpPSU4gcGdfc2hkZXNjcmlwdGlvbiBkZXNj ciBPTiAoCisgICAgICAgICAgICBjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFORCBk ZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAgICAgICAg V0hFUkUgY2wub2lkID0ge3sgdmlkIH19OjpPSUQgQU5EIHJlbGtpbmQgPSAn dicKKyAgICAgICAgKSBhY2wsCisgICAgICAgIGFjbGV4cGxvZGUocmVsYWNs KSBkCisgICAgKSBkCitMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBn IE9OIChkLmdyYW50b3IgPSBnLm9pZCkKK0xFRlQgSk9JTiBwZ19jYXRhbG9n LnBnX3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBC WQorICAgIGcucm9sbmFtZSwKKyAgICBndC5yb2xuYW1lCit7JSBlbmRpZiAl fQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVz L3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvY3Jl YXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4x NzhiYTY0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL2NyZWF0ZS5zcWwK QEAgLTAsMCArMSwyMiBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09 PT09Q3JlYXRlIG5ldyB2aWV3PT09PT09PT09PT09PT09PT09PT09PT09PSN9 Cit7JSBpZiBkaXNwbGF5X2NvbW1lbnRzICV9CistLSBWaWV3OiB7eyBjb25u fHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKworLS0gRFJP UCBWSUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1l KSB9fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0 YS5zY2hlbWEgYW5kIGRhdGEuZGVmaW5pdGlvbiAlfQorQ1JFQVRFIE9SIFJF UExBQ0UgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEu bmFtZSkgfX0KK3slIGlmIChkYXRhLnNlY3VyaXR5X2JhcnJpZXIpICV9CitX SVRIICh7JSBpZiBkYXRhLnNlY3VyaXR5X2JhcnJpZXIgJX1zZWN1cml0eV9i YXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciB9fXslIGVu ZGlmICV9KXslIGVuZGlmICV9IEFTCit7eyBkYXRhLmRlZmluaXRpb24ucnN0 cmlwKCc7JykgfX07Cit7JSBpZiBkYXRhLm93bmVyICV9CisKK0FMVEVSIFRB QkxFIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fQorICBPV05FUiBUTyB7eyBkYXRhLm93bmVyIH19OworeyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuY29tbWVudCAlfQorQ09NTUVOVCBPTiBWSUVXIHt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIElT IHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVzL3NxbC9kZWxldGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3Bs dXMvc3FsL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZTUwYmVlYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVzL3NxbC9k ZWxldGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sjID09PT09PT09PT09PT09 PT09PT09PT0gRHJvcC9DYXNjYWRlIHZpZXcgYnkgbmFtZSA9PT09PT09PT09 PT09PT09PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgYy5y ZWxuYW1lIEFTIG5hbWUsCisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBw Z19jbGFzcyBjCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiBjLnJl bG5hbWVzcGFjZSA9IG5zcC5vaWQKK1dIRVJFCisgICAgYy5yZWxmaWxlbm9k ZSA9IHt7IHZpZCB9fTsKK3slIGVsaWYgKG5hbWUgYW5kIG5zcG5hbWUpICV9 CitEUk9QIFZJRVcge3tuc3BuYW1lfX0ue3sgY29ubnxxdElkZW50KG5hbWUp IH19IHslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERSB7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuM19wbHVzL3NxbC9ncmFudC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9z cWwvZ3JhbnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmNlOTRlY2MKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvZ3JhbnQu c3FsCkBAIC0wLDAgKzEsMTQgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Np b25zIHRvIFVzZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PT0gI30KK3sl IGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUg JX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3Jv cycgYXMgUFJJVklMRUdFICV9Cit7IyA9PT09PSBXZSB3aWxsIGdlbmVyYXRl IFNlY3VyaXR5IExhYmVsIFNRTCB1c2luZyBtYWNybyA9PT09PSAjfQoreyUg aWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFi ZWxzICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnVklFVycsIGRhdGEu bmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuZGF0YWNsICV9Cit7 JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbCAlfQore3sgUFJJVklMRUdFLlNF VChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJp di53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1h KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3Bs dXMvc3FsL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL3Byb3BlcnRpZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkM2QxZTQK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjNfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwKQEAg LTAsMCArMSw3NCBAQAoreyUgaWYgKHZpZCBhbmQgZGF0bGFzdHN5c29pZCkg b3Igc2NpZCAlfQorU0VMRUNUCisgICAgYy5vaWQsCisgICAgYy54bWluLAor ICAgIGMucmVsa2luZCwKKyAgICBkZXNjcmlwdGlvbiwKKyAgICAoQ0FTRSBX SEVOIGxlbmd0aChzcGMuc3BjbmFtZSkgPiAwIFRIRU4gc3BjLnNwY25hbWUg RUxTRSAncGdfZGVmYXVsdCcgRU5EKSBhcyBzcGNuYW1lLAorICAgIGMucmVs bmFtZSBBUyBuYW1lLAorICAgIG5zcC5uc3BuYW1lIEFTIHNjaGVtYSwKKyAg ICBjLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLAorICAgIGMucmVsaXNwb3B1 bGF0ZWQgQVMgaXNwb3B1bGF0ZWQsCisgICAgcGdfZ2V0X3VzZXJieWlkKGMu cmVsb3duZXIpIEFTIG93bmVyLAorICAgIGFycmF5X3RvX3N0cmluZyhjLnJl bGFjbDo6dGV4dFtdLCAnLCAnKSBBUyBhY2wsCisgICAgcGdfZ2V0X3ZpZXdk ZWYoYy5vaWQsIHRydWUpIEFTIGRlZmluaXRpb24sCisgICAgeyMgPT09PT0g Q2hlY2tzIGlmIGl0IGlzIHN5c3RlbSB2aWV3ID09PT09ICN9CisgICAgeyUg aWYgdmlkIGFuZCBkYXRsYXN0c3lzb2lkICV9CisgICAgQ0FTRSBXSEVOIHt7 dmlkfX0gPD0ge3tkYXRsYXN0c3lzb2lkfX0gVEhFTiBUcnVlIEVMU0UgRmFs c2UgRU5EIEFTIHN5c3RlbV92aWV3LAorICAgIHslIGVuZGlmICV9CisoU0VM RUNUCisgICAgYXJyYXlfYWdnKGxhYmVsKQorRlJPTQorICAgIHBnX3NlY2xh YmVscyBzbDEKK1dIRVJFCisgICAgc2wxLm9iam9pZD1jLm9pZCBBTkQgc2wx Lm9ianN1YmlkPTApIEFTIGxhYmVscywKKyhTRUxFQ1QKKyAgICBhcnJheV9h Z2cocHJvdmlkZXIpCitGUk9NCisgICAgcGdfc2VjbGFiZWxzIHNsMgorV0hF UkUKKyAgICBzbDIub2Jqb2lkPWMub2lkIEFORCBzbDIub2Jqc3ViaWQ9MCkg QVMgcHJvdmlkZXJzLAorICAgIHN1YnN0cmluZyhhcnJheV90b19zdHJpbmco Yy5yZWxvcHRpb25zLCAnLCcpCisgICAgICAgIEZST00gJ3NlY3VyaXR5X2Jh cnJpZXI9KFthLXp8MC05XSopJykgQVMgc2VjdXJpdHlfYmFycmllcgorRlJP TSBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4gcGdfbmFtZXNwYWNlIG5z cCBvbiBuc3Aub2lkID0gYy5yZWxuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9J TiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lkPWMucmVsdGFibGVzcGFj ZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVz Lm9iam9pZD1jLm9pZCBhbmQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFz c29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTiBw Z19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9IGMucmVsdG9hc3RyZWxpZAorICAg IFdIRVJFICgoYy5yZWxoYXNydWxlcyBBTkQgKEVYSVNUUyAoCisgICAgICAg IFNFTEVDVAorICAgICAgICAgICAgci5ydWxlbmFtZQorICAgICAgICBGUk9N CisgICAgICAgICAgICBwZ19yZXdyaXRlIHIKKyAgICAgICAgV0hFUkUKKyAg ICAgICAgICAgICgoci5ldl9jbGFzcyA9IGMub2lkKQorICAgICAgICAgICAg ICAgIEFORCAoYnBjaGFyKHIuZXZfdHlwZSkgPSAnMSc6OmJwY2hhcikpICkp KQorICAgICAgICAgICAgQU5EIChjLnJlbGtpbmQgPSAndic6OmNoYXIpCisg ICAgICAgICAgKQoreyUgaWYgKHZpZCBhbmQgZGF0bGFzdHN5c29pZCkgJX0K KyAgICBBTkQgYy5vaWQgPSB7e3ZpZH19OjpvaWQKK3slIGVsaWYgc2NpZCAl fQorICAgIEFORCBjLnJlbG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKK09S REVSIEJZCisgICAgYy5yZWxuYW1lCit7JSBlbmRpZiAlfQorCit7JSBlbGlm IHR5cGUgPT0gJ3JvbGVzJyAlfQorU0VMRUNUCisgICAgcHIucm9sbmFtZQor RlJPTQorICAgIHBnX3JvbGVzIHByCitXSEVSRQorICAgIHByLnJvbGNhbmxv Z2luCitPUkRFUiBCWQorICAgIHByLnJvbG5hbWUKKworeyUgZWxpZiB0eXBl ID09ICdzY2hlbWFzJyAlfQorU0VMRUNUCisgICAgbnNwLm5zcG5hbWUKK0ZS T00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitXSEVSRQorICAgIChuc3AubnNw bmFtZSBOT1QgTElLRSBFJ3BnXFxfJScKKyAgICAgICAgQU5EIG5zcC5uc3Bu YW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnKQoreyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3 L3BnLzkuM19wbHVzL3NxbC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL3VwZGF0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkOGYz NwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuM19wbHVzL3NxbC91cGRhdGUuc3FsCkBAIC0w LDAgKzEsNzUgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PT09PT09PT0g VXBkYXRlIFZpZXcgPT09PT09PT09PT09PT09PT09PT09PT09PSAjfQoreyUg aW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAl fQoreyUgaW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9z JyBhcyBQUklWSUxFR0UgJX0KK3slIGlmIGRhdGEgJX0KK3slIHNldCB2aWV3 X25hbWUgPSBkYXRhLm5hbWUgaWYgZGF0YS5uYW1lIGVsc2Ugb19kYXRhLm5h bWUgJX0KK3slIHNldCB2aWV3X3NjaGVtYSA9IGRhdGEuc2NoZW1hIGlmIGRh dGEuc2NoZW1hIGVsc2Ugb19kYXRhLnNjaGVtYSAlfQoreyUgc2V0IGRlZiA9 IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSBpZiBkYXRhLmRlZmluaXRp b24gJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5uYW1lICE9IG9fZGF0 YS5uYW1lICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudChvX2RhdGEu c2NoZW1hLCBvX2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUgVE8ge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYg ZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2NoZW1hICE9IG9fZGF0YS5zY2hlbWEg JX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50KG9fZGF0YS5zY2hlbWEs IHZpZXdfbmFtZSApIH19CisgICAgU0VUIFNDSEVNQSB7eyBjb25ufHF0SWRl bnQoZGF0YS5zY2hlbWEpIH19OworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEu b3duZXIgYW5kIGRhdGEub3duZXIgIT0gb19kYXRhLm93bmVyICV9CitBTFRF UiBUQUJMRSB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEsIHZpZXdfbmFt ZSkgfX0KKyAgICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5vd25l cikgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGVmIGFuZCBkZWYgIT0gb19k YXRhLmRlZmluaXRpb24ucnN0cmlwKCc7JykgJX0KK0NSRUFURSBPUiBSRVBM QUNFIFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25h bWUpIH19Cit7JSBpZiAoZGF0YS5zZWN1cml0eV9iYXJyaWVyIGFuZCBkYXRh LnNlY3VyaXR5X2JhcnJpZXIgIT0gb19kYXRhLnNlY3VyaXR5X2JhcnJpZXIp ICV9CisgICAgV0lUSCAoeyUgaWYgZGF0YS5zZWN1cml0eV9iYXJyaWVyICV9 c2VjdXJpdHlfYmFycmllcj17eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93 ZXIgfX17JSBlbmRpZiAlfSkKK3slIGVuZGlmICV9CisgICAgQVN7eyBkZWYg fX07Cit7JSBlbHNlICV9Cit7JSBpZiAoZGF0YS5zZWN1cml0eV9iYXJyaWVy IGlzIGRlZmluZWQgYW5kIGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciAh PSAgb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIpICV9CitBTFRFUiBW SUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9 fQorICAgIFNFVCAoc2VjdXJpdHlfYmFycmllcj17eyBkYXRhLnNlY3VyaXR5 X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 CisKK3slIGlmIGRhdGEuY29tbWVudCBhbmQgZGF0YS5jb21tZW50ICE9IG9f ZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIFZJRVcge3sgY29ubnxxdElk ZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgSVMge3sgZGF0 YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7IyBUaGUg U1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBwcml2aWxlZ2VzICN9 Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIGRh dGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbC5kZWxl dGVkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxFJywg cHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEuc2NoZW1hKSB9fQoreyUg ZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIGRh dGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbC5jaGFu Z2VkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxFJywg cHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEuc2NoZW1hKSB9fQore3sg UFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRh dGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQs IGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYg aW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5TRVQoY29u biwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0 aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0K K3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7IyBU aGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBTZWN1cml0eSBM YWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgaXMgbm90IG5vbmUgYW5k IGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNsYWJl bHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNl Y2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7IFNFQ0xBQkxF LkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQnIGlu IHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAgJX0K K3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFCTEUu QVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIu c2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9 Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMu Y2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMu Y2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBk YXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgZW5k aWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy92aWV3L3BnLzkuM19wbHVzL3NxbC92aWV3X2lkLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuM19wbHVzL3Nx bC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi42ZGZmMDRlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS4zX3BsdXMvc3FsL3ZpZXdf aWQuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyMgQmVsb3cgd2lsbCBwcm92aWRl IHZpZXcgaWQgZm9yIG5ld2x5IGNyZWF0ZWQgdmlldyAjfQoreyUgaWYgZGF0 YSAlfQorU0VMRUNUIGMub2lkIEZST00gcGdfY2xhc3MgYyBXSEVSRSBjLnJl bG5hbWUgPSAne3sgZGF0YS5uYW1lIH19JzsKK3slIGVuZGlmICV9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9w Zy85LjRfcGx1cy9zcWwvYWNsLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9hY2wuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkNzkxZjUKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMv dmlldy9wZy85LjRfcGx1cy9zcWwvYWNsLnNxbApAQCAtMCwwICsxLDM5IEBA Cit7IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IEdldCBBQ0xzID09 PT09PT09PT09PT09PT09PT09PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VM RUNUCisgICAgJ2RhdGFjbCcgYXMgZGVmdHlwZSwKKyAgICBDT0FMRVNDRShn dC5yb2xuYW1lLCAncHVibGljJykgZ3JhbnRlZSwKKyAgICBnLnJvbG5hbWUg Z3JhbnRvciwKKyAgICBhcnJheV9hZ2cocHJpdmlsZWdlX3R5cGUpIGFzIHBy aXZpbGVnZXMsCisgICAgYXJyYXlfYWdnKGlzX2dyYW50YWJsZSkgYXMgZ3Jh bnRhYmxlCitGUk9NCisgICAgKFNFTEVDVAorICAgICAgICBkLmdyYW50ZWUs IGQuZ3JhbnRvciwgZC5pc19ncmFudGFibGUsCisgICAgICAgIENBU0UgZC5w cml2aWxlZ2VfdHlwZQorICAgICAgICBXSEVOICdERUxFVEUnIFRIRU4gJ2Qn CisgICAgICAgIFdIRU4gJ0lOU0VSVCcgVEhFTiAnYScKKyAgICAgICAgV0hF TiAnUkVGRVJFTkNFUycgVEhFTiAneCcKKyAgICAgICAgV0hFTiAnU0VMRUNU JyBUSEVOICdyJworICAgICAgICBXSEVOICdUUklHR0VSJyBUSEVOICd0Jwor ICAgICAgICBXSEVOICdVUERBVEUnIFRIRU4gJ3cnCisgICAgICAgIFdIRU4g J1RSVU5DQVRFJyBUSEVOICdEJworICAgICAgICBFTFNFICdVTktOT1dOJwor ICAgICAgICBFTkQgQVMgcHJpdmlsZWdlX3R5cGUKKyAgICBGUk9NCisgICAg ICAgIChTRUxFQ1QKKyAgICAgICAgICAgIHJlbGFjbAorICAgICAgICAgRlJP TQorICAgICAgICAgICAgcGdfY2xhc3MgY2wKKyAgICAgICAgIExFRlQgT1VU RVIgSk9JTiBwZ19zaGRlc2NyaXB0aW9uIGRlc2NyIE9OCisgICAgICAgICAg ICAoY2wub2lkPWRlc2NyLm9iam9pZCBBTkQgZGVzY3IuY2xhc3NvaWQ9J3Bn X2NsYXNzJzo6cmVnY2xhc3MpCisgICAgICAgICBXSEVSRQorICAgICAgICAg ICAgY2wub2lkID0ge3sgdmlkIH19OjpPSUQgQU5EIHJlbGtpbmQgPSAndicK KyAgICAgICAgKSBhY2wsCisgICAgICAgIGFjbGV4cGxvZGUocmVsYWNsKSBk CisgICAgKSBkCitMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19yb2xlcyBnIE9O IChkLmdyYW50b3IgPSBnLm9pZCkKK0xFRlQgSk9JTiBwZ19jYXRhbG9nLnBn X3JvbGVzIGd0IE9OIChkLmdyYW50ZWUgPSBndC5vaWQpCitHUk9VUCBCWQor ICAgIGcucm9sbmFtZSwKKyAgICBndC5yb2xuYW1lCit7JSBlbmRpZiAlfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3Zp ZXcvcGcvOS40X3BsdXMvc3FsL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9zcWwvY3JlYXRl LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTEw OTBkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL2NyZWF0ZS5zcWwKQEAg LTAsMCArMSwyNSBAQAoreyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09 Q3JlYXRlIG5ldyB2aWV3PT09PT09PT09PT09PT09PT09PT09PT09PSN9Cit7 JSBpZiBkaXNwbGF5X2NvbW1lbnRzICV9CistLSBWaWV3OiB7eyBjb25ufHF0 SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFtZSkgfX0KKworLS0gRFJPUCBW SUVXIHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9 fTsKKworeyUgZW5kaWYgJX0KK3slIGlmIGRhdGEubmFtZSBhbmQgZGF0YS5z Y2hlbWEgYW5kIGRhdGEuZGVmaW5pdGlvbiAlfQorQ1JFQVRFIE9SIFJFUExB Q0UgVklFVyB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRhdGEubmFt ZSkgfX0KK3slIGlmICgoZGF0YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hl Y2tfb3B0aW9uLmxvd2VyKCkgIT0gJ25vJykgb3IgZGF0YS5zZWN1cml0eV9i YXJyaWVyKSAlfQorV0lUSCAoeyUgaWYgZGF0YS5jaGVja19vcHRpb24gYW5k IGRhdGEuY2hlY2tfb3B0aW9uLmxvd2VyKCkgIT0gJ25vJyAlfQorY2hlY2tf b3B0aW9uPXt7IGRhdGEuY2hlY2tfb3B0aW9uIH19eyUgZW5kaWYgJX17eyAn LCAnIGlmIGRhdGEuY2hlY2tfb3B0aW9uIGFuZAorZGF0YS5jaGVja19vcHRp b24ubG93ZXIoKSAhPSAnbm8nIGFuZCBkYXRhLnNlY3VyaXR5X2JhcnJpZXIg fX0KK3slIGlmIGRhdGEuc2VjdXJpdHlfYmFycmllciAlfSBzZWN1cml0eV9i YXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlciB9fXslIGVu ZGlmICV9KXslIGVuZGlmICV9IEFTCit7eyBkYXRhLmRlZmluaXRpb24ucnN0 cmlwKCc7JykgfX07Cit7JSBpZiBkYXRhLm93bmVyIGFuZCBkYXRhLm1fdmll dyBpcyB1bmRlZmluZWQgJX0KKworQUxURVIgVEFCTEUge3sgY29ubnxxdElk ZW50KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19CisgICAgT1dORVIgVE8g e3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19OworeyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuY29tbWVudCAlfQorQ09NTUVOVCBPTiBWSUVXIHt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQorICAgIElT IHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9kZWxldGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3Bs dXMvc3FsL2RlbGV0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZTUwYmVlYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9k ZWxldGUuc3FsCkBAIC0wLDAgKzEsMTMgQEAKK3sjID09PT09PT09PT09PT09 PT09PT09PT0gRHJvcC9DYXNjYWRlIHZpZXcgYnkgbmFtZSA9PT09PT09PT09 PT09PT09PT09PT0gI30KK3slIGlmIHZpZCAlfQorU0VMRUNUCisgICAgYy5y ZWxuYW1lIEFTIG5hbWUsCisgICAgbnNwLm5zcG5hbWUKK0ZST00KKyAgICBw Z19jbGFzcyBjCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zcCBPTiBjLnJl bG5hbWVzcGFjZSA9IG5zcC5vaWQKK1dIRVJFCisgICAgYy5yZWxmaWxlbm9k ZSA9IHt7IHZpZCB9fTsKK3slIGVsaWYgKG5hbWUgYW5kIG5zcG5hbWUpICV9 CitEUk9QIFZJRVcge3tuc3BuYW1lfX0ue3sgY29ubnxxdElkZW50KG5hbWUp IH19IHslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERSB7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC9ncmFudC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9z cWwvZ3JhbnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmNlOTRlY2MKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9zcWwvZ3JhbnQu c3FsCkBAIC0wLDAgKzEsMTQgQEAKK3sjID09PT09IEdyYW50IFBlcm1pc3Np b25zIHRvIFVzZXIgUm9sZSBvbiBWaWV3cy9UYWJsZXMgPT09PT0gI30KK3sl IGltcG9ydCAnbWFjcm9zL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUg JX0KK3slIGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvcHJpdmlsZWdlLm1hY3Jv cycgYXMgUFJJVklMRUdFICV9Cit7IyA9PT09PSBXZSB3aWxsIGdlbmVyYXRl IFNlY3VyaXR5IExhYmVsIFNRTCB1c2luZyBtYWNybyA9PT09PSAjfQoreyUg aWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZvciByIGluIGRhdGEuc2VjbGFi ZWxzICV9Cit7eyBTRUNMQUJMRS5BUFBMWShjb25uLCAnVklFVycsIGRhdGEu bmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJlbCkgfX0KK3slIGVu ZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlmIGRhdGEuZGF0YWNsICV9Cit7 JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbCAlfQore3sgUFJJVklMRUdFLlNF VChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUsIGRhdGEubmFtZSwgcHJp di53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3JhbnQsIGRhdGEuc2NoZW1h KSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3Bs dXMvc3FsL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mv dGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL3Byb3BlcnRpZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MzgwZDgK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1w bGF0ZXMvdmlldy9wZy85LjRfcGx1cy9zcWwvcHJvcGVydGllcy5zcWwKQEAg LTAsMCArMSw3NyBAQAoreyMgPT09PT09PT09PT09PT09PT09PT09PT09PT0g RmV0Y2ggVmlldyBQcm9wZXJ0aWVzID09PT09PT09PT09PT09PT09PT09PT09 PT0gI30KK3slIGlmICh2aWQgYW5kIGRhdGxhc3RzeXNvaWQpIG9yIHNjaWQg JX0KK1NFTEVDVAorICAgIGMub2lkLAorICAgIGMueG1pbiwKKyAgICBjLnJl bGtpbmQsCisgICAgZGVzY3JpcHRpb24sCisgICAgKENBU0UgV0hFTiBsZW5n dGgoc3BjLnNwY25hbWUpID4gMCBUSEVOIHNwYy5zcGNuYW1lIEVMU0UgJ3Bn X2RlZmF1bHQnIEVORCkgYXMgc3BjbmFtZSwKKyAgICBjLnJlbG5hbWUgQVMg bmFtZSwKKyAgICBjLnJlbHRhYmxlc3BhY2UgQVMgc3Bjb2lkLAorICAgIG5z cC5uc3BuYW1lIEFTIHNjaGVtYSwKKyAgICBjLnJlbGlzcG9wdWxhdGVkIEFT IGlzcG9wdWxhdGVkLAorICAgIHBnX2dldF91c2VyYnlpZChjLnJlbG93bmVy KSBBUyBvd25lciwKKyAgICBhcnJheV90b19zdHJpbmcoYy5yZWxhY2w6OnRl eHRbXSwgJywgJykgQVMgYWNsLAorICAgIHBnX2dldF92aWV3ZGVmKGMub2lk LCB0cnVlKSBBUyBkZWZpbml0aW9uLAorICAgIHsjID09PT09IENoZWNrcyBp ZiBpdCBpcyBzeXN0ZW0gdmlldyA9PT09PSAjfQorICAgIHslIGlmIHZpZCBh bmQgZGF0bGFzdHN5c29pZCAlfQorICAgIENBU0UgV0hFTiB7e3ZpZH19IDw9 IHt7ZGF0bGFzdHN5c29pZH19IFRIRU4gVHJ1ZSBFTFNFIEZhbHNlIEVORCBB UyBzeXN0ZW1fdmlldywKKyAgICB7JSBlbmRpZiAlfQorKFNFTEVDVAorICAg IGFycmF5X2FnZyhsYWJlbCkKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wx CitXSEVSRQorICAgIHNsMS5vYmpvaWQ9Yy5vaWQgQU5EIHNsMS5vYmpzdWJp ZD0wKSBBUyBsYWJlbHMsCisoU0VMRUNUCisgICAgYXJyYXlfYWdnKHByb3Zp ZGVyKQorRlJPTQorICAgIHBnX3NlY2xhYmVscyBzbDIKK1dIRVJFCisgICAg c2wyLm9iam9pZD1jLm9pZCBBTkQgc2wyLm9ianN1YmlkPTApIEFTIHByb3Zp ZGVycywKKyAgICBzdWJzdHJpbmcoYXJyYXlfdG9fc3RyaW5nKGMucmVsb3B0 aW9ucywgJywnKQorICAgICAgICBGUk9NICdjaGVja19vcHRpb249KFthLXpd KiknKSBBUyBjaGVja19vcHRpb24sCisgICAgc3Vic3RyaW5nKGFycmF5X3Rv X3N0cmluZyhjLnJlbG9wdGlvbnMsICcsJykKKyAgICAgICAgRlJPTSAnc2Vj dXJpdHlfYmFycmllcj0oW2EtenwwLTldKiknKSBBUyBzZWN1cml0eV9iYXJy aWVyCitGUk9NIHBnX2NsYXNzIGMKK0xFRlQgT1VURVIgSk9JTiBwZ19uYW1l c3BhY2UgbnNwIG9uIG5zcC5vaWQgPSBjLnJlbG5hbWVzcGFjZQorTEVGVCBP VVRFUiBKT0lOIHBnX3RhYmxlc3BhY2Ugc3BjIG9uIHNwYy5vaWQ9Yy5yZWx0 YWJsZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVz IE9OIChkZXMub2Jqb2lkPWMub2lkIGFuZCBkZXMub2Jqc3ViaWQ9MCBBTkQg ZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorTEVGVCBPVVRF UiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lkID0gYy5yZWx0b2FzdHJl bGlkCisgICAgV0hFUkUgKChjLnJlbGhhc3J1bGVzIEFORCAoRVhJU1RTICgK KyAgICAgICAgU0VMRUNUCisgICAgICAgICAgICByLnJ1bGVuYW1lCisgICAg ICAgIEZST00KKyAgICAgICAgICAgIHBnX3Jld3JpdGUgcgorICAgICAgICBX SEVSRQorICAgICAgICAgICAgKChyLmV2X2NsYXNzID0gYy5vaWQpCisgICAg ICAgICAgICAgICAgQU5EIChicGNoYXIoci5ldl90eXBlKSA9ICcxJzo6YnBj aGFyKSkgKSkpCisgICAgICAgICAgICBBTkQgKGMucmVsa2luZCA9ICd2Jzo6 Y2hhcikKKyAgICAgICAgICApCit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lz b2lkKSAlfQorICAgIEFORCBjLm9pZCA9IHt7dmlkfX06Om9pZAoreyUgZWxp ZiBzY2lkICV9CisgICAgQU5EIGMucmVsbmFtZXNwYWNlID0ge3tzY2lkfX06 Om9pZAorT1JERVIgQlkKKyAgICBjLnJlbG5hbWUKK3slIGVuZGlmICV9CisK K3slIGVsaWYgdHlwZSA9PSAncm9sZXMnICV9CitTRUxFQ1QKKyAgICBwci5y b2xuYW1lCitGUk9NCisgICAgcGdfcm9sZXMgcHIKK1dIRVJFCisgICAgcHIu cm9sY2FubG9naW4KK09SREVSIEJZCisgICAgcHIucm9sbmFtZQorCit7JSBl bGlmIHR5cGUgPT0gJ3NjaGVtYXMnICV9CitTRUxFQ1QKKyAgICBuc3AubnNw bmFtZQorRlJPTQorICAgIHBnX25hbWVzcGFjZSBuc3AKK1dIRVJFCisgICAg KG5zcC5uc3BuYW1lIE5PVCBMSUtFIEUncGdcXF8lJworICAgICAgICBBTkQg bnNwLm5zcG5hbWUgIT0gJ2luZm9ybWF0aW9uX3NjaGVtYScpCit7JSBlbmRp ZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxh dGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL3VwZGF0ZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wZy85LjRfcGx1cy9zcWwv dXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li41NjE4M2ZkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL3VwZGF0ZS5z cWwKQEAgLTAsMCArMSw4MiBAQAoreyMgPT09PT09PT09PT09PT09PT09PT09 PT09PT09PSBVcGRhdGUgVmlldyA9PT09PT09PT09PT09PT09PT09PT09PT09 ICN9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zZWN1cml0eS5tYWNyb3MnIGFzIFNF Q0xBQkxFICV9Cit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hlbWFzL3ByaXZpbGVn ZS5tYWNyb3MnIGFzIFBSSVZJTEVHRSAlfQoreyUgaWYgZGF0YSAlfQoreyUg c2V0IHZpZXdfbmFtZSA9IGRhdGEubmFtZSBpZiBkYXRhLm5hbWUgZWxzZSBv X2RhdGEubmFtZSAlfQoreyUgc2V0IHZpZXdfc2NoZW1hID0gZGF0YS5zY2hl bWEgaWYgZGF0YS5zY2hlbWEgZWxzZSBvX2RhdGEuc2NoZW1hICV9Cit7JSBz ZXQgZGVmID0gZGF0YS5kZWZpbml0aW9uLnJzdHJpcCgnOycpIGlmIGRhdGEu ZGVmaW5pdGlvbiAlfQoreyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLm5hbWUg IT0gb19kYXRhLm5hbWUgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50 KG9fZGF0YS5zY2hlbWEsIG9fZGF0YS5uYW1lKSB9fQorICAgIFJFTkFNRSBU TyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIGVuZGlmICV9 Cit7JSBpZiBkYXRhLnNjaGVtYSBhbmQgZGF0YS5zY2hlbWEgIT0gb19kYXRh LnNjaGVtYSAlfQorQUxURVIgVklFVyB7eyBjb25ufHF0SWRlbnQob19kYXRh LnNjaGVtYSwgdmlld19uYW1lICkgfX0KKyAgICBTRVQgU0NIRU1BIHt7IGNv bm58cXRJZGVudChkYXRhLnNjaGVtYSkgfX07Cit7JSBlbmRpZiAlfQoreyUg aWYgZGF0YS5vd25lciBhbmQgZGF0YS5vd25lciAhPSBvX2RhdGEub3duZXIg JX0KK0FMVEVSIFRBQkxFIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwg dmlld19uYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChk YXRhLm93bmVyKSB9fTsKK3slIGVuZGlmICV9Cit7JSBpZiBkZWYgYW5kIGRl ZiAhPSBvX2RhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSAlfQorQ1JFQVRF IE9SIFJFUExBQ0UgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEs IHZpZXdfbmFtZSkgfX0KK3slIGlmIChkYXRhLmNoZWNrX29wdGlvbiBhbmQg ZGF0YS5jaGVja19vcHRpb24gIT0gb19kYXRhLmNoZWNrX29wdGlvbikKKyAg ICBvciAoZGF0YS5zZWN1cml0eV9iYXJyaWVyIGFuZCBkYXRhLnNlY3VyaXR5 X2JhcnJpZXIgIT0gb19kYXRhLnNlY3VyaXR5X2JhcnJpZXIpICV9CisgICAg V0lUSCAoeyUgaWYgKGRhdGEuY2hlY2tfb3B0aW9uIGFuZCBkYXRhLmNoZWNr X29wdGlvbiAhPSAnbm8nKSAlfWNoZWNrX29wdGlvbj17eyBkYXRhLmNoZWNr X29wdGlvbiB9fXslIGVuZGlmICV9e3snLCAnIGlmIGRhdGEuY2hlY2tfb3B0 aW9uIGFuZCBkYXRhLmNoZWNrX29wdGlvbiAhPSAnbm8nIGFuZCBkYXRhLnNl Y3VyaXR5X2JhcnJpZXIgfX17JSBpZiBkYXRhLnNlY3VyaXR5X2JhcnJpZXIg JX1zZWN1cml0eV9iYXJyaWVyPXt7IGRhdGEuc2VjdXJpdHlfYmFycmllcnxs b3dlciB9fXslIGVuZGlmICV9KQoreyUgZW5kaWYgJX0KKyAgICBBU3t7IGRl ZiB9fTsKK3slIGVsc2UgJX0KK3slIGlmIChkYXRhLnNlY3VyaXR5X2JhcnJp ZXIgaXMgZGVmaW5lZCBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyfGxvd2Vy ICE9ICBvX2RhdGEuc2VjdXJpdHlfYmFycmllcnxsb3dlcikgJX0KK0FMVEVS IFZJRVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUp IH19CisgICAgU0VUIChzZWN1cml0eV9iYXJyaWVyPXt7IGRhdGEuc2VjdXJp dHlfYmFycmllcnxsb3dlciB9fSk7Cit7JSBlbmRpZiAlfQoreyUgaWYgKGRh dGEuY2hlY2tfb3B0aW9uIGFuZCBkYXRhLmNoZWNrX29wdGlvbiAhPSBvX2Rh dGEuY2hlY2tfb3B0aW9uIGFuZCBkYXRhLmNoZWNrX29wdGlvbiAhPSAnbm8n KSAlfQorQUxURVIgVklFVyB7eyBjb25ufHF0SWRlbnQodmlld19zY2hlbWEs IHZpZXdfbmFtZSkgfX0KKyAgICBTRVQgKGNoZWNrX29wdGlvbj17eyBkYXRh LmNoZWNrX29wdGlvbiB9fSk7Cit7JSBlbGlmIChkYXRhLmNoZWNrX29wdGlv biBhbmQgZGF0YS5jaGVja19vcHRpb24gIT0gb19kYXRhLmNoZWNrX29wdGlv biBhbmQgZGF0YS5jaGVja19vcHRpb24gPT0gJ25vJykgJX0KK0FMVEVSIFZJ RVcge3sgY29ubnxxdElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19 IFJFU0VUIChjaGVja19vcHRpb24pOworeyUgZW5kaWYgJX0KK3slIGVuZGlm ICV9CisKK3slIGlmIGRhdGEuY29tbWVudCBhbmQgZGF0YS5jb21tZW50ICE9 IG9fZGF0YS5jb21tZW50ICV9CitDT01NRU5UIE9OIFZJRVcge3sgY29ubnxx dElkZW50KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgSVMge3sg ZGF0YS5jb21tZW50fHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7IyBU aGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBwcml2aWxlZ2Vz ICN9Cit7JSBpZiBkYXRhLmRhdGFjbCAlfQoreyUgaWYgJ2RlbGV0ZWQnIGlu IGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbC5k ZWxldGVkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxF JywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEuc2NoZW1hKSB9fQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGlu IGRhdGEuZGF0YWNsICV9Cit7JSBmb3IgcHJpdiBpbiBkYXRhLmRhdGFjbC5j aGFuZ2VkICV9Cit7eyBQUklWSUxFR0UuVU5TRVRBTEwoY29ubiwgJ1RBQkxF JywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIGRhdGEuc2NoZW1hKSB9fQor e3sgUFJJVklMRUdFLlNFVChjb25uLCAnVEFCTEUnLCBwcml2LmdyYW50ZWUs IGRhdGEubmFtZSwgcHJpdi53aXRob3V0X2dyYW50LCBwcml2LndpdGhfZ3Jh bnQsIGRhdGEuc2NoZW1hKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAl fQoreyUgaWYgJ2FkZGVkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHBy aXYgaW4gZGF0YS5kYXRhY2wuYWRkZWQgJX0KK3t7IFBSSVZJTEVHRS5TRVQo Y29ubiwgJ1RBQkxFJywgcHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYu d2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkg fX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmICV9Cit7 IyBUaGUgU1FMIGdlbmVyYXRlZCBiZWxvdyB3aWxsIGNoYW5nZSBTZWN1cml0 eSBMYWJlbCAjfQoreyUgaWYgZGF0YS5zZWNsYWJlbHMgaXMgbm90IG5vbmUg YW5kIGRhdGEuc2VjbGFiZWxzfGxlbmd0aCA+IDAgJX0KK3slIHNldCBzZWNs YWJlbHMgPSBkYXRhLnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGlu IHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAl fQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KK3t7IFNFQ0xB QkxFLkRST1AoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIp IH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBpZiAnYWRkZWQn IGluIHNlY2xhYmVscyBhbmQgc2VjbGFiZWxzLmFkZGVkfGxlbmd0aCA+IDAg JX0KK3slIGZvciByIGluIHNlY2xhYmVscy5hZGRlZCAlfQore3sgU0VDTEFC TEUuQVBQTFkoY29ubiwgJ1ZJRVcnLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIs IHIuc2VjdXJpdHlfbGFiZWwpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm ICV9Cit7JSBpZiAnY2hhbmdlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJl bHMuY2hhbmdlZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJl bHMuY2hhbmdlZCAlfQore3sgU0VDTEFCTEUuQVBQTFkoY29ubiwgJ1ZJRVcn LCBkYXRhLm5hbWUsIHIucHJvdmlkZXIsIHIuc2VjdXJpdHlfbGFiZWwpIH19 Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BnLzkuNF9wbHVzL3NxbC92aWV3X2lkLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92aWV3L3BnLzkuNF9wbHVz L3NxbC92aWV3X2lkLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5lZjI3NTk0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcGcvOS40X3BsdXMvc3FsL3Zp ZXdfaWQuc3FsCkBAIC0wLDAgKzEsNCBAQAoreyMgPT09PT0gQmVsb3cgd2ls bCBwcm92aWRlIHZpZXcgaWQgZm9yIGxhc3QgY3JlYXRlZCB2aWV3ID09PT09 ICN9Cit7JSBpZiBkYXRhICV9CitTRUxFQ1QgYy5vaWQgRlJPTSBwZ19jbGFz cyBjIFdIRVJFIGMucmVsbmFtZSA9ICd7eyBkYXRhLm5hbWUgfX0nOworeyUg ZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL2FjbC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVz L3NxbC9hY2wuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjdkNzkxZjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9hY2wu c3FsCkBAIC0wLDAgKzEsMzkgQEAKK3sjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT0gR2V0IEFDTHMgPT09PT09PT09PT09PT09PT09PT09PT09PSAj fQoreyUgaWYgdmlkICV9CitTRUxFQ1QKKyAgICAnZGF0YWNsJyBhcyBkZWZ0 eXBlLAorICAgIENPQUxFU0NFKGd0LnJvbG5hbWUsICdwdWJsaWMnKSBncmFu dGVlLAorICAgIGcucm9sbmFtZSBncmFudG9yLAorICAgIGFycmF5X2FnZyhw cml2aWxlZ2VfdHlwZSkgYXMgcHJpdmlsZWdlcywKKyAgICBhcnJheV9hZ2co aXNfZ3JhbnRhYmxlKSBhcyBncmFudGFibGUKK0ZST00KKyAgICAoU0VMRUNU CisgICAgICAgIGQuZ3JhbnRlZSwgZC5ncmFudG9yLCBkLmlzX2dyYW50YWJs ZSwKKyAgICAgICAgQ0FTRSBkLnByaXZpbGVnZV90eXBlCisgICAgICAgIFdI RU4gJ0RFTEVURScgVEhFTiAnZCcKKyAgICAgICAgV0hFTiAnSU5TRVJUJyBU SEVOICdhJworICAgICAgICBXSEVOICdSRUZFUkVOQ0VTJyBUSEVOICd4Jwor ICAgICAgICBXSEVOICdTRUxFQ1QnIFRIRU4gJ3InCisgICAgICAgIFdIRU4g J1RSSUdHRVInIFRIRU4gJ3QnCisgICAgICAgIFdIRU4gJ1VQREFURScgVEhF TiAndycKKyAgICAgICAgV0hFTiAnVFJVTkNBVEUnIFRIRU4gJ0QnCisgICAg ICAgIEVMU0UgJ1VOS05PV04nCisgICAgICAgIEVORCBBUyBwcml2aWxlZ2Vf dHlwZQorICAgIEZST00KKyAgICAgICAgKFNFTEVDVAorICAgICAgICAgICAg cmVsYWNsCisgICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19jbGFzcyBj bAorICAgICAgICAgTEVGVCBPVVRFUiBKT0lOIHBnX3NoZGVzY3JpcHRpb24g ZGVzY3IgT04KKyAgICAgICAgICAgIChjbC5vaWQ9ZGVzY3Iub2Jqb2lkIEFO RCBkZXNjci5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKKyAgICAg ICAgIFdIRVJFCisgICAgICAgICAgICBjbC5vaWQgPSB7eyB2aWQgfX06Ok9J RCBBTkQgcmVsa2luZCA9ICd2JworICAgICAgICApIGFjbCwKKyAgICAgICAg YWNsZXhwbG9kZShyZWxhY2wpIGQKKyAgICApIGQKK0xFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX3JvbGVzIGcgT04gKGQuZ3JhbnRvciA9IGcub2lkKQorTEVG VCBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgZ3QgT04gKGQuZ3JhbnRlZSA9 IGd0Lm9pZCkKK0dST1VQIEJZCisgICAgZy5yb2xuYW1lLAorICAgIGd0LnJv bG5hbWUKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9jcmVh dGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcv cHBhcy85LjFfcGx1cy9zcWwvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4xOTEwOTBkCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85 LjFfcGx1cy9zcWwvY3JlYXRlLnNxbApAQCAtMCwwICsxLDI1IEBACit7Iz09 PT09PT09PT09PT09PT09PT09PT09PT09PT1DcmVhdGUgbmV3IHZpZXc9PT09 PT09PT09PT09PT09PT09PT09PT09I30KK3slIGlmIGRpc3BsYXlfY29tbWVu dHMgJX0KKy0tIFZpZXc6IHt7IGNvbm58cXRJZGVudChkYXRhLnNjaGVtYSwg ZGF0YS5uYW1lKSB9fQorCistLSBEUk9QIFZJRVcge3sgY29ubnxxdElkZW50 KGRhdGEuc2NoZW1hLCBkYXRhLm5hbWUpIH19OworCit7JSBlbmRpZiAlfQor eyUgaWYgZGF0YS5uYW1lIGFuZCBkYXRhLnNjaGVtYSBhbmQgZGF0YS5kZWZp bml0aW9uICV9CitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHt7IGNvbm58cXRJ ZGVudChkYXRhLnNjaGVtYSwgZGF0YS5uYW1lKSB9fQoreyUgaWYgKChkYXRh LmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24ubG93ZXIoKSAh PSAnbm8nKSBvciBkYXRhLnNlY3VyaXR5X2JhcnJpZXIpICV9CitXSVRIICh7 JSBpZiBkYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24u bG93ZXIoKSAhPSAnbm8nICV9CitjaGVja19vcHRpb249e3sgZGF0YS5jaGVj a19vcHRpb24gfX17JSBlbmRpZiAlfXt7ICcsICcgaWYgZGF0YS5jaGVja19v cHRpb24gYW5kCitkYXRhLmNoZWNrX29wdGlvbi5sb3dlcigpICE9ICdubycg YW5kIGRhdGEuc2VjdXJpdHlfYmFycmllciB9fQoreyUgaWYgZGF0YS5zZWN1 cml0eV9iYXJyaWVyICV9IHNlY3VyaXR5X2JhcnJpZXI9e3sgZGF0YS5zZWN1 cml0eV9iYXJyaWVyfGxvd2VyIH19eyUgZW5kaWYgJX0peyUgZW5kaWYgJX0g QVMKK3t7IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAoJzsnKSB9fTsKK3slIGlm IGRhdGEub3duZXIgYW5kIGRhdGEubV92aWV3IGlzIHVuZGVmaW5lZCAlfQor CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEubmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBjb25ufHF0SWRlbnQoZGF0 YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5jb21tZW50 ICV9CitDT01NRU5UIE9OIFZJRVcge3sgY29ubnxxdElkZW50KGRhdGEuc2No ZW1hLCBkYXRhLm5hbWUpIH19CisgICAgSVMge3sgZGF0YS5jb21tZW50fHF0 TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBh cy85LjFfcGx1cy9zcWwvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3Zp ZXdzL3RlbXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL2RlbGV0ZS5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUwYmVl YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3Rl bXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL2RlbGV0ZS5zcWwKQEAg LTAsMCArMSwxMyBAQAoreyMgPT09PT09PT09PT09PT09PT09PT09PSBEcm9w L0Nhc2NhZGUgdmlldyBieSBuYW1lID09PT09PT09PT09PT09PT09PT09PSAj fQoreyUgaWYgdmlkICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMgbmFt ZSwKKyAgICBuc3AubnNwbmFtZQorRlJPTQorICAgIHBnX2NsYXNzIGMKK0xF RlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIGMucmVsbmFtZXNwYWNlID0g bnNwLm9pZAorV0hFUkUKKyAgICBjLnJlbGZpbGVub2RlID0ge3sgdmlkIH19 OworeyUgZWxpZiAobmFtZSBhbmQgbnNwbmFtZSkgJX0KK0RST1AgVklFVyB7 e25zcG5hbWV9fS57eyBjb25ufHF0SWRlbnQobmFtZSkgfX0geyUgaWYgY2Fz Y2FkZSAlfSBDQVNDQURFIHslIGVuZGlmICV9Cit7JSBlbmRpZiAlfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3MvdGVtcGxhdGVzL3ZpZXcv cHBhcy85LjFfcGx1cy9zcWwvZ3JhbnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dmlld3MvdGVtcGxhdGVzL3ZpZXcvcHBhcy85LjFfcGx1cy9zcWwvZ3JhbnQu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOTRl Y2MKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90 ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9ncmFudC5zcWwKQEAg LTAsMCArMSwxNCBAQAoreyMgPT09PT0gR3JhbnQgUGVybWlzc2lvbnMgdG8g VXNlciBSb2xlIG9uIFZpZXdzL1RhYmxlcyA9PT09PSAjfQoreyUgaW1wb3J0 ICdtYWNyb3Mvc2VjdXJpdHkubWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUg aW1wb3J0ICdtYWNyb3Mvc2NoZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQ UklWSUxFR0UgJX0KK3sjID09PT09IFdlIHdpbGwgZ2VuZXJhdGUgU2VjdXJp dHkgTGFiZWwgU1FMIHVzaW5nIG1hY3JvID09PT09ICN9Cit7JSBpZiBkYXRh LnNlY2xhYmVscyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0K K3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCBy LnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGZvciBw cml2IGluIGRhdGEuZGF0YWNsICV9Cit7eyBQUklWSUxFR0UuU0VUKGNvbm4s ICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBwcml2LndpdGhv dXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwgZGF0YS5zY2hlbWEpIH19Cit7 JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3Nx bC9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBs YXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL3Byb3BlcnRpZXMuc3FsCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZjEyNTIKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0 ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC9wcm9wZXJ0aWVzLnNxbApAQCAt MCwwICsxLDc2IEBACit7JSBpZiAodmlkIGFuZCBkYXRsYXN0c3lzb2lkKSBv ciBzY2lkICV9CitTRUxFQ1QKKyAgICBjLm9pZCwKKyAgICBjLnhtaW4sCisg ICAgYy5yZWxraW5kLAorICAgIGRlc2NyaXB0aW9uLAorICAgIChDQVNFIFdI RU4gbGVuZ3RoKHNwYy5zcGNuYW1lKSA+IDAgVEhFTiBzcGMuc3BjbmFtZSBF TFNFICdwZ19kZWZhdWx0JyBFTkQpIGFzIHNwY25hbWUsCisgICAgYy5yZWxu YW1lIEFTIG5hbWUsCisgICAgYy5yZWx0YWJsZXNwYWNlIEFTIHNwY29pZCwK KyAgICBuc3AubnNwbmFtZSBBUyBzY2hlbWEsCisgICAgYy5yZWxpc3BvcHVs YXRlZCBBUyBpc3BvcHVsYXRlZCwKKyAgICBwZ19nZXRfdXNlcmJ5aWQoYy5y ZWxvd25lcikgQVMgb3duZXIsCisgICAgYXJyYXlfdG9fc3RyaW5nKGMucmVs YWNsOjp0ZXh0W10sICcsICcpIEFTIGFjbCwKKyAgICBwZ19nZXRfdmlld2Rl ZihjLm9pZCwgdHJ1ZSkgQVMgZGVmaW5pdGlvbiwKKyAgICB7IyA9PT09PSBD aGVja3MgaWYgaXQgaXMgc3lzdGVtIHZpZXcgPT09PT0gI30KKyAgICB7JSBp ZiB2aWQgYW5kIGRhdGxhc3RzeXNvaWQgJX0KKyAgICBDQVNFIFdIRU4ge3t2 aWR9fSA8PSB7e2RhdGxhc3RzeXNvaWR9fSBUSEVOIFRydWUgRUxTRSBGYWxz ZSBFTkQgQVMgc3lzdGVtX3ZpZXcsCisgICAgeyUgZW5kaWYgJX0KKyhTRUxF Q1QKKyAgICBhcnJheV9hZ2cobGFiZWwpCitGUk9NCisgICAgcGdfc2VjbGFi ZWxzIHNsMQorV0hFUkUKKyAgICBzbDEub2Jqb2lkPWMub2lkIEFORCBzbDEu b2Jqc3ViaWQ9MCkgQVMgbGFiZWxzLAorKFNFTEVDVAorICAgIGFycmF5X2Fn Zyhwcm92aWRlcikKK0ZST00KKyAgICBwZ19zZWNsYWJlbHMgc2wyCitXSEVS RQorICAgIHNsMi5vYmpvaWQ9Yy5vaWQgQU5EIHNsMi5vYmpzdWJpZD0wKSBB UyBwcm92aWRlcnMsCisgICAgc3Vic3RyaW5nKGFycmF5X3RvX3N0cmluZyhj LnJlbG9wdGlvbnMsICcsJykKKyAgICAgICAgRlJPTSAnY2hlY2tfb3B0aW9u PShbYS16XSopJykgQVMgY2hlY2tfb3B0aW9uLAorICAgIHN1YnN0cmluZyhh cnJheV90b19zdHJpbmcoYy5yZWxvcHRpb25zLCAnLCcpCisgICAgICAgIEZS T00gJ3NlY3VyaXR5X2JhcnJpZXI9KFthLXp8MC05XSopJykgQVMgc2VjdXJp dHlfYmFycmllcgorRlJPTSBwZ19jbGFzcyBjCitMRUZUIE9VVEVSIEpPSU4g cGdfbmFtZXNwYWNlIG5zcCBvbiBuc3Aub2lkID0gYy5yZWxuYW1lc3BhY2UK K0xFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBvbiBzcGMub2lk PWMucmVsdGFibGVzcGFjZQorTEVGVCBPVVRFUiBKT0lOIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBhbmQgZGVzLm9ianN1Ymlk PTAgQU5EIGRlcy5jbGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK0xF RlQgT1VURVIgSk9JTiBwZ19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9IGMucmVs dG9hc3RyZWxpZAorICAgIFdIRVJFICgoYy5yZWxoYXNydWxlcyBBTkQgKEVY SVNUUyAoCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgci5ydWxlbmFt ZQorICAgICAgICBGUk9NCisgICAgICAgICAgICBwZ19yZXdyaXRlIHIKKyAg ICAgICAgV0hFUkUKKyAgICAgICAgICAgICgoci5ldl9jbGFzcyA9IGMub2lk KQorICAgICAgICAgICAgICAgIEFORCAoYnBjaGFyKHIuZXZfdHlwZSkgPSAn MSc6OmJwY2hhcikpICkpKQorICAgICAgICAgICAgQU5EIChjLnJlbGtpbmQg PSAndic6OmNoYXIpCisgICAgICAgICAgKQoreyUgaWYgKHZpZCBhbmQgZGF0 bGFzdHN5c29pZCkgJX0KKyAgICBBTkQgYy5vaWQgPSB7e3ZpZH19OjpvaWQK K3slIGVsaWYgc2NpZCAlfQorICAgIEFORCBjLnJlbG5hbWVzcGFjZSA9IHt7 c2NpZH19OjpvaWQKK09SREVSIEJZCisgICAgYy5yZWxuYW1lCit7JSBlbmRp ZiAlfQorCit7JSBlbGlmIHR5cGUgPT0gJ3JvbGVzJyAlfQorU0VMRUNUCisg ICAgcHIucm9sbmFtZQorRlJPTQorICAgIHBnX3JvbGVzIHByCitXSEVSRQor ICAgIHByLnJvbGNhbmxvZ2luCitPUkRFUiBCWQorICAgIHByLnJvbG5hbWUK KworeyUgZWxpZiB0eXBlID09ICdzY2hlbWFzJyAlfQorU0VMRUNUCisgICAg bnNwLm5zcG5hbWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitXSEVS RQorICAgIChuc3AubnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxfJScKKyAgICAg ICAgQU5EIG5zcC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnKQor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdz L3RlbXBsYXRlcy92aWV3L3BwYXMvOS4xX3BsdXMvc3FsL3VwZGF0ZS5zcWwg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzku MV9wbHVzL3NxbC91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjU2MTgzZmQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVz L3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsODIgQEAKK3sjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT0gVXBkYXRlIFZpZXcgPT09PT09PT09PT09 PT09PT09PT09PT09PSAjfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2VjdXJpdHku bWFjcm9zJyBhcyBTRUNMQUJMRSAlfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2No ZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlm IGRhdGEgJX0KK3slIHNldCB2aWV3X25hbWUgPSBkYXRhLm5hbWUgaWYgZGF0 YS5uYW1lIGVsc2Ugb19kYXRhLm5hbWUgJX0KK3slIHNldCB2aWV3X3NjaGVt YSA9IGRhdGEuc2NoZW1hIGlmIGRhdGEuc2NoZW1hIGVsc2Ugb19kYXRhLnNj aGVtYSAlfQoreyUgc2V0IGRlZiA9IGRhdGEuZGVmaW5pdGlvbi5yc3RyaXAo JzsnKSBpZiBkYXRhLmRlZmluaXRpb24gJX0KK3slIGlmIGRhdGEubmFtZSBh bmQgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9CitBTFRFUiBWSUVXIHt7 IGNvbm58cXRJZGVudChvX2RhdGEuc2NoZW1hLCBvX2RhdGEubmFtZSkgfX0K KyAgICBSRU5BTUUgVE8ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07 Cit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YS5zY2hlbWEgYW5kIGRhdGEuc2No ZW1hICE9IG9fZGF0YS5zY2hlbWEgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxx dElkZW50KG9fZGF0YS5zY2hlbWEsIHZpZXdfbmFtZSApIH19CisgICAgU0VU IFNDSEVNQSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19OworeyUg ZW5kaWYgJX0KK3slIGlmIGRhdGEub3duZXIgYW5kIGRhdGEub3duZXIgIT0g b19kYXRhLm93bmVyICV9CitBTFRFUiBUQUJMRSB7eyBjb25ufHF0SWRlbnQo dmlld19zY2hlbWEsIHZpZXdfbmFtZSkgfX0KKyAgICBPV05FUiBUTyB7eyBj b25ufHF0SWRlbnQoZGF0YS5vd25lcikgfX07Cit7JSBlbmRpZiAlfQoreyUg aWYgZGVmIGFuZCBkZWYgIT0gb19kYXRhLmRlZmluaXRpb24ucnN0cmlwKCc7 JykgJX0KK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcge3sgY29ubnxxdElkZW50 KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19Cit7JSBpZiAoZGF0YS5jaGVj a19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9IG9fZGF0YS5jaGVj a19vcHRpb24pCisgICAgb3IgKGRhdGEuc2VjdXJpdHlfYmFycmllciBhbmQg ZGF0YS5zZWN1cml0eV9iYXJyaWVyICE9IG9fZGF0YS5zZWN1cml0eV9iYXJy aWVyKSAlfQorICAgIFdJVEggKHslIGlmIChkYXRhLmNoZWNrX29wdGlvbiBh bmQgZGF0YS5jaGVja19vcHRpb24gIT0gJ25vJykgJX1jaGVja19vcHRpb249 e3sgZGF0YS5jaGVja19vcHRpb24gfX17JSBlbmRpZiAlfXt7JywgJyBpZiBk YXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19vcHRpb24gIT0gJ25v JyBhbmQgZGF0YS5zZWN1cml0eV9iYXJyaWVyIH19eyUgaWYgZGF0YS5zZWN1 cml0eV9iYXJyaWVyICV9c2VjdXJpdHlfYmFycmllcj17eyBkYXRhLnNlY3Vy aXR5X2JhcnJpZXJ8bG93ZXIgfX17JSBlbmRpZiAlfSkKK3slIGVuZGlmICV9 CisgICAgQVN7eyBkZWYgfX07Cit7JSBlbHNlICV9Cit7JSBpZiAoZGF0YS5z ZWN1cml0eV9iYXJyaWVyIGlzIGRlZmluZWQgYW5kIGRhdGEuc2VjdXJpdHlf YmFycmllcnxsb3dlciAhPSAgb19kYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93 ZXIpICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVt YSwgdmlld19uYW1lKSB9fQorICAgIFNFVCAoc2VjdXJpdHlfYmFycmllcj17 eyBkYXRhLnNlY3VyaXR5X2JhcnJpZXJ8bG93ZXIgfX0pOworeyUgZW5kaWYg JX0KK3slIGlmIChkYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19v cHRpb24gIT0gb19kYXRhLmNoZWNrX29wdGlvbiBhbmQgZGF0YS5jaGVja19v cHRpb24gIT0gJ25vJykgJX0KK0FMVEVSIFZJRVcge3sgY29ubnxxdElkZW50 KHZpZXdfc2NoZW1hLCB2aWV3X25hbWUpIH19CisgICAgU0VUIChjaGVja19v cHRpb249e3sgZGF0YS5jaGVja19vcHRpb24gfX0pOworeyUgZWxpZiAoZGF0 YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uICE9IG9fZGF0 YS5jaGVja19vcHRpb24gYW5kIGRhdGEuY2hlY2tfb3B0aW9uID09ICdubycp ICV9CitBTFRFUiBWSUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwg dmlld19uYW1lKSB9fSBSRVNFVCAoY2hlY2tfb3B0aW9uKTsKK3slIGVuZGlm ICV9Cit7JSBlbmRpZiAlfQorCit7JSBpZiBkYXRhLmNvbW1lbnQgYW5kIGRh dGEuY29tbWVudCAhPSBvX2RhdGEuY29tbWVudCAlfQorQ09NTUVOVCBPTiBW SUVXIHt7IGNvbm58cXRJZGVudCh2aWV3X3NjaGVtYSwgdmlld19uYW1lKSB9 fQorICAgIElTIHt7IGRhdGEuY29tbWVudHxxdExpdGVyYWwgfX07Cit7JSBl bmRpZiAlfQoreyMgVGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBjaGFu Z2UgcHJpdmlsZWdlcyAjfQoreyUgaWYgZGF0YS5kYXRhY2wgJX0KK3slIGlm ICdkZWxldGVkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS5kYXRhY2wuZGVsZXRlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxM KGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRh LnNjaGVtYSkgfX0KK3slIGVuZGZvciAlfQoreyUgZW5kaWYgJX0KK3slIGlm ICdjaGFuZ2VkJyBpbiBkYXRhLmRhdGFjbCAlfQoreyUgZm9yIHByaXYgaW4g ZGF0YS5kYXRhY2wuY2hhbmdlZCAlfQore3sgUFJJVklMRUdFLlVOU0VUQUxM KGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0YS5uYW1lLCBkYXRh LnNjaGVtYSkgfX0KK3t7IFBSSVZJTEVHRS5TRVQoY29ubiwgJ1RBQkxFJywg cHJpdi5ncmFudGVlLCBkYXRhLm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwg cHJpdi53aXRoX2dyYW50LCBkYXRhLnNjaGVtYSkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgJX0KK3slIGlmICdhZGRlZCcgaW4gZGF0YS5kYXRhY2wg JX0KK3slIGZvciBwcml2IGluIGRhdGEuZGF0YWNsLmFkZGVkICV9Cit7eyBQ UklWSUxFR0UuU0VUKGNvbm4sICdUQUJMRScsIHByaXYuZ3JhbnRlZSwgZGF0 YS5uYW1lLCBwcml2LndpdGhvdXRfZ3JhbnQsIHByaXYud2l0aF9ncmFudCwg ZGF0YS5zY2hlbWEpIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9Cit7 JSBlbmRpZiAlfQoreyMgVGhlIFNRTCBnZW5lcmF0ZWQgYmVsb3cgd2lsbCBj aGFuZ2UgU2VjdXJpdHkgTGFiZWwgI30KK3slIGlmIGRhdGEuc2VjbGFiZWxz IGlzIG5vdCBub25lIGFuZCBkYXRhLnNlY2xhYmVsc3xsZW5ndGggPiAwICV9 Cit7JSBzZXQgc2VjbGFiZWxzID0gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlm ICdkZWxldGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5kZWxldGVk fGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGluIHNlY2xhYmVscy5kZWxldGVk ICV9Cit7eyBTRUNMQUJMRS5EUk9QKGNvbm4sICdWSUVXJywgZGF0YS5uYW1l LCByLnByb3ZpZGVyKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQor eyUgaWYgJ2FkZGVkJyBpbiBzZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRl ZHxsZW5ndGggPiAwICV9Cit7JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQg JX0KK3t7IFNFQ0xBQkxFLkFQUExZKGNvbm4sICdWSUVXJywgZGF0YS5uYW1l LCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsKSB9fQoreyUgZW5kZm9y ICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNlY2xhYmVs cyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9y IHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KK3t7IFNFQ0xBQkxFLkFQUExZ KGNvbm4sICdWSUVXJywgZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3Vy aXR5X2xhYmVsKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUg ZW5kaWYgJX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9wcGFzLzkuMV9wbHVzL3NxbC92 aWV3X2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3RlbXBsYXRlcy92 aWV3L3BwYXMvOS4xX3BsdXMvc3FsL3ZpZXdfaWQuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMjc1OTQKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy90ZW1wbGF0ZXMvdmlldy9w cGFzLzkuMV9wbHVzL3NxbC92aWV3X2lkLnNxbApAQCAtMCwwICsxLDQgQEAK K3sjID09PT09IEJlbG93IHdpbGwgcHJvdmlkZSB2aWV3IGlkIGZvciBsYXN0 IGNyZWF0ZWQgdmlldyA9PT09PSAjfQoreyUgaWYgZGF0YSAlfQorU0VMRUNU IGMub2lkIEZST00gcGdfY2xhc3MgYyBXSEVSRSBjLnJlbG5hbWUgPSAne3sg ZGF0YS5uYW1lIH19JzsKK3slIGVuZGlmICV9Cg== --001a1146911076fbfb052eb937cf Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1146911076fbfb052eb937cf--