<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>129114</bug_id>
          
          <creation_ts>2014-02-20 12:25:34 -0800</creation_ts>
          <short_desc>jsc-cli needs a basic story for text IO</short_desc>
          <delta_ts>2014-02-28 10:34:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982936</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-20 12:25:34 -0800</bug_when>
    <thetext>A simple solution that would get us pretty far would be to offer an IO module that was a higher-level wrapper around file-descriptor-based open/read/write/close OS level APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983722</commentid>
    <comment_count>1</comment_count>
      <attachid>225008</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-23 10:12:42 -0800</bug_when>
    <thetext>Created attachment 225008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983729</commentid>
    <comment_count>2</comment_count>
      <attachid>225008</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-23 12:02:12 -0800</bug_when>
    <thetext>Comment on attachment 225008
Patch

Actually, this patch still has issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984768</commentid>
    <comment_count>3</comment_count>
      <attachid>225261</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-26 09:46:04 -0800</bug_when>
    <thetext>Created attachment 225261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985624</commentid>
    <comment_count>4</comment_count>
      <attachid>225261</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-28 10:23:37 -0800</bug_when>
    <thetext>Comment on attachment 225261
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=225261&amp;action=review

How does this io performance compare to other scripting environments - it should be as fast or faster.

r- due to buffer overflow

&gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:102
&gt; +        char* buffer = (char*)malloc(sizeof(char) * (bytes + 1));
&gt; +        size_t result = fread(buffer, sizeof(char), bytes, handle.stream);

Hello buffer overflow :)

&gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:106
&gt; +            setErrorWithErrno();
&gt; +            free(buffer);
&gt; +            return (JSValue *)nil;

Please just throw an error on an io error, don&apos;t mess around with separate errors

&gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:142
&gt; +            setErrorWithErrno();

again exception

&gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:145
&gt; +        return [[NSString alloc] initWithBytes:line length:length encoding:NSUTF8StringEncoding];

Will this copy the bytes?

&gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:151
&gt; +            setErrorWithErrno();

exception!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985626</commentid>
    <comment_count>5</comment_count>
      <attachid>225261</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-02-28 10:25:20 -0800</bug_when>
    <thetext>Comment on attachment 225261
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=225261&amp;action=review

&gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:150
&gt; +        int result = fclose(handle.stream);
&gt; +        if (result != 0)

can we clear the stream field here? I don&apos;t want any bogus reuse to occur</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985629</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 10:31:13 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 225261 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225261&amp;action=review
&gt; 
&gt; How does this io performance compare to other scripting environments - it should be as fast or faster.
It&apos;s relatively slow due to lots of copying across the API boundary. I&apos;m not sure we could avoid this without new API functionality.

&gt; 
&gt; &gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:106
&gt; &gt; +            setErrorWithErrno();
&gt; &gt; +            free(buffer);
&gt; &gt; +            return (JSValue *)nil;
&gt; 
&gt; Please just throw an error on an io error, don&apos;t mess around with separate errors
I&apos;m not sure what you mean by this. Why should you get the same error if you don&apos;t have permission to access the file as when the file doesn&apos;t exist? That seems like a pure usability regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985630</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 10:31:25 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 225261 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225261&amp;action=review
&gt; 
&gt; &gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:150
&gt; &gt; +        int result = fclose(handle.stream);
&gt; &gt; +        if (result != 0)
&gt; 
&gt; can we clear the stream field here? I don&apos;t want any bogus reuse to occur

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985633</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-02-28 10:34:36 -0800</bug_when>
    <thetext>
&gt; &gt; Tools/jsc-cli/jsc-cli/lib/IOModule.m:145
&gt; &gt; +        return [[NSString alloc] initWithBytes:line length:length encoding:NSUTF8StringEncoding];
&gt; 
&gt; Will this copy the bytes?
Yep. - initWithBytesNoCopy:length:encoding: is the version that doesn&apos;t copy the bytes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225008</attachid>
            <date>2014-02-23 10:12:42 -0800</date>
            <delta_ts>2014-02-26 09:45:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129114-20140223101239.patch</filename>
            <type>text/plain</type>
            <size>49590</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE2NDU1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTAyLTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAganNjLWNsaSBuZWVkcyBhIGJhc2ljIHN0b3J5IGZvciB0ZXh0IElP
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkxMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGltcGxlbWVudHMgYSBzaW1wbGUgc29sdXRpb24gdGhhdCBnZXRzIHVzIHByZXR0eSBmYXIu
IEl0IGludHJvZHVjZXMgdGhlIElPIG1vZHVsZSAKKyAgICAgICAgdGhhdCBpcyBhIGhpZ2hlci1s
ZXZlbCB3cmFwcGVyIGFyb3VuZCBmaWxlLWRlc2NyaXB0b3ItYmFzZWQgb3Blbi9yZWFkL3dyaXRl
L2Nsb3NlIE9TIGxldmVsIEFQSXMuCisKKyAgICAgICAgKiBqc2MtY2xpL2pzYy1jbGkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBqc2MtY2xpL2pzYy1jbGkvSlNNb2R1bGUu
bToKKyAgICAgICAgKGNvcmVNb2R1bGVzKToKKyAgICAgICAgKGNsYXNzRm9yTW9kdWxlKToKKyAg
ICAgICAgKiBqc2MtY2xpL2pzYy1jbGkvbGliOiBBZGRlZC4KKyAgICAgICAgKiBqc2MtY2xpL2pz
Yy1jbGkvbGliL0lPTW9kdWxlLmg6IEFkZGVkLgorICAgICAgICAqIGpzYy1jbGkvanNjLWNsaS9s
aWIvSU9Nb2R1bGUubTogQWRkZWQuCisgICAgICAgIChzZXRFcnJvcldpdGhFcnJubyk6CisgICAg
ICAgICgtW0lPTW9kdWxlIHBsYXRmb3JtT2JqZWN0SW5Db250ZXh0Ol0pOgorICAgICAgICAqIGpz
Yy1jbGkvanNjLWNsaS9saWIvaW8uanM6IEFkZGVkLgorCiAyMDE0LTAyLTIzICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgW0FTYW5dIEFkZCBKU0M6OkRGRzo6
cHJlcGFyZU9TUkVudHJ5KCkgdG8gaWdub3JlIGxpc3QKSW5kZXg6IFRvb2xzL2pzYy1jbGkvanNj
LWNsaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL2pzYy1j
bGkvanNjLWNsaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjQ1NTYpCisr
KyBUb29scy9qc2MtY2xpL2pzYy1jbGkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzNDEgKzEsMzQ3IEBACiAvLyAhJCpVVEY4KiQhCiB7Ci0gICBhcmNoaXZl
VmVyc2lvbiA9IDE7Ci0gICBjbGFzc2VzID0gewotICAgfTsKLSAgIG9iamVjdFZlcnNpb24gPSA0
NjsKLSAgIG9iamVjdHMgPSB7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJ
fTsKKwlvYmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KLSAgICAgICBDMjQ2NTkwNTE4OTAyQUNFMDAyOTA5MkUgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjQ2NTkwNDE4OTAyQUNFMDAyOTA5MkUgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgKi87IH07Ci0gICAgICAgQzI0NjU5MDgxODkwMkFDRTAwMjkwOTJFIC8qIG1haW4ubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTA3MTg5MDJB
Q0UwMDI5MDkyRSAvKiBtYWluLm0gKi87IH07Ci0gICAgICAgQzI0NjU5MTQxODkwMkI5MTAwMjkw
OTJFIC8qIENMSUluc3RhbmNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjQ2NTkxMzE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSAqLzsg
fTsKLSAgICAgICBDMjQ2NTkxNzE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1bGUubSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTE2MTg5MDJDNDIw
MDI5MDkyRSAvKiBKU01vZHVsZS5tICovOyB9OwotICAgICAgIEMyNDY1OTFBMTg5MDJDQ0MwMDI5
MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyNDY1OTE5MTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJl
YWQubSAqLzsgfTsKLSAgICAgICBDMjQ2NTkxRDE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRo
cmVhZC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0
NjU5MUMxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQubSAqLzsgfTsKLSAgICAgICBD
MjQ2NTkyMDE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AubSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTFGMTg5MDJFMTUwMDI5
MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tICovOyB9OwotICAgICAgIEMyNDY1OTIzMTg5MDJF
QTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MjIxODkwMkVBNDAwMjkwOTJFIC8qIFNjcmlw
dElucHV0U291cmNlLm0gKi87IH07Ci0gICAgICAgQzI5NjYyMTExOEFERjU2MDAwNzUyOTIyIC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTY2MjEwMThBREY1NjAwMDc1MjkyMiAvKiBKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsgKi87IH07CisJCUMyM0JEMTcwMThCMTJDOUEwMDYzQkI5OCAvKiBpby5q
cyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyM0JEMTZG
MThCMTJDOUEwMDYzQkI5OCAvKiBpby5qcyAqLzsgfTsKKwkJQzIzQkQxNzMxOEIxMzE4MDAwNjNC
Qjk4IC8qIElPTW9kdWxlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjNCRDE3MjE4QjEzMTgwMDA2M0JCOTggLyogSU9Nb2R1bGUubSAqLzsgfTsKKwkJ
QzIzQkQxNzQxOEIxNDEzNTAwNjNCQjk4IC8qIGlvLmpzIGluIENvcHkgTGliICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyM0JEMTZGMThCMTJDOUEwMDYzQkI5OCAvKiBpby5q
cyAqLzsgfTsKKwkJQzI0NjU5MDUxODkwMkFDRTAwMjkwOTJFIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0
NjU5MDQxODkwMkFDRTAwMjkwOTJFIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OworCQlD
MjQ2NTkwODE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MDcxODkwMkFDRTAwMjkwOTJFIC8qIG1haW4u
bSAqLzsgfTsKKwkJQzI0NjU5MTQxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLm0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkxMzE4OTAy
QjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSAqLzsgfTsKKwkJQzI0NjU5MTcxODkwMkM0MjAw
MjkwOTJFIC8qIEpTTW9kdWxlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMjQ2NTkxNjE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1bGUubSAqLzsgfTsK
KwkJQzI0NjU5MUExODkwMkNDQzAwMjkwOTJFIC8qIEpTUnVuTG9vcFRocmVhZC5tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MTkxODkwMkNDQzAw
MjkwOTJFIC8qIEpTUnVuTG9vcFRocmVhZC5tICovOyB9OworCQlDMjQ2NTkxRDE4OTAyRDEwMDAy
OTA5MkUgLyogUnVuTG9vcFRocmVhZC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzI0NjU5MUMxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQu
bSAqLzsgfTsKKwkJQzI0NjU5MjAxODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFsUHJpbnRMb29w
Lm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkx
RjE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AubSAqLzsgfTsKKwkJQzI0NjU5
MjMxODkwMkVBNDAwMjkwOTJFIC8qIFNjcmlwdElucHV0U291cmNlLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkyMjE4OTAyRUE0MDAyOTA5MkUg
LyogU2NyaXB0SW5wdXRTb3VyY2UubSAqLzsgfTsKKwkJQzI5NjYyMTExOEFERjU2MDAwNzUyOTIy
IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyOTY2MjEwMThBREY1NjAwMDc1MjkyMiAvKiBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0gICAgICAgQzI0
NjEwNTQxOEFDNDQ3MjAwOUY3NUI1IC8qIENvcHkgVGVzdHMgKi8gPSB7Ci0gICAgICAgICAgIGlz
YSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7Ci0gICAgICAgICAgIGJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7Ci0gICAgICAgICAgIGRzdFBhdGggPSB0ZXN0czsKLSAgICAgICAgICAgZHN0
U3ViZm9sZGVyU3BlYyA9IDE2OwotICAgICAgICAgICBmaWxlcyA9ICgKLSAgICAgICAgICAgKTsK
LSAgICAgICAgICAgbmFtZSA9ICJDb3B5IFRlc3RzIjsKLSAgICAgICAgICAgcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0gICAgICAgfTsKLSAgICAgICBDMjQ2NThGRjE4
OTAyQUNFMDAyOTA5MkUgLyogQ29weSBMaWIgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFBCWENv
cHlGaWxlc0J1aWxkUGhhc2U7Ci0gICAgICAgICAgIGJ1aWxkQWN0aW9uTWFzayA9IDEyOwotICAg
ICAgICAgICBkc3RQYXRoID0gbGliOwotICAgICAgICAgICBkc3RTdWJmb2xkZXJTcGVjID0gMTY7
Ci0gICAgICAgICAgIGZpbGVzID0gKAotICAgICAgICAgICApOwotICAgICAgICAgICBuYW1lID0g
IkNvcHkgTGliIjsKLSAgICAgICAgICAgcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7Ci0gICAgICAgfTsKKwkJQzI0NjEwNTQxOEFDNDQ3MjAwOUY3NUI1IC8qIENvcHkgVGVz
dHMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSB0ZXN0czsKKwkJCWRzdFN1YmZvbGRl
clNwZWMgPSAxNjsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBUZXN0cyI7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQzI0
NjU4RkYxODkwMkFDRTAwMjkwOTJFIC8qIENvcHkgTGliICovID0geworCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOworCQkJZHN0UGF0aCA9
IGxpYjsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAxNjsKKwkJCWZpbGVzID0gKAorCQkJCUMyM0JE
MTc0MThCMTQxMzUwMDYzQkI5OCAvKiBpby5qcyBpbiBDb3B5IExpYiAqLywKKwkJCSk7CisJCQlu
YW1lID0gIkNvcHkgTGliIjsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQl9OwogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLSAgICAgICBDMjQ2NTkwMTE4OTAy
QUNFMDAyOTA5MkUgLyoganNjLWNsaSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5k
ZXggPSAwOyBwYXRoID0gImpzYy1jbGkiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwotICAgICAgIEMyNDY1OTA0MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdy
YXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSBTeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
U0RLUk9PVDsgfTsKLSAgICAgICBDMjQ2NTkwNzE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLm9iamM7IHBhdGggPSBtYWluLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAg
ICAgQzI0NjU5MTIxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENMSUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0gICAgICAgQzI0NjU5MTMxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IENMSUluc3RhbmNlLm07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgQzI0NjU5MTUxODkwMkM0MjAwMjkwOTJFIC8q
IEpTTW9kdWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgQzI0NjU5MTYxODkwMkM0MjAwMjkw
OTJFIC8qIEpTTW9kdWxlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IEpT
TW9kdWxlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgQzI0NjU5MTgxODkw
MkNDQzAwMjkwOTJFIC8qIEpTUnVuTG9vcFRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1J1bkxvb3BUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LSAgICAgICBDMjQ2NTkxOTE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5Mb29wVGhyZWFkLm0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IEpTUnVuTG9vcFRocmVhZC5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgIEMyNDY1OTFCMTg5MDJEMTAwMDI5MDkyRSAv
KiBSdW5Mb29wVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkxv
b3BUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBDMjQ2NTkxQzE4
OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lm9iamM7IHBhdGggPSBSdW5Mb29wVGhyZWFkLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0gICAgICAgQzI0NjU5MUUxODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFsUHJpbnRMb29wLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRFdmFsUHJpbnRMb29wLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgQzI0NjU5MUYxODkwMkUxNTAwMjkwOTJF
IC8qIFJlYWRFdmFsUHJpbnRMb29wLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0
aCA9IFJlYWRFdmFsUHJpbnRMb29wLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAg
ICAgQzI0NjU5MjExODkwMkVBNDAwMjkwOTJFIC8qIFNjcmlwdElucHV0U291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdElucHV0U291cmNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgQzI0NjU5MjIxODkwMkVBNDAwMjkwOTJFIC8qIFNj
cmlwdElucHV0U291cmNlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFNj
cmlwdElucHV0U291cmNlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0gICAgICAgQzI5
NjYyMTAxOEFERjU2MDAwNzUyOTIyIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3
b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vV2ViS2l0
QnVpbGQvRGVidWcvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMjNCRDE2RjE4QjEyQzlBMDA2M0JCOTggLyogaW8uanMgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBpby5qczsgcGF0aCA9ICJqc2MtY2xpL2xpYi9p
by5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyM0JEMTcxMThCMTMxODAwMDYz
QkI5OCAvKiBJT01vZHVsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJT01v
ZHVsZS5oOyBwYXRoID0gImpzYy1jbGkvbGliL0lPTW9kdWxlLmgiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMjNCRDE3MjE4QjEzMTgwMDA2M0JCOTggLyogSU9Nb2R1bGUubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBuYW1lID0gSU9Nb2R1bGUubTsgcGF0aCA9ICJqc2Mt
Y2xpL2xpYi9JT01vZHVsZS5tIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0NjU5
MDExODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9ICJqc2MtY2xpIjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJQzI0NjU5MDQxODkwMkFDRTAwMjkwOTJFIC8qIEZvdW5kYXRpb24uZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSBTREtST09UOyB9OworCQlDMjQ2NTkwNzE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lm9iamM7IHBhdGggPSBtYWluLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNDY1
OTEyMTg5MDJCOTEwMDI5MDkyRSAvKiBDTElJbnN0YW5jZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDTElJbnN0YW5jZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjQ2NTkxMzE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gQ0xJSW5zdGFuY2UubTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQzI0NjU5MTUxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUMyNDY1OTE2MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVsZS5tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBKU01vZHVsZS5tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMjQ2NTkxODE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5Mb29wVGhy
ZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUnVuTG9vcFRocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ2NTkxOTE4OTAyQ0NDMDAyOTA5MkUg
LyogSlNSdW5Mb29wVGhyZWFkLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9
IEpTUnVuTG9vcFRocmVhZC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ2NTkx
QjE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSdW5Mb29wVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMyNDY1OTFDMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFkLm0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFJ1bkxvb3BUaHJlYWQubTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQzI0NjU5MUUxODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFsUHJp
bnRMb29wLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRFdmFsUHJpbnRM
b29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNDY1OTFGMTg5MDJFMTUwMDI5
MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7
IHBhdGggPSBSZWFkRXZhbFByaW50TG9vcC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjQ2NTkyMTE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0SW5wdXRTb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0NjU5MjIxODkwMkVBNDAwMjkwOTJFIC8qIFNjcmlwdElu
cHV0U291cmNlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFNjcmlwdElu
cHV0U291cmNlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyOTY2MjEwMThBREY1
NjAwMDc1MjkyMiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgcGF0aCA9IC4uLy4uL1dlYktpdEJ1aWxkL0RlYnVn
L0phdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotICAgICAgIEMyNDY1OEZFMTg5MDJBQ0UwMDI5MDkyRSAv
KiBGcmFtZXdvcmtzICovID0gewotICAgICAgICAgICBpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKLSAgICAgICAgICAgYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLSAgICAgICAg
ICAgZmlsZXMgPSAoCi0gICAgICAgICAgICAgICBDMjk2NjIxMTE4QURGNTYwMDA3NTI5MjIgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0gICAgICAgICAgICAg
ICBDMjQ2NTkwNTE4OTAyQUNFMDAyOTA5MkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKLSAgICAgICAgICAgKTsKLSAgICAgICAgICAgcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0gICAgICAgfTsKKwkJQzI0NjU4RkUxODkwMkFDRTAwMjkw
OTJFIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlD
Mjk2NjIxMTE4QURGNTYwMDA3NTI5MjIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCisJCQkJQzI0NjU5MDUxODkwMkFDRTAwMjkwOTJFIC8qIEZvdW5kYXRpb24u
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0gICAgICAgQzI0
NjEwNEMxOEFDM0I0NTAwOUY3NUI1IC8qIHRlc3RzICovID0gewotICAgICAgICAgICBpc2EgPSBQ
QlhHcm91cDsKLSAgICAgICAgICAgY2hpbGRyZW4gPSAoCi0gICAgICAgICAgICk7Ci0gICAgICAg
ICAgIG5hbWUgPSB0ZXN0czsKLSAgICAgICAgICAgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLSAg
ICAgICB9OwotICAgICAgIEMyNDYxMDUwMThBQzQwRjEwMDlGNzVCNSAvKiBsaWIgKi8gPSB7Ci0g
ICAgICAgICAgIGlzYSA9IFBCWEdyb3VwOwotICAgICAgICAgICBjaGlsZHJlbiA9ICgKLSAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgbmFtZSA9IGxpYjsKLSAgICAgICAgICAgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLSAgICAgICB9OwotICAgICAgIEMyNDY1OEY4MTg5MDJBQ0UwMDI5MDkyRSA9
IHsKLSAgICAgICAgICAgaXNhID0gUEJYR3JvdXA7Ci0gICAgICAgICAgIGNoaWxkcmVuID0gKAot
ICAgICAgICAgICAgICAgQzI0NjEwNTAxOEFDNDBGMTAwOUY3NUI1IC8qIGxpYiAqLywKLSAgICAg
ICAgICAgICAgIEMyNDYxMDRDMThBQzNCNDUwMDlGNzVCNSAvKiB0ZXN0cyAqLywKLSAgICAgICAg
ICAgICAgIEMyNDY1OTA2MTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAotICAgICAgICAg
ICAgICAgQzI0NjU5MDMxODkwMkFDRTAwMjkwOTJFIC8qIEZyYW1ld29ya3MgKi8sCi0gICAgICAg
ICAgICAgICBDMjQ2NTkwMjE4OTAyQUNFMDAyOTA5MkUgLyogUHJvZHVjdHMgKi8sCi0gICAgICAg
ICAgICk7Ci0gICAgICAgICAgIHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0gICAgICAgfTsKLSAg
ICAgICBDMjQ2NTkwMjE4OTAyQUNFMDAyOTA5MkUgLyogUHJvZHVjdHMgKi8gPSB7Ci0gICAgICAg
ICAgIGlzYSA9IFBCWEdyb3VwOwotICAgICAgICAgICBjaGlsZHJlbiA9ICgKLSAgICAgICAgICAg
ICAgIEMyNDY1OTAxMTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAotICAgICAgICAgICAp
OwotICAgICAgICAgICBuYW1lID0gUHJvZHVjdHM7Ci0gICAgICAgICAgIHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0gICAgICAgfTsKLSAgICAgICBDMjQ2NTkwMzE4OTAyQUNFMDAyOTA5MkUgLyog
RnJhbWV3b3JrcyAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gUEJYR3JvdXA7Ci0gICAgICAgICAg
IGNoaWxkcmVuID0gKAotICAgICAgICAgICAgICAgQzI5NjYyMTAxOEFERjU2MDAwNzUyOTIyIC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTA0MTg5
MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLywKLSAgICAgICAgICAgKTsK
LSAgICAgICAgICAgbmFtZSA9IEZyYW1ld29ya3M7Ci0gICAgICAgICAgIHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7Ci0gICAgICAgfTsKLSAgICAgICBDMjQ2NTkwNjE4OTAyQUNFMDAyOTA5MkUgLyog
anNjLWNsaSAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gUEJYR3JvdXA7Ci0gICAgICAgICAgIGNo
aWxkcmVuID0gKAotICAgICAgICAgICAgICAgQzI0NjU5MDcxODkwMkFDRTAwMjkwOTJFIC8qIG1h
aW4ubSAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTEyMTg5MDJCOTEwMDI5MDkyRSAvKiBDTElJ
bnN0YW5jZS5oICovLAotICAgICAgICAgICAgICAgQzI0NjU5MTMxODkwMkI5MTAwMjkwOTJFIC8q
IENMSUluc3RhbmNlLm0gKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkxNTE4OTAyQzQyMDAyOTA5
MkUgLyogSlNNb2R1bGUuaCAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTE2MTg5MDJDNDIwMDI5
MDkyRSAvKiBKU01vZHVsZS5tICovLAotICAgICAgICAgICAgICAgQzI0NjU5MTgxODkwMkNDQzAw
MjkwOTJFIC8qIEpTUnVuTG9vcFRocmVhZC5oICovLAotICAgICAgICAgICAgICAgQzI0NjU5MTkx
ODkwMkNDQzAwMjkwOTJFIC8qIEpTUnVuTG9vcFRocmVhZC5tICovLAotICAgICAgICAgICAgICAg
QzI0NjU5MUIxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQuaCAqLywKLSAgICAgICAg
ICAgICAgIEMyNDY1OTFDMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFkLm0gKi8sCi0g
ICAgICAgICAgICAgICBDMjQ2NTkxRTE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExv
b3AuaCAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTFGMTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFk
RXZhbFByaW50TG9vcC5tICovLAotICAgICAgICAgICAgICAgQzI0NjU5MjExODkwMkVBNDAwMjkw
OTJFIC8qIFNjcmlwdElucHV0U291cmNlLmggKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkyMjE4
OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UubSAqLywKLSAgICAgICAgICAgKTsK
LSAgICAgICAgICAgcGF0aCA9ICJqc2MtY2xpIjsKLSAgICAgICAgICAgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKLSAgICAgICB9OworCQlDMjQ2MTA0QzE4QUMzQjQ1MDA5Rjc1QjUgLyogdGVzdHMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJKTsKKwkJCW5h
bWUgPSB0ZXN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyNDYxMDUw
MThBQzQwRjEwMDlGNzVCNSAvKiBsaWIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUMyM0JEMTZGMThCMTJDOUEwMDYzQkI5OCAvKiBpby5qcyAqLywKKwkJ
CQlDMjNCRDE3MTE4QjEzMTgwMDA2M0JCOTggLyogSU9Nb2R1bGUuaCAqLywKKwkJCQlDMjNCRDE3
MjE4QjEzMTgwMDA2M0JCOTggLyogSU9Nb2R1bGUubSAqLywKKwkJCSk7CisJCQluYW1lID0gbGli
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI0NjU4RjgxODkwMkFDRTAw
MjkwOTJFID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjQ2
MTA1MDE4QUM0MEYxMDA5Rjc1QjUgLyogbGliICovLAorCQkJCUMyNDYxMDRDMThBQzNCNDUwMDlG
NzVCNSAvKiB0ZXN0cyAqLywKKwkJCQlDMjQ2NTkwNjE4OTAyQUNFMDAyOTA5MkUgLyoganNjLWNs
aSAqLywKKwkJCQlDMjQ2NTkwMzE4OTAyQUNFMDAyOTA5MkUgLyogRnJhbWV3b3JrcyAqLywKKwkJ
CQlDMjQ2NTkwMjE4OTAyQUNFMDAyOTA5MkUgLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI0NjU5MDIxODkwMkFDRTAwMjkwOTJFIC8q
IFByb2R1Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlDMjQ2NTkwMTE4OTAyQUNFMDAyOTA5MkUgLyoganNjLWNsaSAqLywKKwkJCSk7CisJCQluYW1l
ID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMjQ2NTkw
MzE4OTAyQUNFMDAyOTA5MkUgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI5NjYyMTAxOEFERjU2MDAwNzUyOTIyIC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCQlDMjQ2NTkwNDE4OTAyQUNFMDAyOTA5MkUgLyog
Rm91bmRhdGlvbi5mcmFtZXdvcmsgKi8sCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDMjQ2NTkwNjE4OTAyQUNFMDAyOTA5
MkUgLyoganNjLWNsaSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJQzI0NjU5MDcxODkwMkFDRTAwMjkwOTJFIC8qIG1haW4ubSAqLywKKwkJCQlDMjQ2NTkx
MjE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UuaCAqLywKKwkJCQlDMjQ2NTkxMzE4OTAy
QjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSAqLywKKwkJCQlDMjQ2NTkxNTE4OTAyQzQyMDAy
OTA5MkUgLyogSlNNb2R1bGUuaCAqLywKKwkJCQlDMjQ2NTkxNjE4OTAyQzQyMDAyOTA5MkUgLyog
SlNNb2R1bGUubSAqLywKKwkJCQlDMjQ2NTkxODE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5Mb29w
VGhyZWFkLmggKi8sCisJCQkJQzI0NjU5MTkxODkwMkNDQzAwMjkwOTJFIC8qIEpTUnVuTG9vcFRo
cmVhZC5tICovLAorCQkJCUMyNDY1OTFCMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFk
LmggKi8sCisJCQkJQzI0NjU5MUMxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQubSAq
LywKKwkJCQlDMjQ2NTkxRTE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AuaCAq
LywKKwkJCQlDMjQ2NTkxRjE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AubSAq
LywKKwkJCQlDMjQ2NTkyMTE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UuaCAq
LywKKwkJCQlDMjQ2NTkyMjE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UubSAq
LywKKwkJCSk7CisJCQlwYXRoID0gImpzYy1jbGkiOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKIC8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCi0gICAgICAgQzI0NjU5MDAxODkwMkFDRTAwMjkwOTJFIC8qIGpz
Yy1jbGkgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKLSAgICAgICAg
ICAgYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEMyNDY1OTBGMTg5MDJBQ0UwMDI5MDkyRSAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAianNjLWNsaSIgKi87
Ci0gICAgICAgICAgIGJ1aWxkUGhhc2VzID0gKAotICAgICAgICAgICAgICAgQzI0NjU4RkQxODkw
MkFDRTAwMjkwOTJFIC8qIFNvdXJjZXMgKi8sCi0gICAgICAgICAgICAgICBDMjQ2NThGRTE4OTAy
QUNFMDAyOTA5MkUgLyogRnJhbWV3b3JrcyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OEZGMTg5
MDJBQ0UwMDI5MDkyRSAvKiBDb3B5IExpYiAqLywKLSAgICAgICAgICAgICAgIEMyNDYxMDU0MThB
QzQ0NzIwMDlGNzVCNSAvKiBDb3B5IFRlc3RzICovLAotICAgICAgICAgICApOwotICAgICAgICAg
ICBidWlsZFJ1bGVzID0gKAotICAgICAgICAgICApOwotICAgICAgICAgICBkZXBlbmRlbmNpZXMg
PSAoCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIG5hbWUgPSAianNjLWNsaSI7Ci0gICAgICAg
ICAgIHByb2R1Y3ROYW1lID0gImpzYy1jbGkiOwotICAgICAgICAgICBwcm9kdWN0UmVmZXJlbmNl
ID0gQzI0NjU5MDExODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi87Ci0gICAgICAgICAgIHBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7Ci0gICAgICAgfTsKKwkJ
QzI0NjU5MDAxODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8gPSB7CisJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQzI0NjU5MEYxODkwMkFD
RTAwMjkwOTJFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJqc2MtY2xpIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUMyNDY1OEZEMTg5MDJBQ0Uw
MDI5MDkyRSAvKiBTb3VyY2VzICovLAorCQkJCUMyNDY1OEZFMTg5MDJBQ0UwMDI5MDkyRSAvKiBG
cmFtZXdvcmtzICovLAorCQkJCUMyNDY1OEZGMTg5MDJBQ0UwMDI5MDkyRSAvKiBDb3B5IExpYiAq
LywKKwkJCQlDMjQ2MTA1NDE4QUM0NDcyMDA5Rjc1QjUgLyogQ29weSBUZXN0cyAqLywKKwkJCSk7
CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gImpzYy1jbGkiOworCQkJcHJvZHVjdE5hbWUgPSAianNjLWNsaSI7CisJCQlwcm9k
dWN0UmVmZXJlbmNlID0gQzI0NjU5MDExODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi87CisJ
CQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogLyog
RW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFByb2plY3Qgc2Vj
dGlvbiAqLwotICAgICAgIEMyNDY1OEY5MTg5MDJBQ0UwMDI5MDkyRSAvKiBQcm9qZWN0IG9iamVj
dCAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gUEJYUHJvamVjdDsKLSAgICAgICAgICAgYXR0cmli
dXRlcyA9IHsKLSAgICAgICAgICAgICAgIExhc3RVcGdyYWRlQ2hlY2sgPSAwNTAwOwotICAgICAg
ICAgICAgICAgT1JHQU5JWkFUSU9OTkFNRSA9ICJNYXJrIEhhaG5lbmJlcmciOwotICAgICAgICAg
ICB9OwotICAgICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQzI0NjU4RkMxODkwMkFD
RTAwMjkwOTJFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAianNj
LWNsaSIgKi87Ci0gICAgICAgICAgIGNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7
Ci0gICAgICAgICAgIGRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKLSAgICAgICAgICAgaGFz
U2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7Ci0gICAgICAgICAgIGtub3duUmVnaW9ucyA9ICgKLSAg
ICAgICAgICAgICAgIGVuLAotICAgICAgICAgICApOwotICAgICAgICAgICBtYWluR3JvdXAgPSBD
MjQ2NThGODE4OTAyQUNFMDAyOTA5MkU7Ci0gICAgICAgICAgIHByb2R1Y3RSZWZHcm91cCA9IEMy
NDY1OTAyMTg5MDJBQ0UwMDI5MDkyRSAvKiBQcm9kdWN0cyAqLzsKLSAgICAgICAgICAgcHJvamVj
dERpclBhdGggPSAiIjsKLSAgICAgICAgICAgcHJvamVjdFJvb3QgPSAiIjsKLSAgICAgICAgICAg
dGFyZ2V0cyA9ICgKLSAgICAgICAgICAgICAgIEMyNDY1OTAwMTg5MDJBQ0UwMDI5MDkyRSAvKiBq
c2MtY2xpICovLAotICAgICAgICAgICApOwotICAgICAgIH07CisJCUMyNDY1OEY5MTg5MDJBQ0Uw
MDI5MDkyRSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9IFBCWFByb2plY3Q7CisJ
CQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAwNTAwOworCQkJCU9SR0FO
SVpBVElPTk5BTUUgPSAiTWFyayBIYWhuZW5iZXJnIjsKKwkJCX07CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gQzI0NjU4RkMxODkwMkFDRTAwMjkwOTJFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAianNjLWNsaSIgKi87CisJCQljb21wYXRpYmlsaXR5VmVy
c2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJ
aGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJZW4s
CisJCQkpOworCQkJbWFpbkdyb3VwID0gQzI0NjU4RjgxODkwMkFDRTAwMjkwOTJFOworCQkJcHJv
ZHVjdFJlZkdyb3VwID0gQzI0NjU5MDIxODkwMkFDRTAwMjkwOTJFIC8qIFByb2R1Y3RzICovOwor
CQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRz
ID0gKAorCQkJCUMyNDY1OTAwMTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAorCQkJKTsK
KwkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotICAgICAgIEMyNDY1OEZEMTg5MDJBQ0UwMDI5MDkyRSAv
KiBTb3VyY2VzICovID0gewotICAgICAgICAgICBpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
LSAgICAgICAgICAgYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLSAgICAgICAgICAgZmls
ZXMgPSAoCi0gICAgICAgICAgICAgICBDMjQ2NTkxQTE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5M
b29wVGhyZWFkLm0gaW4gU291cmNlcyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTIwMTg5MDJF
MTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tIGluIFNvdXJjZXMgKi8sCi0gICAgICAg
ICAgICAgICBDMjQ2NTkyMzE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UubSBp
biBTb3VyY2VzICovLAotICAgICAgICAgICAgICAgQzI0NjU5MDgxODkwMkFDRTAwMjkwOTJFIC8q
IG1haW4ubSBpbiBTb3VyY2VzICovLAotICAgICAgICAgICAgICAgQzI0NjU5MTQxODkwMkI5MTAw
MjkwOTJFIC8qIENMSUluc3RhbmNlLm0gaW4gU291cmNlcyAqLywKLSAgICAgICAgICAgICAgIEMy
NDY1OTFEMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFkLm0gaW4gU291cmNlcyAqLywK
LSAgICAgICAgICAgICAgIEMyNDY1OTE3MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVsZS5tIGlu
IFNvdXJjZXMgKi8sCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIHJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotICAgICAgIH07CisJCUMyNDY1OEZEMTg5MDJBQ0UwMDI5
MDkyRSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQzIzQkQx
NzAxOEIxMkM5QTAwNjNCQjk4IC8qIGlvLmpzIGluIFNvdXJjZXMgKi8sCisJCQkJQzIzQkQxNzMx
OEIxMzE4MDAwNjNCQjk4IC8qIElPTW9kdWxlLm0gaW4gU291cmNlcyAqLywKKwkJCQlDMjQ2NTkx
QTE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5Mb29wVGhyZWFkLm0gaW4gU291cmNlcyAqLywKKwkJ
CQlDMjQ2NTkyMDE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AubSBpbiBTb3Vy
Y2VzICovLAorCQkJCUMyNDY1OTIzMTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJj
ZS5tIGluIFNvdXJjZXMgKi8sCisJCQkJQzI0NjU5MDgxODkwMkFDRTAwMjkwOTJFIC8qIG1haW4u
bSBpbiBTb3VyY2VzICovLAorCQkJCUMyNDY1OTE0MTg5MDJCOTEwMDI5MDkyRSAvKiBDTElJbnN0
YW5jZS5tIGluIFNvdXJjZXMgKi8sCisJCQkJQzI0NjU5MUQxODkwMkQxMDAwMjkwOTJFIC8qIFJ1
bkxvb3BUaHJlYWQubSBpbiBTb3VyY2VzICovLAorCQkJCUMyNDY1OTE3MTg5MDJDNDIwMDI5MDky
RSAvKiBKU01vZHVsZS5tIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
Ci0gICAgICAgQzI0NjU5MEQxODkwMkFDRTAwMjkwOTJFIC8qIERlYnVnICovID0gewotICAgICAg
ICAgICBpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLSAgICAgICAgICAgYnVpbGRTZXR0aW5n
cyA9IHsKLSAgICAgICAgICAgICAgIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwotICAg
ICAgICAgICAgICAgQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOwotICAg
ICAgICAgICAgICAgQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKLSAgICAgICAgICAgICAg
IENMQU5HX0VOQUJMRV9PQkpDX0FSQyA9IFlFUzsKLSAgICAgICAgICAgICAgIENMQU5HX1dBUk5f
Qk9PTF9DT05WRVJTSU9OID0gWUVTOwotICAgICAgICAgICAgICAgQ0xBTkdfV0FSTl9DT05TVEFO
VF9DT05WRVJTSU9OID0gWUVTOwotICAgICAgICAgICAgICAgQ0xBTkdfV0FSTl9ESVJFQ1RfT0JK
Q19JU0FfVVNBR0UgPSBZRVNfRVJST1I7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0VNUFRZ
X0JPRFkgPSBZRVM7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9
IFlFUzsKLSAgICAgICAgICAgICAgIENMQU5HX1dBUk5fSU5UX0NPTlZFUlNJT04gPSBZRVM7Ci0g
ICAgICAgICAgICAgICBDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKLSAg
ICAgICAgICAgICAgIENMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7Ci0g
ICAgICAgICAgICAgICBDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0gICAgICAgICAgICAgICBHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OwotICAgICAgICAgICAgICAgR0NDX0RZTkFNSUNf
Tk9fUElDID0gTk87Ci0gICAgICAgICAgICAgICBHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9
IFlFUzsKLSAgICAgICAgICAgICAgIEdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwotICAgICAg
ICAgICAgICAgR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKLSAgICAgICAgICAgICAg
ICAgICAiREVCVUc9MSIsCi0gICAgICAgICAgICAgICAgICAgIiQoaW5oZXJpdGVkKSIsCi0gICAg
ICAgICAgICAgICApOwotICAgICAgICAgICAgICAgR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4g
PSBOTzsKLSAgICAgICAgICAgICAgIEdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0g
WUVTOwotICAgICAgICAgICAgICAgR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJS
T1I7Ci0gICAgICAgICAgICAgICBHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwot
ICAgICAgICAgICAgICAgR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKLSAgICAg
ICAgICAgICAgIEdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKLSAgICAgICAgICAgICAg
IEdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLSAgICAgICAgICAgICAgIE1BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVCA9IDEwLjk7Ci0gICAgICAgICAgICAgICBPTkxZX0FDVElWRV9BUkNI
ID0gWUVTOwotICAgICAgICAgICAgICAgU0RLUk9PVCA9IG1hY29zeDsKLSAgICAgICAgICAgfTsK
LSAgICAgICAgICAgbmFtZSA9IERlYnVnOwotICAgICAgIH07Ci0gICAgICAgQzI0NjU5MEUxODkw
MkFDRTAwMjkwOTJFIC8qIFJlbGVhc2UgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwotICAgICAgICAgICBidWlsZFNldHRpbmdzID0gewotICAgICAgICAgICAg
ICAgQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87Ci0gICAgICAgICAgICAgICBDTEFOR19D
WFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysweCI7Ci0gICAgICAgICAgICAgICBDTEFOR19D
WFhfTElCUkFSWSA9ICJsaWJjKysiOwotICAgICAgICAgICAgICAgQ0xBTkdfRU5BQkxFX09CSkNf
QVJDID0gWUVTOwotICAgICAgICAgICAgICAgQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZ
RVM7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7
Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19F
UlJPUjsKLSAgICAgICAgICAgICAgIENMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKLSAgICAg
ICAgICAgICAgIENMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotICAgICAgICAgICAg
ICAgQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKLSAgICAgICAgICAgICAgIENMQU5H
X1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOwotICAgICAgICAgICAgICAgQ0xBTkdf
V0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKLSAgICAgICAgICAgICAgIENPUFlf
UEhBU0VfU1RSSVAgPSBZRVM7Ci0gICAgICAgICAgICAgICBERUJVR19JTkZPUk1BVElPTl9GT1JN
QVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLSAgICAgICAgICAgICAgIEVOQUJMRV9OU19BU1NFUlRJ
T05TID0gTk87Ci0gICAgICAgICAgICAgICBHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5
OwotICAgICAgICAgICAgICAgR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7Ci0gICAg
ICAgICAgICAgICBHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKLSAgICAg
ICAgICAgICAgIEdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTX0VSUk9SOwotICAgICAg
ICAgICAgICAgR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKLSAgICAgICAgICAg
ICAgIEdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7Ci0gICAgICAgICAgICAgICBH
Q0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7Ci0gICAgICAgICAgICAgICBHQ0NfV0FSTl9V
TlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0gICAgICAgICAgICAgICBNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC45OwotICAgICAgICAgICAgICAgU0RLUk9PVCA9IG1hY29zeDsKLSAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgbmFtZSA9IFJlbGVhc2U7Ci0gICAgICAgfTsKLSAgICAgICBDMjQ2
NTkxMDE4OTAyQUNFMDAyOTA5MkUgLyogRGVidWcgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwotICAgICAgICAgICBidWlsZFNldHRpbmdzID0gewotICAgICAg
ICAgICAgICAgQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gWUVTOwotICAgICAgICAgICAgICAg
REVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7Ci0gICAgICAgICAg
ICAgICBGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAotICAgICAgICAgICAgICAgICAgICIkKGlu
aGVyaXRlZCkiLAotICAgICAgICAgICAgICAgICAgICIvVm9sdW1lcy9EYXRhL1dlYktpdC1zdm4t
MDEvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9EZWJ1ZyIsCi0gICAgICAgICAgICAgICApOwotICAg
ICAgICAgICAgICAgR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKLSAgICAgICAg
ICAgICAgIEdDQ19QUkVGSVhfSEVBREVSID0gIiI7Ci0gICAgICAgICAgICAgICBMRF9SVU5QQVRI
X1NFQVJDSF9QQVRIUyA9ICJcIkBsb2FkZXJfcGF0aC8uXCIiOwotICAgICAgICAgICAgICAgTElO
S0VSX0RJU1BMQVlTX01BTkdMRURfTkFNRVMgPSBZRVM7Ci0gICAgICAgICAgICAgICBPVEhFUl9D
RkxBR1MgPSAoCi0gICAgICAgICAgICAgICAgICAgIi1pZnJhbWV3b3JrIiwKLSAgICAgICAgICAg
ICAgICAgICAiJChTREtST09UKSQoU1lTVEVNX0xJQlJBUllfRElSKS9GcmFtZXdvcmtzLyIsCi0g
ICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgT1RIRVJfTERGTEFHUyA9ICItbGVkaXQi
OwotICAgICAgICAgICAgICAgUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLSAgICAg
ICAgICAgICAgIFNES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7Ci0gICAgICAgICAgIH07Ci0gICAg
ICAgICAgIG5hbWUgPSBEZWJ1ZzsKLSAgICAgICB9OwotICAgICAgIEMyNDY1OTExMTg5MDJBQ0Uw
MDI5MDkyRSAvKiBSZWxlYXNlICovID0gewotICAgICAgICAgICBpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKLSAgICAgICAgICAgYnVpbGRTZXR0aW5ncyA9IHsKLSAgICAgICAgICAgICAgIEFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IFlFUzsKLSAgICAgICAgICAgICAgIERFQlVHX0lORk9S
TUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwotICAgICAgICAgICAgICAgRlJBTUVX
T1JLX1NFQVJDSF9QQVRIUyA9ICgKLSAgICAgICAgICAgICAgICAgICAiJChpbmhlcml0ZWQpIiwK
LSAgICAgICAgICAgICAgICAgICAiL1ZvbHVtZXMvRGF0YS9XZWJLaXQtc3ZuLTAxL09wZW5Tb3Vy
Y2UvV2ViS2l0QnVpbGQvRGVidWciLAotICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAg
IEdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7Ci0gICAgICAgICAgICAgICBHQ0Nf
UFJFRklYX0hFQURFUiA9ICIiOwotICAgICAgICAgICAgICAgTERfUlVOUEFUSF9TRUFSQ0hfUEFU
SFMgPSAiXCJAbG9hZGVyX3BhdGgvLlwiIjsKLSAgICAgICAgICAgICAgIExJTktFUl9ESVNQTEFZ
U19NQU5HTEVEX05BTUVTID0gWUVTOwotICAgICAgICAgICAgICAgT1RIRVJfQ0ZMQUdTID0gKAot
ICAgICAgICAgICAgICAgICAgICItaWZyYW1ld29yayIsCi0gICAgICAgICAgICAgICAgICAgIiQo
U0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvRnJhbWV3b3Jrcy8iLAotICAgICAgICAgICAg
ICAgKTsKLSAgICAgICAgICAgICAgIE9USEVSX0xERkxBR1MgPSAiLWxlZGl0IjsKLSAgICAgICAg
ICAgICAgIFBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7Ci0gICAgICAgICAgICAgICBT
REtST09UID0gbWFjb3N4LmludGVybmFsOwotICAgICAgICAgICB9OwotICAgICAgICAgICBuYW1l
ID0gUmVsZWFzZTsKLSAgICAgICB9OworCQlDMjQ2NTkwRDE4OTAyQUNFMDAyOTA5MkUgLyogRGVi
dWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQ1hY
X0xBTkdVQUdFX1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0g
ImxpYmMrKyI7CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fQk9PTF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVS
U0lPTiA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19F
UlJPUjsKKwkJCQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9F
TlVNX0NPTlZFUlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFO
R19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19E
WU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVT
OworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1Jf
REVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJ
CQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVS
Tl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0g
WUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjk7CisJCQkJT05MWV9BQ1RJ
VkVfQVJDSCA9IFlFUzsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJQzI0NjU5MEUxODkwMkFDRTAwMjkwOTJFIC8qIFJlbGVhc2UgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdF
X1NUQU5EQVJEID0gImdudSsrMHgiOworCQkJCUNMQU5HX0NYWF9MSUJSQVJZID0gImxpYmMrKyI7
CisJCQkJQ0xBTkdfRU5BQkxFX09CSkNfQVJDID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQk9PTF9D
T05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlF
UzsKKwkJCQlDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlFU19FUlJPUjsKKwkJ
CQlDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9FTlVNX0NPTlZF
UlNJT04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlD
TEFOR19XQVJOX09CSkNfUk9PVF9DTEFTUyA9IFlFU19FUlJPUjsKKwkJCQlDTEFOR19XQVJOX19E
VVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7
CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJ
RU5BQkxFX05TX0FTU0VSVElPTlMgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JF
VFVSTl9UWVBFID0gWUVTX0VSUk9SOworCQkJCUdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1Ig
PSBZRVM7CisJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxF
ID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjk7CisJCQkJU0RLUk9P
VCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJQzI0NjU5MTAx
ODkwMkFDRTAwMjkwOTJFIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gIiQoaW5oZXJpdGVkKSI7CisJCQkJR0ND
X1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKKwkJCQlHQ0NfUFJFRklYX0hFQURFUiA9
ICIiOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIlwiQGxvYWRlcl9wYXRoLy5cIiI7
CisJCQkJTElOS0VSX0RJU1BMQVlTX01BTkdMRURfTkFNRVMgPSBZRVM7CisJCQkJT1RIRVJfQ0ZM
QUdTID0gKAorCQkJCQkiLWlmcmFtZXdvcmsiLAorCQkJCQkiJChTREtST09UKSQoU1lTVEVNX0xJ
QlJBUllfRElSKS9GcmFtZXdvcmtzLyIsCisJCQkJKTsKKwkJCQlPVEhFUl9MREZMQUdTID0gIi1s
ZWRpdCI7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4LmludGVybmFsOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQzI0
NjU5MTExODkwMkFDRTAwMjkwOTJFIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13
aXRoLWRzeW0iOworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAiJChpbmhlcml0ZWQpIjsK
KwkJCQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworCQkJCUdDQ19QUkVGSVhf
SEVBREVSID0gIiI7CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAiXCJAbG9hZGVyX3Bh
dGgvLlwiIjsKKwkJCQlMSU5LRVJfRElTUExBWVNfTUFOR0xFRF9OQU1FUyA9IFlFUzsKKwkJCQlP
VEhFUl9DRkxBR1MgPSAoCisJCQkJCSItaWZyYW1ld29yayIsCisJCQkJCSIkKFNES1JPT1QpJChT
WVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvIiwKKwkJCQkpOworCQkJCU9USEVSX0xERkxB
R1MgPSAiLWxlZGl0IjsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJ
CVNES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBY
Q0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLSAgICAgICBDMjQ2NThGQzE4OTAyQUNFMDAy
OTA5MkUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJqc2MtY2xp
IiAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLSAgICAgICAg
ICAgYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKLSAgICAgICAgICAgICAgIEMyNDY1OTBEMTg5MDJB
Q0UwMDI5MDkyRSAvKiBEZWJ1ZyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTBFMTg5MDJBQ0Uw
MDI5MDkyRSAvKiBSZWxlYXNlICovLAotICAgICAgICAgICApOwotICAgICAgICAgICBkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0gICAgICAgICAgIGRlZmF1bHRDb25maWd1cmF0
aW9uTmFtZSA9IFJlbGVhc2U7Ci0gICAgICAgfTsKLSAgICAgICBDMjQ2NTkwRjE4OTAyQUNFMDAy
OTA5MkUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImpz
Yy1jbGkiICovID0gewotICAgICAgICAgICBpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotICAg
ICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25zID0gKAotICAgICAgICAgICAgICAgQzI0NjU5MTAx
ODkwMkFDRTAwMjkwOTJFIC8qIERlYnVnICovLAotICAgICAgICAgICAgICAgQzI0NjU5MTExODkw
MkFDRTAwMjkwOTJFIC8qIFJlbGVhc2UgKi8sCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIGRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLSAgICAgICAgICAgZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKLSAgICAgICB9OworCQlDMjQ2NThGQzE4OTAyQUNFMDAy
OTA5MkUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJqc2MtY2xp
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCUMyNDY1OTBEMTg5MDJBQ0UwMDI5MDkyRSAvKiBEZWJ1ZyAqLywKKwkJ
CQlDMjQ2NTkwRTE4OTAyQUNFMDAyOTA5MkUgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOworCQl9OworCQlDMjQ2NTkwRjE4OTAyQUNFMDAyOTA5MkUgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImpzYy1jbGkiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJQzI0NjU5MTAxODkwMkFDRTAwMjkwOTJFIC8qIERlYnVnICovLAorCQkJCUMyNDY1OTEx
MTg5MDJBQ0UwMDI5MDkyRSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVh
c2U7CisJCX07CiAvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0gICB9Owot
ICAgcm9vdE9iamVjdCA9IEMyNDY1OEY5MTg5MDJBQ0UwMDI5MDkyRSAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwl9OworCXJvb3RPYmplY3QgPSBDMjQ2NThGOTE4OTAyQUNFMDAyOTA5MkUgLyogUHJv
amVjdCBvYmplY3QgKi87CiB9CkluZGV4OiBUb29scy9qc2MtY2xpL2pzYy1jbGkvSlNNb2R1bGUu
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9qc2MtY2xpL2pzYy1jbGkvSlNNb2R1bGUubQkocmV2aXNp
b24gMTY0NTU2KQorKysgVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTTW9kdWxlLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbXBvcnQgIkpTTW9kdWxlLmgiCiAjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgogCisjaW1wb3J0ICJJT01vZHVsZS5oIgor
CiBAaW1wbGVtZW50YXRpb24gSlNNb2R1bGUgewogICAgIEpTTWFuYWdlZFZhbHVlICpfZXhwb3J0
czsKICAgICBOU1N0cmluZyAqX2lkOwpAQCAtNDAsOSArNDIsMTIgQEAgc3RhdGljIE5TRGljdGlv
bmFyeSAqY29yZU1vZHVsZXMoKQogewogICAgIHN0YXRpYyBOU0RpY3Rpb25hcnkgKm1vZHVsZXMg
PSAwOwogICAgIGlmICghbW9kdWxlcykgeworICAgICAgICBOU1N0cmluZyAqYmFzZURpciA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlUGF0aF07CisgICAgICAgIE5TU3RyaW5nICpsaWJE
aXIgPSBbYmFzZURpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJsaWIiXTsKKyAg
ICAgICAgCiAgICAgICAgIC8vIFB1dCBsb2NhdGlvbiBvZiBidWlsdC1pbiBtb2R1bGVzIGhlcmUu
CiAgICAgICAgIG1vZHVsZXMgPSBAewotICAgICAgICAgICAgLy9AInV0aWwiOiBbbGliRGlyIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInV0aWwuanMiXSwKKyAgICAgICAgICAgIEAi
aW8iOiBbbGliRGlyIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImlvLmpzIl0KICAg
ICAgICAgfTsKICAgICB9CiAgICAgcmV0dXJuIG1vZHVsZXM7CkBAIC01OSw3ICs2NCw3IEBAIHN0
YXRpYyBDbGFzcyBjbGFzc0Zvck1vZHVsZShOU1N0cmluZyAqbW8KICAgICBpZiAoIW1vZHVsZUNs
YXNzZXMpIHsKICAgICAgICAgLy8gUHV0IGNsYXNzZXMgZm9yIGJ1aWx0LWluIG1vZHVsZXMgaGVy
ZS4KICAgICAgICAgbW9kdWxlQ2xhc3NlcyA9IEB7Ci0gICAgICAgICAgICAvL0AidXRpbCI6IFtK
U1V0aWxNb2R1bGUgY2xhc3NdLAorICAgICAgICAgICAgQCJpbyI6IFtJT01vZHVsZSBjbGFzc10K
ICAgICAgICAgfTsKICAgICB9CiAgICAgCkBAIC0yOTQsNCArMjk5LDQgQEAgLSAoSlNWYWx1ZSAq
KWV4cG9ydHMKICAgICByZXR1cm4gW19leHBvcnRzIHZhbHVlXTsKIH0KIAotQGVuZApcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKK0BlbmQKSW5kZXg6IFRvb2xzL2pzYy1jbGkvanNjLWNsaS9s
aWIvSU9Nb2R1bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL0lP
TW9kdWxlLmgJKHJldmlzaW9uIDApCisrKyBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL0lPTW9k
dWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIkpTTW9kdWxlLmgiCisKK0BpbnRlcmZhY2UgSU9Nb2R1bGUgOiBKU01vZHVsZQorCistIChK
U1ZhbHVlICopcGxhdGZvcm1PYmplY3RJbkNvbnRleHQ6KEpTQ29udGV4dCAqKWNvbnRleHQ7CisK
K0BlbmQKSW5kZXg6IFRvb2xzL2pzYy1jbGkvanNjLWNsaS9saWIvSU9Nb2R1bGUubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL0lPTW9kdWxlLm0JKHJldmlzaW9uIDAp
CisrKyBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL0lPTW9kdWxlLm0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJJT01vZHVsZS5oIgorI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKworI2ltcG9ydCA8c3RkaW8u
aD4KKworQGltcGxlbWVudGF0aW9uIElPTW9kdWxlCisKK3N0YXRpYyB2b2lkIHNldEVycm9yV2l0
aEVycm5vKCkKK3sKKyAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UgPSBzdHJlcnJvcihlcnJu
byk7CisgICAgSlNWYWx1ZSAqZXhjZXB0aW9uID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3RXJyb3JG
cm9tTWVzc2FnZTpAKGVycm9yTWVzc2FnZSkgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENv
bnRleHRdXTsKKyAgICBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XS5leGNlcHRpb24gPSBleGNl
cHRpb247Cit9CisKKy0gKEpTVmFsdWUgKilwbGF0Zm9ybU9iamVjdEluQ29udGV4dDooSlNDb250
ZXh0ICopY29udGV4dAoreworICAgIEpTVmFsdWUgKnBsYXRmb3JtT2JqZWN0ID0gW0pTVmFsdWUg
dmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOworICAgIAorICAgIHBsYXRmb3Jt
T2JqZWN0W0Aib3BlbiJdID0gXihOU1N0cmluZyAqZmlsZW5hbWUsIGludCBtb2RlKXsKKyAgICAg
ICAgY29uc3QgY2hhciogZiA9IFtmaWxlbmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107CisgICAgICAgIGlmICghZikgeworICAgICAgICAgICAgTlNTdHJpbmcg
Km1lc3NhZ2UgPSBAIkNvdWxkIG5vdCBjb252ZXJ0IGZpbGVuYW1lIHVzaW5nIFVURjggZW5jb2Rp
bmcuIjsKKyAgICAgICAgICAgIFtKU0NvbnRleHQgY3VycmVudENvbnRleHRdLmV4Y2VwdGlvbiA9
IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0Vycm9yRnJvbU1lc3NhZ2U6bWVzc2FnZSBpbkNvbnRleHQ6
W0pTQ29udGV4dCBjdXJyZW50Q29udGV4dF1dOworICAgICAgICAgICAgcmV0dXJuIChKU1ZhbHVl
ICopbmlsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgcmVzdWx0ID0gb3Blbihm
LCBtb2RlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIHNldEVycm9y
V2l0aEVycm5vKCk7CisgICAgICAgICAgICByZXR1cm4gKEpTVmFsdWUgKiluaWw7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEludDMyOnJlc3VsdCBpbkNvbnRl
eHQ6W0pTQ29udGV4dCBjdXJyZW50Q29udGV4dF1dOworICAgIH07CisgICAgCisgICAgcGxhdGZv
cm1PYmplY3RbQCJyZWFkIl0gPSBeKGludCBmZCwgc2l6ZV90IGJ5dGVzKXsKKyAgICAgICAgY2hh
ciogYnVmZmVyID0gKGNoYXIqKW1hbGxvYyhzaXplb2YoY2hhcikgKiAoYnl0ZXMgKyAxKSk7Cisg
ICAgICAgIHNzaXplX3QgcmVzdWx0ID0gcmVhZChmZCwgYnVmZmVyLCBzaXplb2YoY2hhcikgKiBi
eXRlcyk7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICBzZXRFcnJvcldp
dGhFcnJubygpOworICAgICAgICAgICAgZnJlZShidWZmZXIpOworICAgICAgICAgICAgcmV0dXJu
IChKU1ZhbHVlICopbmlsOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlcltyZXN1bHRdID0gJ1ww
JzsKKyAgICAgICAgSlNWYWx1ZSAqcmV0dXJuVmFsdWUgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmpl
Y3Q6QChidWZmZXIpIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XV07CisgICAg
ICAgIGZyZWUoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH07Cisg
ICAgCisgICAgcGxhdGZvcm1PYmplY3RbQCJ3cml0ZSJdID0gXihpbnQgZmQsIE5TU3RyaW5nICpz
dHJpbmcpeworICAgICAgICBjb25zdCBjaGFyKiBzID0gW3N0cmluZyBjU3RyaW5nVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgICAgIGlmICghcykgeworICAgICAgICAg
ICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBAIkNvdWxkIG5vdCBjb252ZXJ0IHN0cmluZyB1c2luZyBV
VEY4IGVuY29kaW5nLiI7CisgICAgICAgICAgICBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XS5l
eGNlcHRpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOm1lc3NhZ2Ug
aW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXTsKKyAgICAgICAgICAgIHJldHVy
biAoSlNWYWx1ZSAqKW5pbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3NpemVfdCBy
ZXN1bHQgPSB3cml0ZShmZCwgcywgW3N0cmluZyBsZW5ndGhdKTsKKyAgICAgICAgaWYgKHJlc3Vs
dCA8IDApIHsKKyAgICAgICAgICAgIHNldEVycm9yV2l0aEVycm5vKCk7CisgICAgICAgICAgICBy
ZXR1cm4gKEpTVmFsdWUgKiluaWw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aE9iamVjdDpAKHJlc3VsdCkgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENv
bnRleHRdXTsKKyAgICB9OworICAgIAorICAgIHBsYXRmb3JtT2JqZWN0W0AicmVhZExpbmUiXSA9
IF4oaW50IGZkKXsKKyAgICAgICAgY2hhciogYnVmZmVyID0gKGNoYXIqKW1hbGxvYyhzaXplb2Yo
Y2hhcikgKiAyKTsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSAwOworICAgICAgICAvLyBX
ZSBvbmx5IHNldCBpdCB0byAxIGluaXRpYWxseSB0byBsZWF2ZSByb29tIGZvciB0aGUgdGVybWlu
YXRpbmcgbnVsbC4KKyAgICAgICAgc2l6ZV90IGJ1ZmZlckNhcGFjaXR5ID0gMTsKKyAgICAgICAg
Y2hhciB0ZW1wOworICAgICAgICBzc2l6ZV90IHJlc3VsdDsKKyAgICAgICAgCisgICAgICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgICAgICByZXN1bHQgPSByZWFkKGZkLCAmdGVtcCwgc2l6ZW9m
KGNoYXIpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICAgICAg
c2V0RXJyb3JXaXRoRXJybm8oKTsKKyAgICAgICAgICAgICAgICBmcmVlKGJ1ZmZlcik7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIChKU1ZhbHVlICopbmlsOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoYnVmZmVyU2l6ZSA9PSBidWZmZXJDYXBhY2l0eSkgeworICAgICAgICAgICAgICAgIGJ1ZmZl
ckNhcGFjaXR5ICo9IDI7CisgICAgICAgICAgICAgICAgLy8gT25lIGV4dHJhIHNsb3QgZm9yIHRo
ZSB0ZXJtaW5hdGluZyBudWxsLgorICAgICAgICAgICAgICAgIGNoYXIqIG5ld0J1ZmZlciA9IChj
aGFyKiltYWxsb2Moc2l6ZW9mKGNoYXIpICogKGJ1ZmZlckNhcGFjaXR5ICsgMSkpOworICAgICAg
ICAgICAgICAgIG1lbWNweShuZXdCdWZmZXIsIGJ1ZmZlciwgc2l6ZW9mKGNoYXIpICogYnVmZmVy
U2l6ZSk7CisgICAgICAgICAgICAgICAgZnJlZShidWZmZXIpOworICAgICAgICAgICAgICAgIGJ1
ZmZlciA9IG5ld0J1ZmZlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZmZlcltidWZm
ZXJTaXplKytdID0gdGVtcDsKKyAgICAgICAgICAgIGlmICh0ZW1wID09ICdcbicpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyW2J1ZmZlclNpemVdID0g
J1wwJzsKKyAgICAgICAgSlNDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbW0pTQ29udGV4dCBjdXJy
ZW50Q29udGV4dF0gSlNHbG9iYWxDb250ZXh0UmVmXTsKKyAgICAgICAgSlNTdHJpbmdSZWYganNT
dHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhidWZmZXIpOworICAgICAgICBK
U1ZhbHVlUmVmIHRlbXBTdHJpbmcgPSBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0UmVmLCBqc1N0
cmluZyk7CisgICAgICAgIEpTVmFsdWUgKnJldHVyblZhbHVlID0gW0pTVmFsdWUgdmFsdWVXaXRo
SlNWYWx1ZVJlZjp0ZW1wU3RyaW5nIGluQ29udGV4dDpbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0
XV07CisgICAgICAgIEpTU3RyaW5nUmVsZWFzZShqc1N0cmluZyk7CisgICAgICAgIGZyZWUoYnVm
ZmVyKTsKKyAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOworICAgIH07CisgICAgCisgICAgcGxh
dGZvcm1PYmplY3RbQCJjbG9zZSJdID0gXihpbnQgZmQpeworICAgICAgICBpbnQgcmVzdWx0ID0g
Y2xvc2UoZmQpOworICAgICAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgICAgIHNldEVycm9y
V2l0aEVycm5vKCk7CisgICAgICAgIHJldHVybiAoSlNWYWx1ZSAqKW5pbDsKKyAgICB9OworICAg
IAorICAgIHBsYXRmb3JtT2JqZWN0W0AiT19SRE9OTFkiXSA9IEAoT19SRE9OTFkpOworICAgIHBs
YXRmb3JtT2JqZWN0W0AiT19XUk9OTFkiXSA9IEAoT19XUk9OTFkpOworICAgIHBsYXRmb3JtT2Jq
ZWN0W0AiT19SRFdSIl0gPSBAKE9fUkRXUik7CisgICAgcGxhdGZvcm1PYmplY3RbQCJPX0FQUEVO
RCJdID0gQChPX0FQUEVORCk7CisgICAgcGxhdGZvcm1PYmplY3RbQCJPX0NSRUFUIl0gPSBAKE9f
Q1JFQVQpOworICAgIHBsYXRmb3JtT2JqZWN0W0AiT19UUlVOQyJdID0gQChPX1RSVU5DKTsKKyAg
ICBwbGF0Zm9ybU9iamVjdFtAIk9fRVhDTCJdID0gQChPX0VYQ0wpOworICAgIAorICAgIHJldHVy
biBwbGF0Zm9ybU9iamVjdDsKK30KKworQGVuZApJbmRleDogVG9vbHMvanNjLWNsaS9qc2MtY2xp
L2xpYi9pby5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL2lvLmpz
CShyZXZpc2lvbiAwKQorKysgVG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9pby5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQG1vZHVsZSBp
bworICovCisKKyhmdW5jdGlvbihwbGF0Zm9ybSkgeworCisvLyAncicgLSBPcGVuIGZpbGUgZm9y
IHJlYWRpbmcuIEFuIGV4Y2VwdGlvbiBvY2N1cnMgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qu
CisvLyAncisnIC0gT3BlbiBmaWxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLiBBbiBleGNlcHRp
b24gb2NjdXJzIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LgorLy8gJ3cnIC0gT3BlbiBmaWxl
IGZvciB3cml0aW5nLiBUaGUgZmlsZSBpcyBjcmVhdGVkIChpZiBpdCBkb2VzIG5vdCBleGlzdCkg
b3IgdHJ1bmNhdGVkIChpZiBpdCBleGlzdHMpLgorLy8gJ3d4JyAtIExpa2UgJ3cnIGJ1dCBmYWls
cyBpZiBwYXRoIGV4aXN0cy4KKy8vICd3KycgLSBPcGVuIGZpbGUgZm9yIHJlYWRpbmcgYW5kIHdy
aXRpbmcuIFRoZSBmaWxlIGlzIGNyZWF0ZWQgKGlmIGl0IGRvZXMgbm90IGV4aXN0KSBvciB0cnVu
Y2F0ZWQgKGlmIGl0IGV4aXN0cykuCisvLyAnd3grJyAtIExpa2UgJ3crJyBidXQgZmFpbHMgaWYg
cGF0aCBleGlzdHMuCisvLyAnYScgLSBPcGVuIGZpbGUgZm9yIGFwcGVuZGluZy4gVGhlIGZpbGUg
aXMgY3JlYXRlZCBpZiBpdCBkb2VzIG5vdCBleGlzdC4KKy8vICdheCcgLSBMaWtlICdhJyBidXQg
ZmFpbHMgaWYgcGF0aCBleGlzdHMuCisvLyAnYSsnIC0gT3BlbiBmaWxlIGZvciByZWFkaW5nIGFu
ZCBhcHBlbmRpbmcuIFRoZSBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuCisv
LyAnYXgrJyAtIExpa2UgJ2ErJyBidXQgZmFpbHMgaWYgcGF0aCBleGlzdHMuCit2YXIgY29udmVy
dEZsYWdzVG9CaXRzID0gZnVuY3Rpb24oZmxhZ3MpIHsKKyAgICBzd2l0Y2ggKGZsYWdzKSB7Cisg
ICAgY2FzZSAiciI6CisgICAgICAgIHJldHVybiBwbGF0Zm9ybS5PX1JET05MWTsKKyAgICBjYXNl
ICJyKyI6CisgICAgICAgIHJldHVybiBwbGF0Zm9ybS5PX1JEV1I7CisgICAgY2FzZSAidyI6Cisg
ICAgICAgIHJldHVybiBwbGF0Zm9ybS5PX1dST05MWSB8IHBsYXRmb3JtLk9fQ1JFQVQgfCBwbGF0
Zm9ybS5PX1RSVU5DOworICAgIGNhc2UgIncrIjoKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtLk9f
UkRXUiB8IHBsYXRmb3JtLk9fQ1JFQVQgfCBwbGF0Zm9ybS5PX1RSVU5DOworICAgIGNhc2UgInd4
IjoKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtLk9fV1JPTkxZIHwgcGxhdGZvcm0uT19DUkVBVCB8
IHBsYXRmb3JtLk9fRVhDTDsKKyAgICBjYXNlICJ3eCsiOgorICAgICAgICByZXR1cm4gcGxhdGZv
cm0uT19SRFdSIHwgcGxhdGZvcm0uT19DUkVBVCB8IHBsYXRmb3JtLk9fRVhDTDsKKyAgICBjYXNl
ICJhIjoKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtLk9fQVBQRU5EIHwgcGxhdGZvcm0uT19DUkVB
VDsKKyAgICBjYXNlICJheCI6CisgICAgICAgIHJldHVybiBwbGF0Zm9ybS5PX0FQUEVORCB8IHBs
YXRmb3JtLk9fQ1JFQVQgfCBwbGF0Zm9ybS5PX0VYQ0w7CisgICAgY2FzZSAiYSsiOgorICAgICAg
ICByZXR1cm4gcGxhdGZvcm0uT19SRE9OTFkgfCBwbGF0Zm9ybS5PX0FQUEVORCB8IHBsYXRmb3Jt
Lk9fQ1JFQVQ7CisgICAgY2FzZSAiYXgrIjoKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtLk9fUkRP
TkxZIHwgcGxhdGZvcm0uT19BUFBFTkQgfCBwbGF0Zm9ybS5PX0NSRUFUIHwgcGxhdGZvcm0uT19F
WENMOworICAgIGRlZmF1bHQ6CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBmbGFn
cyBhcmd1bWVudDogIiArIGZsYWdzKTsKKyAgICB9Cit9OworCisvKioKKyAqIENyZWF0ZXMgYSBu
ZXcgc3RyZWFtIGZyb20gYSBwYXJ0aWN1bGFyIGZpbGUgZGVzY3JpcHRvci4KKyAqIEBjbGFzcwor
ICovCit2YXIgU3RyZWFtID0gZnVuY3Rpb24oZmQsIG1vZGUpIHsKKyAgICB0aGlzLl9mZCA9IGZk
OworfTsKKworLyoqCisgKiBDbG9zZXMgYSBTdHJlYW0uCisgKiBAbWV0aG9kCisgKi8KK1N0cmVh
bS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHsKKyAgICB0cnkgeworICAgICAgICBwbGF0
Zm9ybS5jbG9zZSh0aGlzLl9mZCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBl
OworICAgIH0KK307CisKKy8qKgorICogUmVhZHMgY2hhcmFjdGVycyBmcm9tIGEgU3RyZWFtLgor
ICogQG1ldGhvZAorICogQHBhcmFtIHtudW1iZXJ9IG4gLSBUaGUgbnVtYmVyIG9mIGNoYXJhY3Rl
cnMgdG8gcmVhZCBmcm9tIHRoZSBTdHJlYW0uCisgKiBAcmV0dXJucyB7c3RyaW5nfSBTdHJpbmcg
Y29udGFpbmluZyB0aGUgY2hhcmFjdGVycyB0aGF0IHdlcmUgcmVhZC4KKyAqLworU3RyZWFtLnBy
b3RvdHlwZS5yZWFkID0gZnVuY3Rpb24obikgeworICAgIHJldHVybiBwbGF0Zm9ybS5yZWFkKHRo
aXMuX2ZkLCArbik7Cit9OworCisvKioKKyAqIFJlYWRzIGNoYXJhY3RlcnMgZnJvbSBhIFN0cmVh
bSB1bnRpbCBpdCByZWFjaGVzIGEgbmV3bGluZSBvciB0aGUgZW5kIG9mIHRoZSBTdHJlYW0uCisg
KiBAbWV0aG9kCisgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2hhcmFjdGVycyByZWFkIGZyb20g
dGhlIFN0cmVhbSBvciB0aGUgZW1wdHkgc3RyaW5nCisgKiAgaWYgdGhlcmUgYXJlIG5vIG1vcmUg
Y2hhcmFjdGVycyB0byByZWFkLgorICovCitTdHJlYW0ucHJvdG90eXBlLnJlYWRMaW5lID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIHBsYXRmb3JtLnJlYWRMaW5lKHRoaXMuX2ZkKTsKK307CisK
Ky8qKgorICogV3JpdGVzIHRoZSBwcm92aWRlZCBzdHJpbmcgdG8gdGhlIFN0cmVhbS4KKyAqIEBt
ZXRob2QKKyAqIEBwYXJhbSBzIFRoZSBzdHJpbmcgdG8gd3JpdGUgdG8gdGhlIFN0cmVhbS4KKyAq
IEByZXR1cm5zIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuLgorICov
CitTdHJlYW0ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ocykgeworICAgIHJldHVybiBwbGF0
Zm9ybS53cml0ZSh0aGlzLl9mZCwgJycgKyBzKTsKK307CisKKy8qKgorICogV3JpdGVzIHRoZSBw
cm92aWRlZCBzdHJpbmcgdG8gdGhlIFN0cmVhbSBhZnRlciBhcHBlbmRpbmcgYSBuZXdsaW5lLgor
ICogQG1ldGhvZAorICogQHBhcmFtIHMgVGhlIHN0cmluZyB0byB3cml0ZSB0byB0aGUgU3RyZWFt
LgorICovCitTdHJlYW0ucHJvdG90eXBlLnByaW50ID0gZnVuY3Rpb24ocykgeworICAgIHRoaXMu
d3JpdGUocyArICJcbiIpOworfTsKKworLyoqCisgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3Ig
aXRlcmF0aW5nIG92ZXIgdGhlIGxpbmVzIG9mIGEgU3RyZWFtIGFuZCBwYXNzaW5nIGVhY2ggbGlu
ZSB0byBhIGNhbGxiYWNrLgorICogQG1ldGhvZAorICogQHBhcmFtIGNhbGxiYWNrIFRoZSBmdW5j
dGlvbiB0byB3aGljaCBlYWNoIGxpbmUgaW4gdGhlIFN0cmVhbSBpcyBwYXNzZWQuIElmIG5vIGNh
bGxiYWNrIGlzIHByb3ZpZGVkIHRoZW4KKyAqICB0aGlzIG1ldGhvZCBpdGVyYXRlcyB0byB0aGUg
ZW5kIG9mIHRoZSBTdHJlYW0uCisgKi8KK1N0cmVhbS5wcm90b3R5cGUuZm9yRWFjaExpbmUgPSBm
dW5jdGlvbihjYWxsYmFjaykgeworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHZhciBuZXh0
TGluZSA9IHRoaXMucmVhZExpbmUoKTsKKyAgICAgICAgaWYgKG5leHRMaW5lLmxlbmd0aCA9PT0g
MCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAg
ICBjYWxsYmFjayhuZXh0TGluZSk7CisgICAgfQorfTsKKwordmFyIHN0ZG91dCA9IG5ldyBTdHJl
YW0oMSk7Cit2YXIgc3RkZXJyID0gbmV3IFN0cmVhbSgyKTsKK3ZhciBzdGRpbiA9IG5ldyBTdHJl
YW0oMCk7CitleHBvcnRzLnN0ZG91dCA9IHN0ZG91dDsKK2V4cG9ydHMuc3RkZXJyID0gc3RkZXJy
OworZXhwb3J0cy5zdGRpbiA9IHN0ZGluOworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgU3RyZWFt
IGZvciBhIGZpbGUuCisgKiBAZnVuY3Rpb24KKyAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZSAt
IFRoZSBwYXRoIHRvIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4KKyAqIEBwYXJhbSB7c3RyaW5nfSBt
b2RlIC0gVGhlIG1vZGUgZm9yIHRoZSB0by1iZS1vcGVuZWQgZmlsZS4KKyAqIEBwYXJhbSB7ZnVu
Y3Rpb259IFtjYWxsYmFja10gLSBPcHRpb25hbCBjYWxsYmFjay4gSWYgcHJvdmlkZWQsIHRoZSBj
YWxsYmFjayB3aWxsIGJlIGludm9rZWQgYWZ0ZXIgdGhlIGZpbGUgaGFzIGJlZW4gb3BlbmVkIGFu
ZCBjbG9zZWQgYWZ0ZXIgdGhlIGNhbGxiYWNrIGhhcyBjb21wbGV0ZWQuCisgKiBAcmV0dXJucyB7
dW5kZWZpbmVkfFN0cmVhbX0gVW5kZWZpbmVkIGlmIGEgY2FsbGJhY2sgaXMgcHJvdmlkZWQsIHRo
ZSByZXN1bHRpbmcgU3RyZWFtIG90aGVyd2lzZS4KKyAqLworZXhwb3J0cy5vcGVuID0gZnVuY3Rp
b24oZmlsZW5hbWUsIG1vZGUsIGNhbGxiYWNrKSB7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHN0
cmVhbSA9IG5ldyBTdHJlYW0ocGxhdGZvcm0ub3BlbihmaWxlbmFtZSwgY29udmVydEZsYWdzVG9C
aXRzKG1vZGUpKSk7CisgICAgICAgIGlmICghY2FsbGJhY2spCisgICAgICAgICAgICByZXR1cm4g
c3RyZWFtOworICAgICAgICBjYWxsYmFjayhzdHJlYW0pOworICAgICAgICBzdHJlYW0uY2xvc2Uo
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfTsKKworLyoq
CisgKiBQcmludHMgYSBwcm9tcHQgYW5kIHdhaXRzIGZvciB1c2VyIGlucHV0LgorICogQGZ1bmN0
aW9uCisgKiBAcGFyYW0ge3N0cmluZ30gW3Byb21wdF0gLSBPcHRpb25hbCBwcm9tcHQgdG8gcHJp
bnQgcHJpb3IgdG8gd2FpdGluZyBmb3IgdXNlciBpbnB1dC4KKyAqIEByZXR1cm5zIHtzdHJpbmd9
IFRoZSBjaGFyYWN0ZXJzIHJlYWQgZnJvbSBzdGRpbi4KKyAqLworZXhwb3J0cy5pbnB1dCA9IGZ1
bmN0aW9uKHByb21wdCkgeworICAgIHRyeSB7CisgICAgICAgIGlmIChwcm9tcHQpCisgICAgICAg
ICAgICBzdGRvdXQud3JpdGUocHJvbXB0KTsKKyAgICAgICAgcmV0dXJuIHN0ZGluLnJlYWRMaW5l
KCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0aHJvdyBlOworICAgIH0KK307CisKKy8q
KgorICogSWRlbnRpZmllcyB3aGV0aGVyIG9yIG5vdCBhbiBvYmplY3QgaXMgYSBTdHJlYW0uCisg
KiBAZnVuY3Rpb24KKyAqIEBwYXJhbSB7b2JqZWN0fSBvIC0gVGhlIG9iamVjdCB0byB0ZXN0Lgor
ICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIFN0cmVhbSwgZmFs
c2Ugb3RoZXJ3aXNlLgorICovCitleHBvcnRzLmlzU3RyZWFtID0gZnVuY3Rpb24obykgeworICAg
IHJldHVybiBvIGluc3RhbmNlb2YgU3RyZWFtOworfTsKKworLyoqCisgKiBHbG9iYWwgY29udmVu
aWVuY2UgZnVuY3Rpb24gZm9yIHByaW50aW5nIHRvIHN0ZG91dC4gRXF1aXZhbGVudCB0byBpby5z
dGRvdXQucHJpbnQuCisgKiBAZnVuY3Rpb24KKyAqIEBwYXJhbSB7c3RyaW5nfSBzIC0gVGhlIHN0
cmluZyB0byBwcmludC4KKyAqLworcHJpbnQgPSBmdW5jdGlvbihzKSB7CisgICAgc3Rkb3V0LnBy
aW50KHMpOworfTsKKworfSkocGxhdGZvcm0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225261</attachid>
            <date>2014-02-26 09:46:04 -0800</date>
            <delta_ts>2014-02-28 10:25:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-129114-20140226094601.patch</filename>
            <type>text/plain</type>
            <size>48247</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE2NDcxNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTAyLTIzICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAganNjLWNsaSBuZWVkcyBhIGJhc2ljIHN0b3J5IGZvciB0ZXh0IElP
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkxMTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGltcGxlbWVudHMgYSBzaW1wbGUgc29sdXRpb24gdGhhdCBnZXRzIHVzIHByZXR0eSBmYXIu
IEl0IGludHJvZHVjZXMgdGhlIElPIG1vZHVsZSAKKyAgICAgICAgdGhhdCBpcyBhIGhpZ2hlci1s
ZXZlbCB3cmFwcGVyIGFyb3VuZCBmaWxlLWRlc2NyaXB0b3ItYmFzZWQgb3Blbi9yZWFkL3dyaXRl
L2Nsb3NlIE9TIGxldmVsIEFQSXMuCisKKyAgICAgICAgKiBqc2MtY2xpL2pzYy1jbGkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBqc2MtY2xpL2pzYy1jbGkvSlNNb2R1bGUu
bToKKyAgICAgICAgKGNvcmVNb2R1bGVzKToKKyAgICAgICAgKGNsYXNzRm9yTW9kdWxlKToKKyAg
ICAgICAgKiBqc2MtY2xpL2pzYy1jbGkvbGliOiBBZGRlZC4KKyAgICAgICAgKiBqc2MtY2xpL2pz
Yy1jbGkvbGliL0lPTW9kdWxlLmg6IEFkZGVkLgorICAgICAgICAqIGpzYy1jbGkvanNjLWNsaS9s
aWIvSU9Nb2R1bGUubTogQWRkZWQuCisgICAgICAgIChzZXRFcnJvcldpdGhFcnJubyk6CisgICAg
ICAgICgtW0lPTW9kdWxlIHBsYXRmb3JtT2JqZWN0SW5Db250ZXh0Ol0pOgorICAgICAgICAqIGpz
Yy1jbGkvanNjLWNsaS9saWIvaW8uanM6IEFkZGVkLgorCiAyMDE0LTAyLTI2ICBNYW51ZWwgUmVn
byBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJlLWVuYWJs
ZSBndGstZG9jIGluIEVXUwpJbmRleDogVG9vbHMvanNjLWNsaS9qc2MtY2xpLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvanNjLWNsaS9qc2MtY2xpLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2NDcxNykKKysrIFRvb2xzL2pzYy1jbGkv
anNjLWNsaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0
MSArMSwzNDcgQEAKIC8vICEkKlVURjgqJCEKIHsKLSAgIGFyY2hpdmVWZXJzaW9uID0gMTsKLSAg
IGNsYXNzZXMgPSB7Ci0gICB9OwotICAgb2JqZWN0VmVyc2lvbiA9IDQ2OwotICAgb2JqZWN0cyA9
IHsKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNp
b24gPSA0NjsKKwlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwotICAgICAgIEMyNDY1OTA1MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1
OTA0MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKLSAgICAg
ICBDMjQ2NTkwODE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MDcxODkwMkFDRTAwMjkwOTJFIC8qIG1h
aW4ubSAqLzsgfTsKLSAgICAgICBDMjQ2NTkxNDE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFu
Y2UubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1
OTEzMTg5MDJCOTEwMDI5MDkyRSAvKiBDTElJbnN0YW5jZS5tICovOyB9OwotICAgICAgIEMyNDY1
OTE3MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVsZS5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MTYxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9k
dWxlLm0gKi87IH07Ci0gICAgICAgQzI0NjU5MUExODkwMkNDQzAwMjkwOTJFIC8qIEpTUnVuTG9v
cFRocmVhZC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI0NjU5MTkxODkwMkNDQzAwMjkwOTJFIC8qIEpTUnVuTG9vcFRocmVhZC5tICovOyB9OwotICAg
ICAgIEMyNDY1OTFEMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29wVGhyZWFkLm0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkxQzE4OTAyRDEwMDAy
OTA5MkUgLyogUnVuTG9vcFRocmVhZC5tICovOyB9OwotICAgICAgIEMyNDY1OTIwMTg5MDJFMTUw
MDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0NjU5MUYxODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFs
UHJpbnRMb29wLm0gKi87IH07Ci0gICAgICAgQzI0NjU5MjMxODkwMkVBNDAwMjkwOTJFIC8qIFNj
cmlwdElucHV0U291cmNlLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjQ2NTkyMjE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UubSAq
LzsgfTsKLSAgICAgICBDMjk2NjIxMTE4QURGNTYwMDA3NTI5MjIgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzI5NjYyMTAxOEFERjU2MDAwNzUyOTIyIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAq
LzsgfTsKKwkJQzIzQkQxNzAxOEIxMkM5QTAwNjNCQjk4IC8qIGlvLmpzIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzIzQkQxNkYxOEIxMkM5QTAwNjNCQjk4
IC8qIGlvLmpzICovOyB9OworCQlDMjNCRDE3MzE4QjEzMTgwMDA2M0JCOTggLyogSU9Nb2R1bGUu
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyM0JEMTcy
MThCMTMxODAwMDYzQkI5OCAvKiBJT01vZHVsZS5tICovOyB9OworCQlDMjNCRDE3NDE4QjE0MTM1
MDA2M0JCOTggLyogaW8uanMgaW4gQ29weSBMaWIgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzIzQkQxNkYxOEIxMkM5QTAwNjNCQjk4IC8qIGlvLmpzICovOyB9OworCQlDMjQ2
NTkwNTE4OTAyQUNFMDAyOTA5MkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkwNDE4OTAyQUNFMDAy
OTA5MkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CisJCUMyNDY1OTA4MTg5MDJBQ0Uw
MDI5MDkyRSAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjQ2NTkwNzE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tICovOyB9OworCQlDMjQ2
NTkxNDE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTEzMTg5MDJCOTEwMDI5MDkyRSAvKiBD
TElJbnN0YW5jZS5tICovOyB9OworCQlDMjQ2NTkxNzE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1
bGUubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1
OTE2MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVsZS5tICovOyB9OworCQlDMjQ2NTkxQTE4OTAy
Q0NDMDAyOTA5MkUgLyogSlNSdW5Mb29wVGhyZWFkLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQ2NTkxOTE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5M
b29wVGhyZWFkLm0gKi87IH07CisJCUMyNDY1OTFEMTg5MDJEMTAwMDI5MDkyRSAvKiBSdW5Mb29w
VGhyZWFkLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MjQ2NTkxQzE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5tICovOyB9OworCQlDMjQ2
NTkyMDE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AubSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNDY1OTFGMTg5MDJFMTUwMDI5MDky
RSAvKiBSZWFkRXZhbFByaW50TG9vcC5tICovOyB9OworCQlDMjQ2NTkyMzE4OTAyRUE0MDAyOTA5
MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UubSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyNDY1OTIyMTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNv
dXJjZS5tICovOyB9OworCQlDMjk2NjIxMTE4QURGNTYwMDA3NTI5MjIgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI5NjYyMTAxOEFERjU2MDAwNzUyOTIyIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLSAgICAgICBDMjQ2MTA1NDE4QUM0NDcyMDA5
Rjc1QjUgLyogQ29weSBUZXN0cyAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKLSAgICAgICAgICAgYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLSAg
ICAgICAgICAgZHN0UGF0aCA9IHRlc3RzOwotICAgICAgICAgICBkc3RTdWJmb2xkZXJTcGVjID0g
MTY7Ci0gICAgICAgICAgIGZpbGVzID0gKAotICAgICAgICAgICApOwotICAgICAgICAgICBuYW1l
ID0gIkNvcHkgVGVzdHMiOwotICAgICAgICAgICBydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKLSAgICAgICB9OwotICAgICAgIEMyNDY1OEZGMTg5MDJBQ0UwMDI5MDkyRSAv
KiBDb3B5IExpYiAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZTsKLSAgICAgICAgICAgYnVpbGRBY3Rpb25NYXNrID0gMTI7Ci0gICAgICAgICAgIGRzdFBhdGgg
PSBsaWI7Ci0gICAgICAgICAgIGRzdFN1YmZvbGRlclNwZWMgPSAxNjsKLSAgICAgICAgICAgZmls
ZXMgPSAoCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIG5hbWUgPSAiQ29weSBMaWIiOwotICAg
ICAgICAgICBydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLSAgICAgICB9
OworCQlDMjQ2MTA1NDE4QUM0NDcyMDA5Rjc1QjUgLyogQ29weSBUZXN0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZHN0UGF0aCA9IHRlc3RzOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDE2OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IFRlc3RzIjsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlDMjQ2NThGRjE4OTAyQUNFMDAy
OTA5MkUgLyogQ29weSBMaWIgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CisJCQlkc3RQYXRoID0gbGliOworCQkJZHN0U3Vi
Zm9sZGVyU3BlYyA9IDE2OworCQkJZmlsZXMgPSAoCisJCQkJQzIzQkQxNzQxOEIxNDEzNTAwNjNC
Qjk4IC8qIGlvLmpzIGluIENvcHkgTGliICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBMaWIi
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAvKiBF
bmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZpbGVS
ZWZlcmVuY2Ugc2VjdGlvbiAqLwotICAgICAgIEMyNDY1OTAxMTg5MDJBQ0UwMDI5MDkyRSAvKiBq
c2MtY2xpICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSAi
anNjLWNsaSI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0gICAgICAgQzI0
NjU5MDQxODkwMkFDRTAwMjkwOTJFIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBGb3VuZGF0aW9uLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwotICAg
ICAgIEMyNDY1OTA3MTg5MDJBQ0UwMDI5MDkyRSAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9
IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBDMjQ2NTkxMjE4OTAy
QjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0xJSW5zdGFuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBD
MjQ2NTkxMzE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5vYmpjOyBwYXRoID0gQ0xJSW5zdGFuY2UubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLSAgICAgICBDMjQ2NTkxNTE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1bGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLSAgICAgICBDMjQ2NTkxNjE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1bGUu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gSlNNb2R1bGUubTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBDMjQ2NTkxODE4OTAyQ0NDMDAyOTA5MkUgLyog
SlNSdW5Mb29wVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUnVu
TG9vcFRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgIEMyNDY1OTE5
MTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5vYmpjOyBwYXRoID0gSlNSdW5Mb29wVGhyZWFkLm07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0gICAgICAgQzI0NjU5MUIxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVuTG9vcFRocmVhZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotICAgICAgIEMyNDY1OTFDMTg5MDJEMTAwMDI5MDkyRSAv
KiBSdW5Mb29wVGhyZWFkLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFJ1
bkxvb3BUaHJlYWQubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBDMjQ2NTkx
RTE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVhZEV2YWxQcmludExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLSAgICAgICBDMjQ2NTkxRjE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmlu
dExvb3AubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gUmVhZEV2YWxQcmlu
dExvb3AubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBDMjQ2NTkyMTE4OTAy
RUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2NyaXB0SW5wdXRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLSAgICAgICBDMjQ2NTkyMjE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2Uu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gU2NyaXB0SW5wdXRTb3VyY2Uu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLSAgICAgICBDMjk2NjIxMDE4QURGNTYwMDA3
NTI5MjIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcms7IHBhdGggPSAuLi8uLi9XZWJLaXRCdWlsZC9EZWJ1Zy9KYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyM0JE
MTZGMThCMTJDOUEwMDYzQkI5OCAvKiBpby5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNj
cmlwdDsgbmFtZSA9IGlvLmpzOyBwYXRoID0gImpzYy1jbGkvbGliL2lvLmpzIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIzQkQxNzExOEIxMzE4MDAwNjNCQjk4IC8qIElPTW9kdWxl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IElPTW9kdWxlLmg7IHBhdGggPSAi
anNjLWNsaS9saWIvSU9Nb2R1bGUuaCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
M0JEMTcyMThCMTMxODAwMDYzQkI5OCAvKiBJT01vZHVsZS5tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLm9iamM7IG5hbWUgPSBJT01vZHVsZS5tOyBwYXRoID0gImpzYy1jbGkvbGliL0lPTW9kdWxl
Lm0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ2NTkwMTE4OTAyQUNFMDAyOTA5
MkUgLyoganNjLWNsaSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gImpzYy1jbGkiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlD
MjQ2NTkwNDE4OTAyQUNFMDAyOTA5MkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJh
bWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJ
CUMyNDY1OTA3MTg5MDJBQ0UwMDI5MDkyRSAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IG1h
aW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0NjU5MTIxODkwMkI5MTAwMjkw
OTJFIC8qIENMSUluc3RhbmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENM
SUluc3RhbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNDY1OTEzMTg5MDJC
OTEwMDI5MDkyRSAvKiBDTElJbnN0YW5jZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7
IHBhdGggPSBDTElJbnN0YW5jZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjQ2
NTkxNTE4OTAyQzQyMDAyOTA5MkUgLyogSlNNb2R1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNb2R1bGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0
NjU5MTYxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IEpTTW9kdWxlLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyNDY1OTE4MTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSdW5Mb29wVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyNDY1OTE5MTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJl
YWQubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gSlNSdW5Mb29wVGhyZWFk
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNDY1OTFCMTg5MDJEMTAwMDI5MDky
RSAvKiBSdW5Mb29wVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJ1
bkxvb3BUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0NjU5MUMxODkw
MkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5v
YmpjOyBwYXRoID0gUnVuTG9vcFRocmVhZC5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMjQ2NTkxRTE4OTAyRTE1MDAyOTA5MkUgLyogUmVhZEV2YWxQcmludExvb3AuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZEV2YWxQcmludExvb3AuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0NjU5MUYxODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFs
UHJpbnRMb29wLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFJlYWRFdmFs
UHJpbnRMb29wLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNDY1OTIxMTg5MDJF
QTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRJbnB1dFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMjQ2NTkyMjE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5wdXRTb3VyY2UubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gU2NyaXB0SW5wdXRTb3VyY2UubTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI5NjYyMTAxOEFERjU2MDAwNzUyOTIyIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vV2ViS2l0QnVpbGQvRGVidWcvSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0gICAgICAgQzI0NjU4RkUxODkwMkFDRTAwMjkwOTJFIC8qIEZyYW1ld29ya3MgKi8g
PSB7Ci0gICAgICAgICAgIGlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwotICAgICAgICAg
ICBidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotICAgICAgICAgICBmaWxlcyA9ICgKLSAg
ICAgICAgICAgICAgIEMyOTY2MjExMThBREY1NjAwMDc1MjkyMiAvKiBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTA1MTg5MDJB
Q0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotICAg
ICAgICAgICApOwotICAgICAgICAgICBydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKLSAgICAgICB9OworCQlDMjQ2NThGRTE4OTAyQUNFMDAyOTA5MkUgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUMyOTY2MjExMThBREY1NjAw
MDc1MjkyMiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQlDMjQ2NTkwNTE4OTAyQUNFMDAyOTA5MkUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJfTsKIC8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KLSAgICAgICBDMjQ2MTA0QzE4QUMzQjQ1MDA5
Rjc1QjUgLyogdGVzdHMgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFBCWEdyb3VwOwotICAgICAg
ICAgICBjaGlsZHJlbiA9ICgKLSAgICAgICAgICAgKTsKLSAgICAgICAgICAgbmFtZSA9IHRlc3Rz
OwotICAgICAgICAgICBzb3VyY2VUcmVlID0gIjxncm91cD4iOwotICAgICAgIH07Ci0gICAgICAg
QzI0NjEwNTAxOEFDNDBGMTAwOUY3NUI1IC8qIGxpYiAqLyA9IHsKLSAgICAgICAgICAgaXNhID0g
UEJYR3JvdXA7Ci0gICAgICAgICAgIGNoaWxkcmVuID0gKAotICAgICAgICAgICApOwotICAgICAg
ICAgICBuYW1lID0gbGliOwotICAgICAgICAgICBzb3VyY2VUcmVlID0gIjxncm91cD4iOwotICAg
ICAgIH07Ci0gICAgICAgQzI0NjU4RjgxODkwMkFDRTAwMjkwOTJFID0gewotICAgICAgICAgICBp
c2EgPSBQQlhHcm91cDsKLSAgICAgICAgICAgY2hpbGRyZW4gPSAoCi0gICAgICAgICAgICAgICBD
MjQ2MTA1MDE4QUM0MEYxMDA5Rjc1QjUgLyogbGliICovLAotICAgICAgICAgICAgICAgQzI0NjEw
NEMxOEFDM0I0NTAwOUY3NUI1IC8qIHRlc3RzICovLAotICAgICAgICAgICAgICAgQzI0NjU5MDYx
ODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkwMzE4
OTAyQUNFMDAyOTA5MkUgLyogRnJhbWV3b3JrcyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTAy
MTg5MDJBQ0UwMDI5MDkyRSAvKiBQcm9kdWN0cyAqLywKLSAgICAgICAgICAgKTsKLSAgICAgICAg
ICAgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLSAgICAgICB9OwotICAgICAgIEMyNDY1OTAyMTg5
MDJBQ0UwMDI5MDkyRSAvKiBQcm9kdWN0cyAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gUEJYR3Jv
dXA7Ci0gICAgICAgICAgIGNoaWxkcmVuID0gKAotICAgICAgICAgICAgICAgQzI0NjU5MDExODkw
MkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8sCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIG5h
bWUgPSBQcm9kdWN0czsKLSAgICAgICAgICAgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLSAgICAg
ICB9OwotICAgICAgIEMyNDY1OTAzMTg5MDJBQ0UwMDI5MDkyRSAvKiBGcmFtZXdvcmtzICovID0g
ewotICAgICAgICAgICBpc2EgPSBQQlhHcm91cDsKLSAgICAgICAgICAgY2hpbGRyZW4gPSAoCi0g
ICAgICAgICAgICAgICBDMjk2NjIxMDE4QURGNTYwMDA3NTI5MjIgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrICovLAotICAgICAgICAgICAgICAgQzI0NjU5MDQxODkwMkFDRTAwMjkwOTJFIC8q
IEZvdW5kYXRpb24uZnJhbWV3b3JrICovLAotICAgICAgICAgICApOwotICAgICAgICAgICBuYW1l
ID0gRnJhbWV3b3JrczsKLSAgICAgICAgICAgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLSAgICAg
ICB9OwotICAgICAgIEMyNDY1OTA2MTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovID0gewot
ICAgICAgICAgICBpc2EgPSBQQlhHcm91cDsKLSAgICAgICAgICAgY2hpbGRyZW4gPSAoCi0gICAg
ICAgICAgICAgICBDMjQ2NTkwNzE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tICovLAotICAgICAg
ICAgICAgICAgQzI0NjU5MTIxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLmggKi8sCi0g
ICAgICAgICAgICAgICBDMjQ2NTkxMzE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5zdGFuY2UubSAq
LywKLSAgICAgICAgICAgICAgIEMyNDY1OTE1MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVsZS5o
ICovLAotICAgICAgICAgICAgICAgQzI0NjU5MTYxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxl
Lm0gKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkxODE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5M
b29wVGhyZWFkLmggKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkxOTE4OTAyQ0NDMDAyOTA5MkUg
LyogSlNSdW5Mb29wVGhyZWFkLm0gKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkxQjE4OTAyRDEw
MDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5oICovLAotICAgICAgICAgICAgICAgQzI0NjU5MUMx
ODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQubSAqLywKLSAgICAgICAgICAgICAgIEMy
NDY1OTFFMTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5oICovLAotICAgICAg
ICAgICAgICAgQzI0NjU5MUYxODkwMkUxNTAwMjkwOTJFIC8qIFJlYWRFdmFsUHJpbnRMb29wLm0g
Ki8sCi0gICAgICAgICAgICAgICBDMjQ2NTkyMTE4OTAyRUE0MDAyOTA5MkUgLyogU2NyaXB0SW5w
dXRTb3VyY2UuaCAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTIyMTg5MDJFQTQwMDI5MDkyRSAv
KiBTY3JpcHRJbnB1dFNvdXJjZS5tICovLAotICAgICAgICAgICApOwotICAgICAgICAgICBwYXRo
ID0gImpzYy1jbGkiOwotICAgICAgICAgICBzb3VyY2VUcmVlID0gIjxncm91cD4iOwotICAgICAg
IH07CisJCUMyNDYxMDRDMThBQzNCNDUwMDlGNzVCNSAvKiB0ZXN0cyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkpOworCQkJbmFtZSA9IHRlc3RzOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQzI0NjEwNTAxOEFDNDBGMTAwOUY3NUI1
IC8qIGxpYiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QzIzQkQxNkYxOEIxMkM5QTAwNjNCQjk4IC8qIGlvLmpzICovLAorCQkJCUMyM0JEMTcxMThCMTMx
ODAwMDYzQkI5OCAvKiBJT01vZHVsZS5oICovLAorCQkJCUMyM0JEMTcyMThCMTMxODAwMDYzQkI5
OCAvKiBJT01vZHVsZS5tICovLAorCQkJKTsKKwkJCW5hbWUgPSBsaWI7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQlDMjQ2NThGODE4OTAyQUNFMDAyOTA5MkUgPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyNDYxMDUwMThBQzQwRjEwMDlG
NzVCNSAvKiBsaWIgKi8sCisJCQkJQzI0NjEwNEMxOEFDM0I0NTAwOUY3NUI1IC8qIHRlc3RzICov
LAorCQkJCUMyNDY1OTA2MTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAorCQkJCUMyNDY1
OTAzMTg5MDJBQ0UwMDI5MDkyRSAvKiBGcmFtZXdvcmtzICovLAorCQkJCUMyNDY1OTAyMTg5MDJB
Q0UwMDI5MDkyRSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQlDMjQ2NTkwMjE4OTAyQUNFMDAyOTA5MkUgLyogUHJvZHVjdHMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMyNDY1OTAxMTg5MDJB
Q0UwMDI5MDkyRSAvKiBqc2MtY2xpICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUMyNDY1OTAzMTg5MDJBQ0UwMDI5MDky
RSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDMjk2NjIxMDE4QURGNTYwMDA3NTI5MjIgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrICovLAorCQkJCUMyNDY1OTA0MTg5MDJBQ0UwMDI5MDkyRSAvKiBGb3VuZGF0aW9uLmZyYW1l
d29yayAqLywKKwkJCSk7CisJCQluYW1lID0gRnJhbWV3b3JrczsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUMyNDY1OTA2MTg5MDJBQ0UwMDI5MDkyRSAvKiBqc2MtY2xpICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjQ2NTkwNzE4
OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tICovLAorCQkJCUMyNDY1OTEyMTg5MDJCOTEwMDI5MDky
RSAvKiBDTElJbnN0YW5jZS5oICovLAorCQkJCUMyNDY1OTEzMTg5MDJCOTEwMDI5MDkyRSAvKiBD
TElJbnN0YW5jZS5tICovLAorCQkJCUMyNDY1OTE1MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVs
ZS5oICovLAorCQkJCUMyNDY1OTE2MTg5MDJDNDIwMDI5MDkyRSAvKiBKU01vZHVsZS5tICovLAor
CQkJCUMyNDY1OTE4MTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQuaCAqLywKKwkJ
CQlDMjQ2NTkxOTE4OTAyQ0NDMDAyOTA5MkUgLyogSlNSdW5Mb29wVGhyZWFkLm0gKi8sCisJCQkJ
QzI0NjU5MUIxODkwMkQxMDAwMjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQuaCAqLywKKwkJCQlDMjQ2
NTkxQzE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5tICovLAorCQkJCUMyNDY1OTFF
MTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5oICovLAorCQkJCUMyNDY1OTFG
MTg5MDJFMTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tICovLAorCQkJCUMyNDY1OTIx
MTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5oICovLAorCQkJCUMyNDY1OTIy
MTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5tICovLAorCQkJKTsKKwkJCXBh
dGggPSAianNjLWNsaSI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogLyogRW5k
IFBCWEdyb3VwIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24g
Ki8KLSAgICAgICBDMjQ2NTkwMDE4OTAyQUNFMDAyOTA5MkUgLyoganNjLWNsaSAqLyA9IHsKLSAg
ICAgICAgICAgaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotICAgICAgICAgICBidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gQzI0NjU5MEYxODkwMkFDRTAwMjkwOTJFIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJqc2MtY2xpIiAqLzsKLSAgICAgICAgICAgYnVp
bGRQaGFzZXMgPSAoCi0gICAgICAgICAgICAgICBDMjQ2NThGRDE4OTAyQUNFMDAyOTA5MkUgLyog
U291cmNlcyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OEZFMTg5MDJBQ0UwMDI5MDkyRSAvKiBG
cmFtZXdvcmtzICovLAotICAgICAgICAgICAgICAgQzI0NjU4RkYxODkwMkFDRTAwMjkwOTJFIC8q
IENvcHkgTGliICovLAotICAgICAgICAgICAgICAgQzI0NjEwNTQxOEFDNDQ3MjAwOUY3NUI1IC8q
IENvcHkgVGVzdHMgKi8sCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIGJ1aWxkUnVsZXMgPSAo
Ci0gICAgICAgICAgICk7Ci0gICAgICAgICAgIGRlcGVuZGVuY2llcyA9ICgKLSAgICAgICAgICAg
KTsKLSAgICAgICAgICAgbmFtZSA9ICJqc2MtY2xpIjsKLSAgICAgICAgICAgcHJvZHVjdE5hbWUg
PSAianNjLWNsaSI7Ci0gICAgICAgICAgIHByb2R1Y3RSZWZlcmVuY2UgPSBDMjQ2NTkwMTE4OTAy
QUNFMDAyOTA5MkUgLyoganNjLWNsaSAqLzsKLSAgICAgICAgICAgcHJvZHVjdFR5cGUgPSAiY29t
LmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKLSAgICAgICB9OworCQlDMjQ2NTkwMDE4OTAyQUNF
MDAyOTA5MkUgLyoganNjLWNsaSAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjQ2NTkwRjE4OTAyQUNFMDAyOTA5MkUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImpzYy1jbGkiICovOwor
CQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJQzI0NjU4RkQxODkwMkFDRTAwMjkwOTJFIC8qIFNvdXJj
ZXMgKi8sCisJCQkJQzI0NjU4RkUxODkwMkFDRTAwMjkwOTJFIC8qIEZyYW1ld29ya3MgKi8sCisJ
CQkJQzI0NjU4RkYxODkwMkFDRTAwMjkwOTJFIC8qIENvcHkgTGliICovLAorCQkJCUMyNDYxMDU0
MThBQzQ0NzIwMDlGNzVCNSAvKiBDb3B5IFRlc3RzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMg
PSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAianNjLWNs
aSI7CisJCQlwcm9kdWN0TmFtZSA9ICJqc2MtY2xpIjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSBD
MjQ2NTkwMTE4OTAyQUNFMDAyOTA5MkUgLyoganNjLWNsaSAqLzsKKwkJCXByb2R1Y3RUeXBlID0g
ImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAvKiBFbmQgUEJYTmF0aXZlVGFy
Z2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0gICAgICAg
QzI0NjU4RjkxODkwMkFDRTAwMjkwOTJFIC8qIFByb2plY3Qgb2JqZWN0ICovID0gewotICAgICAg
ICAgICBpc2EgPSBQQlhQcm9qZWN0OwotICAgICAgICAgICBhdHRyaWJ1dGVzID0gewotICAgICAg
ICAgICAgICAgTGFzdFVwZ3JhZGVDaGVjayA9IDA1MDA7Ci0gICAgICAgICAgICAgICBPUkdBTkla
QVRJT05OQU1FID0gIk1hcmsgSGFobmVuYmVyZyI7Ci0gICAgICAgICAgIH07Ci0gICAgICAgICAg
IGJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjQ2NThGQzE4OTAyQUNFMDAyOTA5MkUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJqc2MtY2xpIiAqLzsKLSAgICAg
ICAgICAgY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKLSAgICAgICAgICAgZGV2
ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwotICAgICAgICAgICBoYXNTY2FubmVkRm9yRW5jb2Rp
bmdzID0gMDsKLSAgICAgICAgICAga25vd25SZWdpb25zID0gKAotICAgICAgICAgICAgICAgZW4s
Ci0gICAgICAgICAgICk7Ci0gICAgICAgICAgIG1haW5Hcm91cCA9IEMyNDY1OEY4MTg5MDJBQ0Uw
MDI5MDkyRTsKLSAgICAgICAgICAgcHJvZHVjdFJlZkdyb3VwID0gQzI0NjU5MDIxODkwMkFDRTAw
MjkwOTJFIC8qIFByb2R1Y3RzICovOwotICAgICAgICAgICBwcm9qZWN0RGlyUGF0aCA9ICIiOwot
ICAgICAgICAgICBwcm9qZWN0Um9vdCA9ICIiOwotICAgICAgICAgICB0YXJnZXRzID0gKAotICAg
ICAgICAgICAgICAgQzI0NjU5MDAxODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8sCi0gICAg
ICAgICAgICk7Ci0gICAgICAgfTsKKwkJQzI0NjU4RjkxODkwMkFDRTAwMjkwOTJFIC8qIFByb2pl
Y3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7
CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA1MDA7CisJCQkJT1JHQU5JWkFUSU9OTkFNRSA9ICJN
YXJrIEhhaG5lbmJlcmciOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBDMjQ2
NThGQzE4OTAyQUNFMDAyOTA5MkUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQ
cm9qZWN0ICJqc2MtY2xpIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMu
MiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5j
b2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCSk7CisJCQltYWlu
R3JvdXAgPSBDMjQ2NThGODE4OTAyQUNFMDAyOTA5MkU7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSBD
MjQ2NTkwMjE4OTAyQUNFMDAyOTA5MkUgLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0
aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJQzI0NjU5
MDAxODkwMkFDRTAwMjkwOTJFIC8qIGpzYy1jbGkgKi8sCisJCQkpOworCQl9OwogLyogRW5kIFBC
WFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0gICAgICAgQzI0NjU4RkQxODkwMkFDRTAwMjkwOTJFIC8qIFNvdXJjZXMgKi8gPSB7
Ci0gICAgICAgICAgIGlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotICAgICAgICAgICBidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotICAgICAgICAgICBmaWxlcyA9ICgKLSAgICAgICAg
ICAgICAgIEMyNDY1OTFBMTg5MDJDQ0MwMDI5MDkyRSAvKiBKU1J1bkxvb3BUaHJlYWQubSBpbiBT
b3VyY2VzICovLAotICAgICAgICAgICAgICAgQzI0NjU5MjAxODkwMkUxNTAwMjkwOTJFIC8qIFJl
YWRFdmFsUHJpbnRMb29wLm0gaW4gU291cmNlcyAqLywKLSAgICAgICAgICAgICAgIEMyNDY1OTIz
MTg5MDJFQTQwMDI5MDkyRSAvKiBTY3JpcHRJbnB1dFNvdXJjZS5tIGluIFNvdXJjZXMgKi8sCi0g
ICAgICAgICAgICAgICBDMjQ2NTkwODE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tIGluIFNvdXJj
ZXMgKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkxNDE4OTAyQjkxMDAyOTA5MkUgLyogQ0xJSW5z
dGFuY2UubSBpbiBTb3VyY2VzICovLAotICAgICAgICAgICAgICAgQzI0NjU5MUQxODkwMkQxMDAw
MjkwOTJFIC8qIFJ1bkxvb3BUaHJlYWQubSBpbiBTb3VyY2VzICovLAotICAgICAgICAgICAgICAg
QzI0NjU5MTcxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxlLm0gaW4gU291cmNlcyAqLywKLSAg
ICAgICAgICAgKTsKLSAgICAgICAgICAgcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7Ci0gICAgICAgfTsKKwkJQzI0NjU4RkQxODkwMkFDRTAwMjkwOTJFIC8qIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDMjNCRDE3MDE4QjEyQzlBMDA2M0JC
OTggLyogaW8uanMgaW4gU291cmNlcyAqLywKKwkJCQlDMjNCRDE3MzE4QjEzMTgwMDA2M0JCOTgg
LyogSU9Nb2R1bGUubSBpbiBTb3VyY2VzICovLAorCQkJCUMyNDY1OTFBMTg5MDJDQ0MwMDI5MDky
RSAvKiBKU1J1bkxvb3BUaHJlYWQubSBpbiBTb3VyY2VzICovLAorCQkJCUMyNDY1OTIwMTg5MDJF
MTUwMDI5MDkyRSAvKiBSZWFkRXZhbFByaW50TG9vcC5tIGluIFNvdXJjZXMgKi8sCisJCQkJQzI0
NjU5MjMxODkwMkVBNDAwMjkwOTJFIC8qIFNjcmlwdElucHV0U291cmNlLm0gaW4gU291cmNlcyAq
LywKKwkJCQlDMjQ2NTkwODE4OTAyQUNFMDAyOTA5MkUgLyogbWFpbi5tIGluIFNvdXJjZXMgKi8s
CisJCQkJQzI0NjU5MTQxODkwMkI5MTAwMjkwOTJFIC8qIENMSUluc3RhbmNlLm0gaW4gU291cmNl
cyAqLywKKwkJCQlDMjQ2NTkxRDE4OTAyRDEwMDAyOTA5MkUgLyogUnVuTG9vcFRocmVhZC5tIGlu
IFNvdXJjZXMgKi8sCisJCQkJQzI0NjU5MTcxODkwMkM0MjAwMjkwOTJFIC8qIEpTTW9kdWxlLm0g
aW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLSAgICAgICBDMjQ2NTkw
RDE4OTAyQUNFMDAyOTA5MkUgLyogRGVidWcgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwotICAgICAgICAgICBidWlsZFNldHRpbmdzID0gewotICAgICAgICAg
ICAgICAgQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87Ci0gICAgICAgICAgICAgICBDTEFO
R19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251KysweCI7Ci0gICAgICAgICAgICAgICBDTEFO
R19DWFhfTElCUkFSWSA9ICJsaWJjKysiOwotICAgICAgICAgICAgICAgQ0xBTkdfRU5BQkxFX09C
SkNfQVJDID0gWUVTOwotICAgICAgICAgICAgICAgQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04g
PSBZRVM7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZ
RVM7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0RJUkVDVF9PQkpDX0lTQV9VU0FHRSA9IFlF
U19FUlJPUjsKLSAgICAgICAgICAgICAgIENMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKLSAg
ICAgICAgICAgICAgIENMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOwotICAgICAgICAg
ICAgICAgQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKLSAgICAgICAgICAgICAgIENM
QU5HX1dBUk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOwotICAgICAgICAgICAgICAgQ0xB
TkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKLSAgICAgICAgICAgICAgIENP
UFlfUEhBU0VfU1RSSVAgPSBOTzsKLSAgICAgICAgICAgICAgIEdDQ19DX0xBTkdVQUdFX1NUQU5E
QVJEID0gZ251OTk7Ci0gICAgICAgICAgICAgICBHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKLSAg
ICAgICAgICAgICAgIEdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwotICAgICAgICAg
ICAgICAgR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7Ci0gICAgICAgICAgICAgICBHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAotICAgICAgICAgICAgICAgICAgICJERUJVRz0xIiwK
LSAgICAgICAgICAgICAgICAgICAiJChpbmhlcml0ZWQpIiwKLSAgICAgICAgICAgICAgICk7Ci0g
ICAgICAgICAgICAgICBHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POwotICAgICAgICAg
ICAgICAgR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBZRVM7Ci0gICAgICAgICAg
ICAgICBHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFU19FUlJPUjsKLSAgICAgICAgICAg
ICAgIEdDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7Ci0gICAgICAgICAgICAgICBH
Q0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOwotICAgICAgICAgICAgICAgR0NDX1dB
Uk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOwotICAgICAgICAgICAgICAgR0NDX1dBUk5fVU5VU0VE
X1ZBUklBQkxFID0gWUVTOwotICAgICAgICAgICAgICAgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuOTsKLSAgICAgICAgICAgICAgIE9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7Ci0gICAgICAg
ICAgICAgICBTREtST09UID0gbWFjb3N4OwotICAgICAgICAgICB9OwotICAgICAgICAgICBuYW1l
ID0gRGVidWc7Ci0gICAgICAgfTsKLSAgICAgICBDMjQ2NTkwRTE4OTAyQUNFMDAyOTA5MkUgLyog
UmVsZWFzZSAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0g
ICAgICAgICAgIGJ1aWxkU2V0dGluZ3MgPSB7Ci0gICAgICAgICAgICAgICBBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTzsKLSAgICAgICAgICAgICAgIENMQU5HX0NYWF9MQU5HVUFHRV9TVEFO
REFSRCA9ICJnbnUrKzB4IjsKLSAgICAgICAgICAgICAgIENMQU5HX0NYWF9MSUJSQVJZID0gImxp
YmMrKyI7Ci0gICAgICAgICAgICAgICBDTEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7Ci0gICAg
ICAgICAgICAgICBDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKLSAgICAgICAgICAg
ICAgIENMQU5HX1dBUk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKLSAgICAgICAgICAgICAg
IENMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOwotICAgICAgICAg
ICAgICAgQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOwotICAgICAgICAgICAgICAgQ0xBTkdf
V0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX0lO
VF9DT05WRVJTSU9OID0gWUVTOwotICAgICAgICAgICAgICAgQ0xBTkdfV0FSTl9PQkpDX1JPT1Rf
Q0xBU1MgPSBZRVNfRVJST1I7Ci0gICAgICAgICAgICAgICBDTEFOR19XQVJOX19EVVBMSUNBVEVf
TUVUSE9EX01BVENIID0gWUVTOwotICAgICAgICAgICAgICAgQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKLSAgICAgICAgICAgICAgIERFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRo
LWRzeW0iOwotICAgICAgICAgICAgICAgRU5BQkxFX05TX0FTU0VSVElPTlMgPSBOTzsKLSAgICAg
ICAgICAgICAgIEdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7Ci0gICAgICAgICAgICAg
ICBHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKLSAgICAgICAgICAgICAgIEdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOwotICAgICAgICAgICAgICAgR0NDX1dB
Uk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJST1I7Ci0gICAgICAgICAgICAgICBHQ0NfV0FS
Tl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOwotICAgICAgICAgICAgICAgR0NDX1dBUk5fVU5J
TklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKLSAgICAgICAgICAgICAgIEdDQ19XQVJOX1VOVVNFRF9G
VU5DVElPTiA9IFlFUzsKLSAgICAgICAgICAgICAgIEdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9
IFlFUzsKLSAgICAgICAgICAgICAgIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjk7Ci0g
ICAgICAgICAgICAgICBTREtST09UID0gbWFjb3N4OwotICAgICAgICAgICB9OwotICAgICAgICAg
ICBuYW1lID0gUmVsZWFzZTsKLSAgICAgICB9OwotICAgICAgIEMyNDY1OTEwMTg5MDJBQ0UwMDI5
MDkyRSAvKiBEZWJ1ZyAqLyA9IHsKLSAgICAgICAgICAgaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0gICAgICAgICAgIGJ1aWxkU2V0dGluZ3MgPSB7Ci0gICAgICAgICAgICAgICBBTFdBWVNf
U0VBUkNIX1VTRVJfUEFUSFMgPSBZRVM7Ci0gICAgICAgICAgICAgICBERUJVR19JTkZPUk1BVElP
Tl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKLSAgICAgICAgICAgICAgIEZSQU1FV09SS19T
RUFSQ0hfUEFUSFMgPSAoCi0gICAgICAgICAgICAgICAgICAgIiQoaW5oZXJpdGVkKSIsCi0gICAg
ICAgICAgICAgICAgICAgIi9Wb2x1bWVzL0RhdGEvV2ViS2l0LXN2bi0wMS9PcGVuU291cmNlL1dl
YktpdEJ1aWxkL0RlYnVnIiwKLSAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICBHQ0Nf
UFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwotICAgICAgICAgICAgICAgR0NDX1BSRUZJ
WF9IRUFERVIgPSAiIjsKLSAgICAgICAgICAgICAgIExEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0g
IlwiQGxvYWRlcl9wYXRoLy5cIiI7Ci0gICAgICAgICAgICAgICBMSU5LRVJfRElTUExBWVNfTUFO
R0xFRF9OQU1FUyA9IFlFUzsKLSAgICAgICAgICAgICAgIE9USEVSX0NGTEFHUyA9ICgKLSAgICAg
ICAgICAgICAgICAgICAiLWlmcmFtZXdvcmsiLAotICAgICAgICAgICAgICAgICAgICIkKFNES1JP
T1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1ld29ya3MvIiwKLSAgICAgICAgICAgICAgICk7
Ci0gICAgICAgICAgICAgICBPVEhFUl9MREZMQUdTID0gIi1sZWRpdCI7Ci0gICAgICAgICAgICAg
ICBQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwotICAgICAgICAgICAgICAgU0RLUk9P
VCA9IG1hY29zeC5pbnRlcm5hbDsKLSAgICAgICAgICAgfTsKLSAgICAgICAgICAgbmFtZSA9IERl
YnVnOwotICAgICAgIH07Ci0gICAgICAgQzI0NjU5MTExODkwMkFDRTAwMjkwOTJFIC8qIFJlbGVh
c2UgKi8gPSB7Ci0gICAgICAgICAgIGlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwotICAgICAg
ICAgICBidWlsZFNldHRpbmdzID0gewotICAgICAgICAgICAgICAgQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gWUVTOwotICAgICAgICAgICAgICAgREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ImR3YXJmLXdpdGgtZHN5bSI7Ci0gICAgICAgICAgICAgICBGUkFNRVdPUktfU0VBUkNIX1BBVEhT
ID0gKAotICAgICAgICAgICAgICAgICAgICIkKGluaGVyaXRlZCkiLAotICAgICAgICAgICAgICAg
ICAgICIvVm9sdW1lcy9EYXRhL1dlYktpdC1zdm4tMDEvT3BlblNvdXJjZS9XZWJLaXRCdWlsZC9E
ZWJ1ZyIsCi0gICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgR0NDX1BSRUNPTVBJTEVf
UFJFRklYX0hFQURFUiA9IFlFUzsKLSAgICAgICAgICAgICAgIEdDQ19QUkVGSVhfSEVBREVSID0g
IiI7Ci0gICAgICAgICAgICAgICBMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJcIkBsb2FkZXJf
cGF0aC8uXCIiOwotICAgICAgICAgICAgICAgTElOS0VSX0RJU1BMQVlTX01BTkdMRURfTkFNRVMg
PSBZRVM7Ci0gICAgICAgICAgICAgICBPVEhFUl9DRkxBR1MgPSAoCi0gICAgICAgICAgICAgICAg
ICAgIi1pZnJhbWV3b3JrIiwKLSAgICAgICAgICAgICAgICAgICAiJChTREtST09UKSQoU1lTVEVN
X0xJQlJBUllfRElSKS9GcmFtZXdvcmtzLyIsCi0gICAgICAgICAgICAgICApOwotICAgICAgICAg
ICAgICAgT1RIRVJfTERGTEFHUyA9ICItbGVkaXQiOwotICAgICAgICAgICAgICAgUFJPRFVDVF9O
QU1FID0gIiQoVEFSR0VUX05BTUUpIjsKLSAgICAgICAgICAgICAgIFNES1JPT1QgPSBtYWNvc3gu
aW50ZXJuYWw7Ci0gICAgICAgICAgIH07Ci0gICAgICAgICAgIG5hbWUgPSBSZWxlYXNlOwotICAg
ICAgIH07CisJCUMyNDY1OTBEMTg5MDJBQ0UwMDI5MDkyRSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRB
UkQgPSAiZ251KysweCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlD
TEFOR19FTkFCTEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJ
T04gPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJ
CUNMQU5HX1dBUk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5H
X1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9
IFlFUzsKKwkJCQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fT0JKQ19ST09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FU
RV9NRVRIT0RfTUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdD
Q19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0g
Tk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElN
SVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgK
KwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19T
WU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNfRVJS
T1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElP
TiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUID0gMTAuOTsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlD
MjQ2NTkwRTE4OTAyQUNFMDAyOTA5MkUgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiZ251
KysweCI7CisJCQkJQ0xBTkdfQ1hYX0xJQlJBUlkgPSAibGliYysrIjsKKwkJCQlDTEFOR19FTkFC
TEVfT0JKQ19BUkMgPSBZRVM7CisJCQkJQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7
CisJCQkJQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dB
Uk5fRElSRUNUX09CSkNfSVNBX1VTQUdFID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fRU1Q
VFlfQk9EWSA9IFlFUzsKKwkJCQlDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKKwkJ
CQlDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUNMQU5HX1dBUk5fT0JKQ19S
T09UX0NMQVNTID0gWUVTX0VSUk9SOworCQkJCUNMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0Rf
TUFUQ0ggPSBZRVM7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlFTkFCTEVfTlNfQVNTRVJU
SU9OUyA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0ND
X0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT04gPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVNf
RVJST1I7CisJCQkJR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5D
VElPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuOTsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlDMjQ2NTkxMDE4OTAyQUNFMDAyOTA5MkUg
LyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gWUVTOworCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUZSQU1FV09S
S19TRUFSQ0hfUEFUSFMgPSAiJChpbmhlcml0ZWQpIjsKKwkJCQlHQ0NfUFJFQ09NUElMRV9QUkVG
SVhfSEVBREVSID0gWUVTOworCQkJCUdDQ19QUkVGSVhfSEVBREVSID0gIiI7CisJCQkJTERfUlVO
UEFUSF9TRUFSQ0hfUEFUSFMgPSAiXCJAbG9hZGVyX3BhdGgvLlwiIjsKKwkJCQlMSU5LRVJfRElT
UExBWVNfTUFOR0xFRF9OQU1FUyA9IFlFUzsKKwkJCQlPVEhFUl9DRkxBR1MgPSAoCisJCQkJCSIt
aWZyYW1ld29yayIsCisJCQkJCSIkKFNES1JPT1QpJChTWVNURU1fTElCUkFSWV9ESVIpL0ZyYW1l
d29ya3MvIiwKKwkJCQkpOworCQkJCU9USEVSX0xERkxBR1MgPSAiLWxlZGl0IjsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3guaW50ZXJu
YWw7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlDMjQ2NTkxMTE4OTAyQUNFMDAy
OTA5MkUgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBZRVM7
CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJ
RlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICIkKGluaGVyaXRlZCkiOworCQkJCUdDQ19QUkVDT01Q
SUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CisJCQkJR0NDX1BSRUZJWF9IRUFERVIgPSAiIjsKKwkJ
CQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJcIkBsb2FkZXJfcGF0aC8uXCIiOworCQkJCUxJ
TktFUl9ESVNQTEFZU19NQU5HTEVEX05BTUVTID0gWUVTOworCQkJCU9USEVSX0NGTEFHUyA9ICgK
KwkJCQkJIi1pZnJhbWV3b3JrIiwKKwkJCQkJIiQoU0RLUk9PVCkkKFNZU1RFTV9MSUJSQVJZX0RJ
UikvRnJhbWV3b3Jrcy8iLAorCQkJCSk7CisJCQkJT1RIRVJfTERGTEFHUyA9ICItbGVkaXQiOwor
CQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29z
eC5pbnRlcm5hbDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKIC8qIEVuZCBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLwotICAgICAgIEMyNDY1OEZDMTg5MDJBQ0UwMDI5MDkyRSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImpzYy1jbGkiICovID0gewotICAgICAg
ICAgICBpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotICAgICAgICAgICBidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAotICAgICAgICAgICAgICAgQzI0NjU5MEQxODkwMkFDRTAwMjkwOTJFIC8qIERl
YnVnICovLAotICAgICAgICAgICAgICAgQzI0NjU5MEUxODkwMkFDRTAwMjkwOTJFIC8qIFJlbGVh
c2UgKi8sCi0gICAgICAgICAgICk7Ci0gICAgICAgICAgIGRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKLSAgICAgICAgICAgZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKLSAgICAgICB9OwotICAgICAgIEMyNDY1OTBGMTg5MDJBQ0UwMDI5MDkyRSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAianNjLWNsaSIgKi8gPSB7Ci0g
ICAgICAgICAgIGlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0gICAgICAgICAgIGJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCi0gICAgICAgICAgICAgICBDMjQ2NTkxMDE4OTAyQUNFMDAyOTA5MkUg
LyogRGVidWcgKi8sCi0gICAgICAgICAgICAgICBDMjQ2NTkxMTE4OTAyQUNFMDAyOTA5MkUgLyog
UmVsZWFzZSAqLywKLSAgICAgICAgICAgKTsKLSAgICAgICAgICAgZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOwotICAgICAgICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBS
ZWxlYXNlOwotICAgICAgIH07CisJCUMyNDY1OEZDMTg5MDJBQ0UwMDI5MDkyRSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImpzYy1jbGkiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
QzI0NjU5MEQxODkwMkFDRTAwMjkwOTJFIC8qIERlYnVnICovLAorCQkJCUMyNDY1OTBFMTg5MDJB
Q0UwMDI5MDkyRSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCUMyNDY1OTBGMTg5MDJBQ0UwMDI5MDkyRSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAianNjLWNsaSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlDMjQ2NTkxMDE4
OTAyQUNFMDAyOTA5MkUgLyogRGVidWcgKi8sCisJCQkJQzI0NjU5MTExODkwMkFDRTAwMjkwOTJF
IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKIC8qIEVu
ZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLSAgIH07Ci0gICByb290T2JqZWN0ID0g
QzI0NjU4RjkxODkwMkFDRTAwMjkwOTJFIC8qIFByb2plY3Qgb2JqZWN0ICovOworCX07CisJcm9v
dE9iamVjdCA9IEMyNDY1OEY5MTg5MDJBQ0UwMDI5MDkyRSAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
IH0KSW5kZXg6IFRvb2xzL2pzYy1jbGkvanNjLWNsaS9DTElJbnN0YW5jZS5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL2pzYy1jbGkvanNjLWNsaS9DTElJbnN0YW5jZS5tCShyZXZpc2lvbiAxNjQ3MTcp
CisrKyBUb29scy9qc2MtY2xpL2pzYy1jbGkvQ0xJSW5zdGFuY2UubQkod29ya2luZyBjb3B5KQpA
QCAtNjcsNiArNjcsNyBAQCAtIChpZClpbml0CiAKIC0gKHZvaWQpbG9hZEZpbGU6KE5TU3RyaW5n
ICopcGF0aAogeworICAgIF9iYXNlRmlsZSA9IHBhdGg7CiAgICAgW19qc1RocmVhZCBsb2FkRmls
ZTpwYXRoXTsKIH0KIApJbmRleDogVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTTW9kdWxlLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvanNjLWNsaS9qc2MtY2xpL0pTTW9kdWxlLm0JKHJldmlzaW9uIDE2
NDcxNykKKysrIFRvb2xzL2pzYy1jbGkvanNjLWNsaS9KU01vZHVsZS5tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNiw2ICsyNiw4IEBACiAjaW1wb3J0ICJKU01vZHVsZS5oIgogI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KIAorI2ltcG9ydCAiSU9Nb2R1bGUuaCIKKwogQGlt
cGxlbWVudGF0aW9uIEpTTW9kdWxlIHsKICAgICBKU01hbmFnZWRWYWx1ZSAqX2V4cG9ydHM7CiAg
ICAgTlNTdHJpbmcgKl9pZDsKQEAgLTQwLDkgKzQyLDEyIEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkg
KmNvcmVNb2R1bGVzKCkKIHsKICAgICBzdGF0aWMgTlNEaWN0aW9uYXJ5ICptb2R1bGVzID0gMDsK
ICAgICBpZiAoIW1vZHVsZXMpIHsKKyAgICAgICAgTlNTdHJpbmcgKmJhc2VEaXIgPSBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZVBhdGhdOworICAgICAgICBOU1N0cmluZyAqbGliRGlyID0g
W2Jhc2VEaXIgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAibGliIl07CisgICAgICAg
IAogICAgICAgICAvLyBQdXQgbG9jYXRpb24gb2YgYnVpbHQtaW4gbW9kdWxlcyBoZXJlLgogICAg
ICAgICBtb2R1bGVzID0gQHsKLSAgICAgICAgICAgIC8vQCJ1dGlsIjogW2xpYkRpciBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ1dGlsLmpzIl0sCisgICAgICAgICAgICBAImlvIjog
W2xpYkRpciBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJpby5qcyJdCiAgICAgICAg
IH07CiAgICAgfQogICAgIHJldHVybiBtb2R1bGVzOwpAQCAtNTksNyArNjQsNyBAQCBzdGF0aWMg
Q2xhc3MgY2xhc3NGb3JNb2R1bGUoTlNTdHJpbmcgKm1vCiAgICAgaWYgKCFtb2R1bGVDbGFzc2Vz
KSB7CiAgICAgICAgIC8vIFB1dCBjbGFzc2VzIGZvciBidWlsdC1pbiBtb2R1bGVzIGhlcmUuCiAg
ICAgICAgIG1vZHVsZUNsYXNzZXMgPSBAewotICAgICAgICAgICAgLy9AInV0aWwiOiBbSlNVdGls
TW9kdWxlIGNsYXNzXSwKKyAgICAgICAgICAgIEAiaW8iOiBbSU9Nb2R1bGUgY2xhc3NdCiAgICAg
ICAgIH07CiAgICAgfQogICAgIApAQCAtMjk0LDQgKzI5OSw0IEBAIC0gKEpTVmFsdWUgKilleHBv
cnRzCiAgICAgcmV0dXJuIFtfZXhwb3J0cyB2YWx1ZV07CiB9CiAKLUBlbmQKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCitAZW5kCkluZGV4OiBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL0lP
TW9kdWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9JT01vZHVs
ZS5oCShyZXZpc2lvbiAwKQorKysgVG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9JT01vZHVsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJK
U01vZHVsZS5oIgorCitAaW50ZXJmYWNlIElPTW9kdWxlIDogSlNNb2R1bGUKKworLSAoSlNWYWx1
ZSAqKXBsYXRmb3JtT2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0OworCitAZW5k
CkluZGV4OiBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL0lPTW9kdWxlLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9JT01vZHVsZS5tCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9JT01vZHVsZS5tCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMTY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiSU9Nb2R1bGUuaCIKKyNpbXBvcnQg
PEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+CisKKyNpbXBvcnQgPHN0ZGlvLmg+CisK
KworQGludGVyZmFjZSBGaWxlSGFuZGxlIDogTlNPYmplY3QKKy0gKGluc3RhbmNldHlwZSkgaW5p
dFdpdGhGaWxlU3RyZWFtOihGSUxFKilmaWxlU3RyZWFtOworCitAcHJvcGVydHkgKG5vbmF0b21p
YykgaW50IGZkOworQHByb3BlcnR5IChub25hdG9taWMpIEZJTEUqIHN0cmVhbTsKK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIEZpbGVIYW5kbGUKKworQHN5bnRoZXNpemUgc3RyZWFtOworCistIChp
bnN0YW5jZXR5cGUpIGluaXRXaXRoRmlsZVN0cmVhbTooRklMRSopZmlsZVN0cmVhbQoreworICAg
IHNlbGYgPSBbc3VwZXIgaW5pdF07CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIHN0cmVhbSA9IGZpbGVTdHJlYW07CisgICAgCisgICAgcmV0dXJuIHNlbGY7
Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIElPTW9kdWxlCisKK3N0YXRpYyB2b2lkIHNl
dEVycm9yV2l0aEVycm5vKCkKK3sKKyAgICBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UgPSBzdHJl
cnJvcihlcnJubyk7CisgICAgSlNWYWx1ZSAqZXhjZXB0aW9uID0gW0pTVmFsdWUgdmFsdWVXaXRo
TmV3RXJyb3JGcm9tTWVzc2FnZTpAKGVycm9yTWVzc2FnZSkgaW5Db250ZXh0OltKU0NvbnRleHQg
Y3VycmVudENvbnRleHRdXTsKKyAgICBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XS5leGNlcHRp
b24gPSBleGNlcHRpb247Cit9CisKK3N0YXRpYyB2b2lkIHRocm93RXJyb3JXaXRoTWVzc2FnZShO
U1N0cmluZyAqbWVzc2FnZSkKK3sKKyAgICBbSlNDb250ZXh0IGN1cnJlbnRDb250ZXh0XS5leGNl
cHRpb24gPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdFcnJvckZyb21NZXNzYWdlOm1lc3NhZ2UgaW5D
b250ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXTsKK30KKworLSAoSlNWYWx1ZSAqKXBs
YXRmb3JtT2JqZWN0SW5Db250ZXh0OihKU0NvbnRleHQgKiljb250ZXh0Cit7CisgICAgSlNWYWx1
ZSAqcGxhdGZvcm1PYmplY3QgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6
Y29udGV4dF07CisgICAgCisgICAgcGxhdGZvcm1PYmplY3RbQCJvcGVuIl0gPSBeKE5TU3RyaW5n
ICpmaWxlbmFtZSwgTlNTdHJpbmcgKmZpbGVNb2RlKXsKKyAgICAgICAgY29uc3QgY2hhciogbmFt
ZSA9IFtmaWxlbmFtZSBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107
CisgICAgICAgIGNvbnN0IGNoYXIqIG1vZGUgPSBbZmlsZU1vZGUgY1N0cmluZ1VzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgICAgICBpZiAoIW5hbWUpIHsKKyAgICAgICAg
ICAgIHRocm93RXJyb3JXaXRoTWVzc2FnZShAIkNvdWxkIG5vdCBjb252ZXJ0IGZpbGVuYW1lIHVz
aW5nIFVURjggZW5jb2RpbmcuIik7CisgICAgICAgICAgICByZXR1cm4gKEZpbGVIYW5kbGUgKilu
aWw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICghbW9kZSkgeworICAgICAgICAg
ICAgdGhyb3dFcnJvcldpdGhNZXNzYWdlKEAiQ291bGQgbm90IGNvbnZlcnQgZmlsZSBtb2RlIHVz
aW5nIFVURjggZW5jb2RpbmcuIik7CisgICAgICAgICAgICByZXR1cm4gKEZpbGVIYW5kbGUgKilu
aWw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZJTEUqIHJlc3VsdCA9IGZvcGVuKG5h
bWUsIG1vZGUpOworICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgc2V0RXJyb3JX
aXRoRXJybm8oKTsKKyAgICAgICAgICAgIHJldHVybiAoRmlsZUhhbmRsZSAqKW5pbDsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gW1tGaWxlSGFuZGxlIGFsbG9jXSBpbml0V2l0aEZpbGVTdHJl
YW06cmVzdWx0XTsKKyAgICB9OworICAgIAorICAgIHBsYXRmb3JtT2JqZWN0W0AicmVhZCJdID0g
XihGaWxlSGFuZGxlICpoYW5kbGUsIHNpemVfdCBieXRlcyl7CisgICAgICAgIGlmICghaGFuZGxl
KSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yV2l0aE1lc3NhZ2UoQCJJbnZhbGlkIGZpbGUgaGFu
ZGxlLiIpOworICAgICAgICAgICAgcmV0dXJuIChKU1ZhbHVlICopbmlsOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBjaGFyKiBidWZmZXIgPSAoY2hhciopbWFsbG9jKHNpemVvZihjaGFy
KSAqIChieXRlcyArIDEpKTsKKyAgICAgICAgc2l6ZV90IHJlc3VsdCA9IGZyZWFkKGJ1ZmZlciwg
c2l6ZW9mKGNoYXIpLCBieXRlcywgaGFuZGxlLnN0cmVhbSk7CisgICAgICAgIGlmIChyZXN1bHQg
PCBieXRlcyAmJiBmZXJyb3IoaGFuZGxlLnN0cmVhbSkpIHsKKyAgICAgICAgICAgIHNldEVycm9y
V2l0aEVycm5vKCk7CisgICAgICAgICAgICBmcmVlKGJ1ZmZlcik7CisgICAgICAgICAgICByZXR1
cm4gKEpTVmFsdWUgKiluaWw7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyW3Jlc3VsdF0gPSAn
XDAnOworICAgICAgICBKU1ZhbHVlICpyZXR1cm5WYWx1ZSA9IFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDpAKGJ1ZmZlcikgaW5Db250ZXh0OltKU0NvbnRleHQgY3VycmVudENvbnRleHRdXTsKKyAg
ICAgICAgZnJlZShidWZmZXIpOworICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgfTsK
KyAgICAKKyAgICBwbGF0Zm9ybU9iamVjdFtAIndyaXRlIl0gPSBeKEZpbGVIYW5kbGUgKmhhbmRs
ZSwgTlNTdHJpbmcgKnN0cmluZyl7CisgICAgICAgIGlmICghaGFuZGxlKSB7CisgICAgICAgICAg
ICB0aHJvd0Vycm9yV2l0aE1lc3NhZ2UoQCJJbnZhbGlkIGZpbGUgaGFuZGxlLiIpOworICAgICAg
ICAgICAgcmV0dXJuIChKU1ZhbHVlICopbmlsOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBjb25zdCBjaGFyKiBzID0gW3N0cmluZyBjU3RyaW5nVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CisgICAgICAgIGlmICghcykgeworICAgICAgICAgICAgdGhyb3dFcnJvcldp
dGhNZXNzYWdlKEAiQ291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHVzaW5nIFVURjggZW5jb2Rpbmcu
Iik7CisgICAgICAgICAgICByZXR1cm4gKEpTVmFsdWUgKiluaWw7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHNpemVfdCByZXN1bHQgPSBmd3JpdGUocywgc2l6ZW9mKGNoYXIpLCBbc3Ry
aW5nIGxlbmd0aF0sIGhhbmRsZS5zdHJlYW0pOworICAgICAgICBpZiAocmVzdWx0IDwgW3N0cmlu
ZyBsZW5ndGhdICYmIGZlcnJvcihoYW5kbGUuc3RyZWFtKSkgeworICAgICAgICAgICAgc2V0RXJy
b3JXaXRoRXJybm8oKTsKKyAgICAgICAgICAgIHJldHVybiAoSlNWYWx1ZSAqKW5pbDsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OkAocmVzdWx0KSBp
bkNvbnRleHQ6W0pTQ29udGV4dCBjdXJyZW50Q29udGV4dF1dOworICAgIH07CisgICAgCisgICAg
cGxhdGZvcm1PYmplY3RbQCJyZWFkTGluZSJdID0gXihGaWxlSGFuZGxlICpoYW5kbGUpeworICAg
ICAgICBpZiAoIWhhbmRsZSkgeworICAgICAgICAgICAgdGhyb3dFcnJvcldpdGhNZXNzYWdlKEAi
SW52YWxpZCBmaWxlIGhhbmRsZS4iKTsKKyAgICAgICAgICAgIHJldHVybiAoTlNTdHJpbmcgKilu
aWw7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgY2hhciogbGlu
ZSA9IGZnZXRsbihoYW5kbGUuc3RyZWFtLCAmbGVuZ3RoKTsKKyAgICAgICAgaWYgKCFsaW5lICYm
IGZlcnJvcihoYW5kbGUuc3RyZWFtKSkgeworICAgICAgICAgICAgc2V0RXJyb3JXaXRoRXJybm8o
KTsKKyAgICAgICAgICAgIHJldHVybiAoTlNTdHJpbmcgKiluaWw7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoQnl0ZXM6bGluZSBsZW5ndGg6bGVu
Z3RoIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICB9OworICAgIAorICAgIHBs
YXRmb3JtT2JqZWN0W0AiY2xvc2UiXSA9IF4oRmlsZUhhbmRsZSAqaGFuZGxlKXsKKyAgICAgICAg
aW50IHJlc3VsdCA9IGZjbG9zZShoYW5kbGUuc3RyZWFtKTsKKyAgICAgICAgaWYgKHJlc3VsdCAh
PSAwKQorICAgICAgICAgICAgc2V0RXJyb3JXaXRoRXJybm8oKTsKKyAgICAgICAgcmV0dXJuIChK
U1ZhbHVlICopbmlsOworICAgIH07CisgICAgCisgICAgcGxhdGZvcm1PYmplY3RbQCJzdGRvdXQi
XSA9IFtbRmlsZUhhbmRsZSBhbGxvY10gaW5pdFdpdGhGaWxlU3RyZWFtOnN0ZG91dF07CisgICAg
cGxhdGZvcm1PYmplY3RbQCJzdGRlcnIiXSA9IFtbRmlsZUhhbmRsZSBhbGxvY10gaW5pdFdpdGhG
aWxlU3RyZWFtOnN0ZGVycl07CisgICAgcGxhdGZvcm1PYmplY3RbQCJzdGRpbiJdID0gW1tGaWxl
SGFuZGxlIGFsbG9jXSBpbml0V2l0aEZpbGVTdHJlYW06c3RkaW5dOworICAgIAorICAgIGFzc2Vy
dCghY29udGV4dC5leGNlcHRpb24pOworICAgIAorICAgIHJldHVybiBwbGF0Zm9ybU9iamVjdDsK
K30KKworQGVuZApJbmRleDogVG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9pby5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9qc2MtY2xpL2pzYy1jbGkvbGliL2lvLmpzCShyZXZpc2lvbiAwKQorKysg
VG9vbHMvanNjLWNsaS9qc2MtY2xpL2xpYi9pby5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQG1vZHVsZSBpbworICovCisKKyhmdW5jdGlv
bihwbGF0Zm9ybSkgeworCisvKioKKyAqIENyZWF0ZXMgYSBuZXcgc3RyZWFtIGZyb20gYSBwYXJ0
aWN1bGFyIGZpbGUgaGFuZGxlLgorICogQGNsYXNzCisgKi8KK3ZhciBTdHJlYW0gPSBmdW5jdGlv
bihoYW5kbGUpIHsKKyAgICB0aGlzLl9oYW5kbGUgPSBoYW5kbGU7CisgICAgaWYgKCFoYW5kbGUp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiSGFuZGxlIG11c3QgYmUgbm9uLW51bGwiKTsKK307
CisKKy8qKgorICogQ2xvc2VzIGEgU3RyZWFtLgorICogQG1ldGhvZAorICovCitTdHJlYW0ucHJv
dG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CisgICAgdHJ5IHsKKyAgICAgICAgcGxhdGZvcm0u
Y2xvc2UodGhpcy5faGFuZGxlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRocm93IGU7
CisgICAgfQorfTsKKworLyoqCisgKiBSZWFkcyBjaGFyYWN0ZXJzIGZyb20gYSBTdHJlYW0uCisg
KiBAbWV0aG9kCisgKiBAcGFyYW0ge251bWJlcn0gbiAtIFRoZSBudW1iZXIgb2YgY2hhcmFjdGVy
cyB0byByZWFkIGZyb20gdGhlIFN0cmVhbS4KKyAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyBj
b250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIHRoYXQgd2VyZSByZWFkLgorICovCitTdHJlYW0ucHJv
dG90eXBlLnJlYWQgPSBmdW5jdGlvbihuKSB7CisgICAgcmV0dXJuIHBsYXRmb3JtLnJlYWQodGhp
cy5faGFuZGxlLCArbik7Cit9OworCisvKioKKyAqIFJlYWRzIGNoYXJhY3RlcnMgZnJvbSBhIFN0
cmVhbSB1bnRpbCBpdCByZWFjaGVzIGEgbmV3bGluZSBvciB0aGUgZW5kIG9mIHRoZSBTdHJlYW0u
CisgKiBAbWV0aG9kCisgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2hhcmFjdGVycyByZWFkIGZy
b20gdGhlIFN0cmVhbSBvciB0aGUgZW1wdHkgc3RyaW5nCisgKiAgaWYgdGhlcmUgYXJlIG5vIG1v
cmUgY2hhcmFjdGVycyB0byByZWFkLgorICovCitTdHJlYW0ucHJvdG90eXBlLnJlYWRMaW5lID0g
ZnVuY3Rpb24oKSB7CisgICAgcmV0dXJuIHBsYXRmb3JtLnJlYWRMaW5lKHRoaXMuX2hhbmRsZSk7
Cit9OworCisvKioKKyAqIFdyaXRlcyB0aGUgcHJvdmlkZWQgc3RyaW5nIHRvIHRoZSBTdHJlYW0u
CisgKiBAbWV0aG9kCisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHdyaXRlIHRvIHRoZSBTdHJl
YW0uCisgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRl
bi4KKyAqLworU3RyZWFtLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHMpIHsKKyAgICByZXR1
cm4gcGxhdGZvcm0ud3JpdGUodGhpcy5faGFuZGxlLCAnJyArIHMpOworfTsKKworLyoqCisgKiBX
cml0ZXMgdGhlIHByb3ZpZGVkIHN0cmluZyB0byB0aGUgU3RyZWFtIGFmdGVyIGFwcGVuZGluZyBh
IG5ld2xpbmUuCisgKiBAbWV0aG9kCisgKiBAcGFyYW0gcyBUaGUgc3RyaW5nIHRvIHdyaXRlIHRv
IHRoZSBTdHJlYW0uCisgKi8KK1N0cmVhbS5wcm90b3R5cGUucHJpbnQgPSBmdW5jdGlvbihzKSB7
CisgICAgdGhpcy53cml0ZShzICsgIlxuIik7Cit9OworCisvKioKKyAqIENvbnZlbmllbmNlIGZ1
bmN0aW9uIGZvciBpdGVyYXRpbmcgb3ZlciB0aGUgbGluZXMgb2YgYSBTdHJlYW0gYW5kIHBhc3Np
bmcgZWFjaCBsaW5lIHRvIGEgY2FsbGJhY2suCisgKiBAbWV0aG9kCisgKiBAcGFyYW0gY2FsbGJh
Y2sgVGhlIGZ1bmN0aW9uIHRvIHdoaWNoIGVhY2ggbGluZSBpbiB0aGUgU3RyZWFtIGlzIHBhc3Nl
ZC4gSWYgbm8gY2FsbGJhY2sgaXMgcHJvdmlkZWQgdGhlbgorICogIHRoaXMgbWV0aG9kIGl0ZXJh
dGVzIHRvIHRoZSBlbmQgb2YgdGhlIFN0cmVhbS4KKyAqLworU3RyZWFtLnByb3RvdHlwZS5mb3JF
YWNoTGluZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgdmFyIG5leHRMaW5lID0gdGhpcy5yZWFkTGluZSgpOworICAgICAgICBpZiAobmV4dExpbmUu
bGVuZ3RoID09PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjYWxsYmFjaykK
KyAgICAgICAgICAgIGNhbGxiYWNrKG5leHRMaW5lKTsKKyAgICB9Cit9OworCit2YXIgc3Rkb3V0
ID0gbmV3IFN0cmVhbShwbGF0Zm9ybS5zdGRvdXQpOwordmFyIHN0ZGVyciA9IG5ldyBTdHJlYW0o
cGxhdGZvcm0uc3RkZXJyKTsKK3ZhciBzdGRpbiA9IG5ldyBTdHJlYW0ocGxhdGZvcm0uc3RkaW4p
OworZXhwb3J0cy5zdGRvdXQgPSBzdGRvdXQ7CitleHBvcnRzLnN0ZGVyciA9IHN0ZGVycjsKK2V4
cG9ydHMuc3RkaW4gPSBzdGRpbjsKKworLyoqCisgKiBDcmVhdGVzIGEgbmV3IFN0cmVhbSBmb3Ig
YSBmaWxlLgorICogQGZ1bmN0aW9uCisgKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWUgLSBUaGUg
cGF0aCB0byB0aGUgZmlsZSB0byBiZSBvcGVuZWQuCisgKiBAcGFyYW0ge3N0cmluZ30gbW9kZSAt
IFRoZSBtb2RlIGZvciB0aGUgdG8tYmUtb3BlbmVkIGZpbGUuCisgKiBAcGFyYW0ge2Z1bmN0aW9u
fSBbY2FsbGJhY2tdIC0gT3B0aW9uYWwgY2FsbGJhY2suIElmIHByb3ZpZGVkLCB0aGUgY2FsbGJh
Y2sgd2lsbCBiZSBpbnZva2VkIGFmdGVyIHRoZSBmaWxlIGhhcyBiZWVuIG9wZW5lZCwgYW5kIHRo
ZSBmaWxlIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHRoZSBjYWxsYmFjayBoYXMgY29tcGxldGVkLgor
ICogQHJldHVybnMge3VuZGVmaW5lZHxTdHJlYW19IFVuZGVmaW5lZCBpZiBhIGNhbGxiYWNrIGlz
IHByb3ZpZGVkLCB0aGUgcmVzdWx0aW5nIFN0cmVhbSBvdGhlcndpc2UuCisgKi8KK2V4cG9ydHMu
b3BlbiA9IGZ1bmN0aW9uKGZpbGVuYW1lLCBtb2RlLCBjYWxsYmFjaykgeworICAgIHRyeSB7Cisg
ICAgICAgIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKHBsYXRmb3JtLm9wZW4oZmlsZW5hbWUsICcn
K21vZGUpKTsKKyAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgIHJldHVybiBzdHJl
YW07CisgICAgICAgIGNhbGxiYWNrKHN0cmVhbSk7CisgICAgICAgIHN0cmVhbS5jbG9zZSgpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgdGhyb3cgZTsKKyAgICB9Cit9OworCisvKioKKyAq
IFByaW50cyBhIHByb21wdCBhbmQgd2FpdHMgZm9yIHVzZXIgaW5wdXQuCisgKiBAZnVuY3Rpb24K
KyAqIEBwYXJhbSB7c3RyaW5nfSBbcHJvbXB0XSAtIE9wdGlvbmFsIHByb21wdCB0byBwcmludCBw
cmlvciB0byB3YWl0aW5nIGZvciB1c2VyIGlucHV0LgorICogQHJldHVybnMge3N0cmluZ30gVGhl
IGNoYXJhY3RlcnMgcmVhZCBmcm9tIHN0ZGluLgorICovCitleHBvcnRzLmlucHV0ID0gZnVuY3Rp
b24ocHJvbXB0KSB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKHByb21wdCkKKyAgICAgICAgICAg
IHN0ZG91dC53cml0ZShwcm9tcHQpOworICAgICAgICByZXR1cm4gc3RkaW4ucmVhZExpbmUoKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRocm93IGU7CisgICAgfQorfTsKKworLyoqCisg
KiBJZGVudGlmaWVzIHdoZXRoZXIgb3Igbm90IGFuIG9iamVjdCBpcyBhIFN0cmVhbS4KKyAqIEBm
dW5jdGlvbgorICogQHBhcmFtIHtvYmplY3R9IG8gLSBUaGUgb2JqZWN0IHRvIHRlc3QuCisgKiBA
cmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgU3RyZWFtLCBmYWxzZSBv
dGhlcndpc2UuCisgKi8KK2V4cG9ydHMuaXNTdHJlYW0gPSBmdW5jdGlvbihvKSB7CisgICAgcmV0
dXJuIG8gaW5zdGFuY2VvZiBTdHJlYW07Cit9OworCisvKioKKyAqIEdsb2JhbCBjb252ZW5pZW5j
ZSBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgdG8gc3Rkb3V0LiBFcXVpdmFsZW50IHRvIGlvLnN0ZG91
dC5wcmludC4KKyAqIEBmdW5jdGlvbgorICogQHBhcmFtIHtzdHJpbmd9IHMgLSBUaGUgc3RyaW5n
IHRvIHByaW50LgorICovCitwcmludCA9IGZ1bmN0aW9uKHMpIHsKKyAgICBzdGRvdXQucHJpbnQo
cyk7Cit9OworCit9KShwbGF0Zm9ybSk7Cg==
</data>
<flag name="review"
          id="249388"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>