<?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>47977</bug_id>
          
          <creation_ts>2010-10-20 02:50:39 -0700</creation_ts>
          <short_desc>Merge the Unicode backends of BrewMP and WinCE</short_desc>
          <delta_ts>2012-07-27 14:15:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>92539</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>eric</cc>
    
    <cc>skyul</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296716</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-20 02:50:39 -0700</bug_when>
    <thetext>see bug 45716</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296731</commentid>
    <comment_count>1</comment_count>
      <attachid>71271</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-20 04:00:48 -0700</bug_when>
    <thetext>Created attachment 71271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296752</commentid>
    <comment_count>2</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-20 06:08:08 -0700</bug_when>
    <thetext>@kwangseo: can you give a short ok to this patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296799</commentid>
    <comment_count>3</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2010-10-20 07:59:11 -0700</bug_when>
    <thetext>ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298020</commentid>
    <comment_count>4</comment_count>
      <attachid>71271</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-10-22 09:50:37 -0700</bug_when>
    <thetext>Comment on attachment 71271
Patch

We should land manually to keep the svn history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320590</commentid>
    <comment_count>5</comment_count>
      <attachid>71271</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-10 22:14:31 -0800</bug_when>
    <thetext>Comment on attachment 71271
Patch

Seems OK.  The CQ should still track moves fine, but feel free to land this by hand.

What makes MinimalICU minimal?  Is it compiled with a --minimal option or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320629</commentid>
    <comment_count>6</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-11 02:32:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 71271 [details])
&gt; Seems OK.  The CQ should still track moves fine, but feel free to land this by hand.
&gt; 
&gt; What makes MinimalICU minimal?  Is it compiled with a --minimal option or something?
It&apos;s only &quot;minimal&quot; copy of ICU stuff which is required for webkit. AFAIK there is no --minimal option.
Maybe you have a better name for it?

I also want to unify WebCore/platform/text/wince/TextBreakIteratorWinCE.cpp and WebCore/platform/text/brew/TextBreakIteratorBrew.cpp and give it a better name. Maybe this name can match the &quot;unicode backend name&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324821</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-20 22:45:58 -0800</bug_when>
    <thetext>I&apos;m confused as to why icu/ has anything more than the &quot;required bits for webkit&quot;.  How is your new minimal icu different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598200</commentid>
    <comment_count>8</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-04-09 02:55:03 -0700</bug_when>
    <thetext>Code for BREW MP has been removed in r95934.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681081</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-07-27 14:15:15 -0700</bug_when>
    <thetext>Brew is dead and gone...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681082</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-07-27 14:15:32 -0700</bug_when>
    <thetext>nm. redundant comment.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71271</attachid>
            <date>2010-10-20 04:00:48 -0700</date>
            <delta_ts>2010-12-10 22:14:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47977.patch</filename>
            <type>text/plain</type>
            <size>49970</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzAxNDIpCisrKyBKYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0xMC0yMCAgUGF0cmlj
ayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZSB0aGUgVW5pY29kZSBiYWNrZW5kcyBvZiBC
cmV3TVAgYW5kIFdpbkNFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00Nzk3NworCisgICAgICAgIFRoZXJlIGlzIG5vdGhpbmcgcGxhdGZvcm0gc3BlY2lm
aWMgaW4gdGhlIEJyZXdNUCBhbiBXaW5DRSBmaWxlcyBmb3IgVW5pY29kZS4KKyAgICAgICAgVGhl
eSBhcmUgb25seSBtaW5pbWFsIGNvcGllcyBvZiB0aGUgSUNVIGxpYnJhcnkuCisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdW5pY29kZS9Vbmljb2RlLmg6CisgICAg
ICAgICogd3RmL3VuaWNvZGUvYnJldzogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdW5pY29kZS9i
cmV3L1VuaWNvZGVCcmV3LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdW5pY29kZS9icmV3
L1VuaWNvZGVCcmV3Lmg6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3VuaWNvZGUvbWluaW1hbGlj
dTogQWRkZWQuCisgICAgICAgICogd3RmL3VuaWNvZGUvbWluaW1hbGljdS9Vbmljb2RlTWluaW1h
bElDVS5jcHA6IENvcGllZCBmcm9tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL3dpbmNlL1Vu
aWNvZGVXaW5DRS5jcHAuCisgICAgICAgIChXVEY6OlVuaWNvZGU6OmRpcmVjdGlvbik6CisgICAg
ICAgIChXVEY6OlVuaWNvZGU6OmNhdGVnb3J5KToKKyAgICAgICAgKFdURjo6VW5pY29kZTo6ZGVj
b21wb3NpdGlvblR5cGUpOgorICAgICAgICAoV1RGOjpVbmljb2RlOjpjb21iaW5pbmdDbGFzcyk6
CisgICAgICAgIChXVEY6OlVuaWNvZGU6Om1pcnJvcmVkQ2hhcik6CisgICAgICAgIChXVEY6OlVu
aWNvZGU6OmRpZ2l0VmFsdWUpOgorICAgICAgICAqIHd0Zi91bmljb2RlL21pbmltYWxpY3UvVW5p
Y29kZU1pbmltYWxJQ1UuaDogQ29waWVkIGZyb20gSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUv
d2luY2UvVW5pY29kZVdpbkNFLmguCisgICAgICAgIChXVEY6OlVuaWNvZGU6Omhhc0xpbmVCcmVh
a2luZ1Byb3BlcnR5Q29tcGxleENvbnRleHRPcklkZW9ncmFwaGljKToKKyAgICAgICAgKiB3dGYv
dW5pY29kZS93aW5jZTogUmVtb3ZlZC4KKyAgICAgICAgKiB3dGYvdW5pY29kZS93aW5jZS9Vbmlj
b2RlV2luQ0UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi91bmljb2RlL3dpbmNlL1VuaWNv
ZGVXaW5DRS5oOiBSZW1vdmVkLgorCiAyMDEwLTEwLTE5ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxA
Y29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpJbmRl
eDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gNzAxNDIpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTcyLDEwICs1NzIsOCBAQAogCiAj
aWYgUExBVEZPUk0oUVQpCiAjZGVmaW5lIFdURl9VU0VfUVQ0X1VOSUNPREUgMQotI2VsaWYgT1Mo
V0lOQ0UpCi0jZGVmaW5lIFdURl9VU0VfV0lOQ0VfVU5JQ09ERSAxCi0jZWxpZiBQTEFURk9STShC
UkVXTVApCi0jZGVmaW5lIFdURl9VU0VfQlJFV01QX1VOSUNPREUgMQorI2VsaWYgT1MoV0lOQ0Up
IHx8IFBMQVRGT1JNKEJSRVdNUCkKKyNkZWZpbmUgV1RGX1VTRV9NSU5JTUFMSUNVX1VOSUNPREUg
MQogI2VsaWYgUExBVEZPUk0oR1RLKQogLyogVGhlIEdUSysgVW5pY29kZSBiYWNrZW5kIGlzIGNv
bmZpZ3VyYWJsZSAqLwogI2Vsc2UKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1Vu
aWNvZGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL1VuaWNv
ZGUuaAkocmV2aXNpb24gNzAxNDIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9Vbmlj
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSw4IEBACiAjaW5jbHVkZSA8d3RmL3Vu
aWNvZGUvaWN1L1VuaWNvZGVJY3UuaD4KICNlbGlmIFVTRShHTElCX1VOSUNPREUpCiAjaW5jbHVk
ZSA8d3RmL3VuaWNvZGUvZ2xpYi9Vbmljb2RlR0xpYi5oPgotI2VsaWYgVVNFKFdJTkNFX1VOSUNP
REUpCi0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmg+Ci0jZWxpZiBV
U0UoQlJFV01QX1VOSUNPREUpCi0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvYnJldy9Vbmljb2RlQnJl
dy5oPgorI2VsaWYgVVNFKE1JTklNQUxJQ1VfVU5JQ09ERSkKKyNpbmNsdWRlIDx3dGYvdW5pY29k
ZS9taW5pbWFsaWN1L1VuaWNvZGVNaW5pbWFsSUNVLmg+CiAjZWxzZQogI2Vycm9yICJVbmtub3du
IFVuaWNvZGUgaW1wbGVtZW50YXRpb24iCiAjZW5kaWYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0
Zi91bmljb2RlL2JyZXcvVW5pY29kZUJyZXcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNjcmlw
dENvcmUvd3RmL3VuaWNvZGUvYnJldy9Vbmljb2RlQnJldy5jcHAJKHJldmlzaW9uIDcwMTQyKQor
KysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvYnJldy9Vbmljb2RlQnJldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTgxICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEdl
b3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFs
ZXhleSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAx
MDAsIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlVuaWNv
ZGVCcmV3LmgiCi0KLSNpbmNsdWRlIDx3Y2hhci5oPgotI2luY2x1ZGUgPHdjdHlwZS5oPgotCi1u
YW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2RlIHsKLQotVUNoYXIgdG9Mb3dlcihVQ2hh
ciBjKQotewotICAgIHJldHVybiB0b3dsb3dlcihjKTsKLX0KLQotVUNoYXIgdG9VcHBlcihVQ2hh
ciBjKQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQotVUNoYXIgZm9sZENhc2UoVUNo
YXIgYykKLXsKLSAgICByZXR1cm4gdG93bG93ZXIoYyk7Ci19Ci0KLWJvb2wgaXNQcmludGFibGVD
aGFyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3cHJpbnQoYyk7Ci19Ci0KLWJvb2wgaXNV
cHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3VwcGVyKGMpOwotfQotCi1ib29sIGlz
TG93ZXIoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gISFpc3dsb3dlcihjKTsKLX0KLQotYm9vbCBp
c0RpZ2l0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3ZGlnaXQoYyk7Ci19Ci0KLWJvb2wg
aXNQdW5jdChVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3B1bmN0KGMpOwotfQotCi1ib29s
IGlzQWxwaGFudW1lcmljKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxudW0oYyk7Ci19
Ci0KLWludCB0b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVD
aGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgY29u
c3QgVUNoYXIqIHNvdXJjZUl0ZXJhdG9yID0gc291cmNlOwotICAgIGNvbnN0IFVDaGFyKiBzb3Vy
Y2VFbmQgPSBzb3VyY2UgKyBzb3VyY2VMZW5ndGg7Ci0gICAgVUNoYXIqIHJlc3VsdEl0ZXJhdG9y
ID0gcmVzdWx0OwotICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyByZXN1bHRMZW5ndGg7
Ci0KLSAgICBpZiAoc291cmNlTGVuZ3RoIDw9IHJlc3VsdExlbmd0aCkgewotICAgICAgICB3aGls
ZSAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0gICAgICAgICAgICAqcmVzdWx0SXRlcmF0
b3IrKyA9IHRvd2xvd2VyKCpzb3VyY2VJdGVyYXRvcisrKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICB3aGlsZSAocmVzdWx0SXRlcmF0b3IgPCByZXN1bHRFbmQpCi0gICAgICAgICAgICAqcmVzdWx0
SXRlcmF0b3IrKyA9IHRvd2xvd2VyKCpzb3VyY2VJdGVyYXRvcisrKTsKLSAgICB9Ci0KLSAgICBp
bnQgcmVtYWluaW5nQ2hhcmFjdGVycyA9IHNvdXJjZUl0ZXJhdG9yIDwgc291cmNlRW5kID8gc291
cmNlRW5kIC0gc291cmNlSXRlcmF0b3IgOiAwOwotICAgICppc0Vycm9yID0gISFyZW1haW5pbmdD
aGFyYWN0ZXJzOwotICAgIGlmIChyZXN1bHRJdGVyYXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAg
KnJlc3VsdEl0ZXJhdG9yID0gMDsKLQotICAgIHJldHVybiAocmVzdWx0SXRlcmF0b3IgLSByZXN1
bHQpICsgcmVtYWluaW5nQ2hhcmFjdGVyczsKLX0KLQotaW50IHRvVXBwZXIoVUNoYXIqIHJlc3Vs
dCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0
aCwgYm9vbCogaXNFcnJvcikKLXsKLSAgICBjb25zdCBVQ2hhciogc291cmNlSXRlcmF0b3IgPSBz
b3VyY2U7Ci0gICAgY29uc3QgVUNoYXIqIHNvdXJjZUVuZCA9IHNvdXJjZSArIHNvdXJjZUxlbmd0
aDsKLSAgICBVQ2hhciogcmVzdWx0SXRlcmF0b3IgPSByZXN1bHQ7Ci0gICAgVUNoYXIqIHJlc3Vs
dEVuZCA9IHJlc3VsdCArIHJlc3VsdExlbmd0aDsKLQotICAgIGlmIChzb3VyY2VMZW5ndGggPD0g
cmVzdWx0TGVuZ3RoKSB7Ci0gICAgICAgIHdoaWxlIChzb3VyY2VJdGVyYXRvciA8IHNvdXJjZUVu
ZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBwZXIoKnNvdXJjZUl0ZXJh
dG9yKyspOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHdoaWxlIChyZXN1bHRJdGVyYXRvciA8IHJl
c3VsdEVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBwZXIoKnNvdXJj
ZUl0ZXJhdG9yKyspOwotICAgIH0KLQotICAgIGludCByZW1haW5pbmdDaGFyYWN0ZXJzID0gc291
cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQgPyBzb3VyY2VFbmQgLSBzb3VyY2VJdGVyYXRvciA6IDA7
Ci0gICAgKmlzRXJyb3IgPSAhIXJlbWFpbmluZ0NoYXJhY3RlcnM7Ci0gICAgaWYgKHJlc3VsdEl0
ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAqcmVzdWx0SXRlcmF0b3IgPSAwOwotCi0gICAg
cmV0dXJuIChyZXN1bHRJdGVyYXRvciAtIHJlc3VsdCkgKyByZW1haW5pbmdDaGFyYWN0ZXJzOwot
fQotCi1pbnQgZm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3Qg
VUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKLXsKLSAgICAq
aXNFcnJvciA9IGZhbHNlOwotICAgIGlmIChyZXN1bHRMZW5ndGggPCBzb3VyY2VMZW5ndGgpIHsK
LSAgICAgICAgKmlzRXJyb3IgPSB0cnVlOwotICAgICAgICByZXR1cm4gc291cmNlTGVuZ3RoOwot
ICAgIH0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQotICAgICAg
ICByZXN1bHRbaV0gPSBmb2xkQ2FzZShzb3VyY2VbaV0pOwotICAgIHJldHVybiBzb3VyY2VMZW5n
dGg7Ci19Ci0KLVVDaGFyIHRvVGl0bGVDYXNlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIHRvd3Vw
cGVyKGMpOwotfQotCi1EaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIgYykKLXsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RGlyZWN0aW9uPihJQ1U6OmRpcmVjdGlvbihjKSk7Ci19Ci0KLUNoYXJD
YXRlZ29yeSBjYXRlZ29yeSh1bnNpZ25lZCBpbnQgYykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Q2hhckNhdGVnb3J5PihUT19NQVNLKChpbnQ4X3QpIElDVTo6Y2F0ZWdvcnkoYykpKTsKLX0K
LQotRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMiBjKQotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxEZWNvbXBvc2l0aW9uVHlwZT4oSUNVOjpkZWNvbXBvc2l0aW9u
VHlwZShjKSk7Ci19Ci0KLXVuc2lnbmVkIGNoYXIgY29tYmluaW5nQ2xhc3MoVUNoYXIzMiBjKQot
ewotICAgIHJldHVybiBJQ1U6OmNvbWJpbmluZ0NsYXNzKGMpOwotfQotCi1VQ2hhciBtaXJyb3Jl
ZENoYXIoVUNoYXIzMiBjKQotewotICAgIHJldHVybiBJQ1U6Om1pcnJvcmVkQ2hhcihjKTsKLX0K
LQotaW50IGRpZ2l0VmFsdWUoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gSUNVOjpkaWdpdFZhbHVl
KGMpOwotfQotCi1ib29sIGlzU3BhY2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gISFpc3dzcGFj
ZShjKTsKLX0KLQotYm9vbCBpc0xldHRlcihVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd2Fs
cGhhKGMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBVbmljb2RlCi19IC8vIG5hbWVzcGFjZSBXVEYK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL2JyZXcvVW5pY29kZUJyZXcuaA0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQ0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL2JyZXcvVW5pY29kZUJyZXcu
aAkocmV2aXNpb24gNzAxNDIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9icmV3L1Vu
aWNvZGVCcmV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTk0ICswLDAgQEAKLS8qCi0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5vcmc+Ci0gKiAgQ29w
eXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgQ29tcGFueSAxMDAsIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpZm5k
ZWYgVW5pY29kZUJyZXdfaAotI2RlZmluZSBVbmljb2RlQnJld19oCi0KLSNpbmNsdWRlICJVbmlj
b2RlRnJvbUlDVS5oIgotI2luY2x1ZGUgIlVuaWNvZGVNYWNyb3NGcm9tSUNVLmgiCi0KLW5hbWVz
cGFjZSBXVEYgewotbmFtZXNwYWNlIFVuaWNvZGUgewotCi1lbnVtIERpcmVjdGlvbiB7Ci0gICAg
TGVmdFRvUmlnaHQgPSBJQ1U6OlVfTEVGVF9UT19SSUdIVCwKLSAgICBSaWdodFRvTGVmdCA9IElD
VTo6VV9SSUdIVF9UT19MRUZULAotICAgIEV1cm9wZWFuTnVtYmVyID0gSUNVOjpVX0VVUk9QRUFO
X05VTUJFUiwKLSAgICBFdXJvcGVhbk51bWJlclNlcGFyYXRvciA9IElDVTo6VV9FVVJPUEVBTl9O
VU1CRVJfU0VQQVJBVE9SLAotICAgIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA9IElDVTo6VV9F
VVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiwKLSAgICBBcmFiaWNOdW1iZXIgPSBJQ1U6OlVfQVJB
QklDX05VTUJFUiwKLSAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IgPSBJQ1U6OlVfQ09NTU9OX05V
TUJFUl9TRVBBUkFUT1IsCi0gICAgQmxvY2tTZXBhcmF0b3IgPSBJQ1U6OlVfQkxPQ0tfU0VQQVJB
VE9SLAotICAgIFNlZ21lbnRTZXBhcmF0b3IgPSBJQ1U6OlVfU0VHTUVOVF9TRVBBUkFUT1IsCi0g
ICAgV2hpdGVTcGFjZU5ldXRyYWwgPSBJQ1U6OlVfV0hJVEVfU1BBQ0VfTkVVVFJBTCwKLSAgICBP
dGhlck5ldXRyYWwgPSBJQ1U6OlVfT1RIRVJfTkVVVFJBTCwKLSAgICBMZWZ0VG9SaWdodEVtYmVk
ZGluZyA9IElDVTo6VV9MRUZUX1RPX1JJR0hUX0VNQkVERElORywKLSAgICBMZWZ0VG9SaWdodE92
ZXJyaWRlID0gSUNVOjpVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUsCi0gICAgUmlnaHRUb0xlZnRB
cmFiaWMgPSBJQ1U6OlVfUklHSFRfVE9fTEVGVF9BUkFCSUMsCi0gICAgUmlnaHRUb0xlZnRFbWJl
ZGRpbmcgPSBJQ1U6OlVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcsCi0gICAgUmlnaHRUb0xlZnRP
dmVycmlkZSA9IElDVTo6VV9SSUdIVF9UT19MRUZUX09WRVJSSURFLAotICAgIFBvcERpcmVjdGlv
bmFsRm9ybWF0ID0gSUNVOjpVX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQsCi0gICAgTm9uU3BhY2lu
Z01hcmsgPSBJQ1U6OlVfRElSX05PTl9TUEFDSU5HX01BUkssCi0gICAgQm91bmRhcnlOZXV0cmFs
ID0gSUNVOjpVX0JPVU5EQVJZX05FVVRSQUwKLX07Ci0KLWVudW0gRGVjb21wb3NpdGlvblR5cGUg
ewotICAgIERlY29tcG9zaXRpb25Ob25lID0gSUNVOjpVX0RUX05PTkUsCi0gICAgRGVjb21wb3Np
dGlvbkNhbm9uaWNhbCA9IElDVTo6VV9EVF9DQU5PTklDQUwsCi0gICAgRGVjb21wb3NpdGlvbkNv
bXBhdCA9IElDVTo6VV9EVF9DT01QQVQsCi0gICAgRGVjb21wb3NpdGlvbkNpcmNsZSA9IElDVTo6
VV9EVF9DSVJDTEUsCi0gICAgRGVjb21wb3NpdGlvbkZpbmFsID0gSUNVOjpVX0RUX0ZJTkFMLAot
ICAgIERlY29tcG9zaXRpb25Gb250ID0gSUNVOjpVX0RUX0ZPTlQsCi0gICAgRGVjb21wb3NpdGlv
bkZyYWN0aW9uID0gSUNVOjpVX0RUX0ZSQUNUSU9OLAotICAgIERlY29tcG9zaXRpb25Jbml0aWFs
ID0gSUNVOjpVX0RUX0lOSVRJQUwsCi0gICAgRGVjb21wb3NpdGlvbklzb2xhdGVkID0gSUNVOjpV
X0RUX0lTT0xBVEVELAotICAgIERlY29tcG9zaXRpb25NZWRpYWwgPSBJQ1U6OlVfRFRfTUVESUFM
LAotICAgIERlY29tcG9zaXRpb25OYXJyb3cgPSBJQ1U6OlVfRFRfTkFSUk9XLAotICAgIERlY29t
cG9zaXRpb25Ob0JyZWFrID0gSUNVOjpVX0RUX05PQlJFQUssCi0gICAgRGVjb21wb3NpdGlvblNt
YWxsID0gSUNVOjpVX0RUX1NNQUxMLAotICAgIERlY29tcG9zaXRpb25TcXVhcmUgPSBJQ1U6OlVf
RFRfU1FVQVJFLAotICAgIERlY29tcG9zaXRpb25TdWIgPSBJQ1U6OlVfRFRfU1VCLAotICAgIERl
Y29tcG9zaXRpb25TdXBlciA9IElDVTo6VV9EVF9TVVBFUiwKLSAgICBEZWNvbXBvc2l0aW9uVmVy
dGljYWwgPSBJQ1U6OlVfRFRfVkVSVElDQUwsCi0gICAgRGVjb21wb3NpdGlvbldpZGUgPSBJQ1U6
OlVfRFRfV0lERSwKLX07Ci0KLWVudW0gQ2hhckNhdGVnb3J5IHsKLSAgICBOb0NhdGVnb3J5ID0g
IDAsCi0gICAgT3RoZXJfTm90QXNzaWduZWQgPSBUT19NQVNLKElDVTo6VV9HRU5FUkFMX09USEVS
X1RZUEVTKSwKLSAgICBMZXR0ZXJfVXBwZXJjYXNlID0gVE9fTUFTSyhJQ1U6OlVfVVBQRVJDQVNF
X0xFVFRFUiksCi0gICAgTGV0dGVyX0xvd2VyY2FzZSA9IFRPX01BU0soSUNVOjpVX0xPV0VSQ0FT
RV9MRVRURVIpLAotICAgIExldHRlcl9UaXRsZWNhc2UgPSBUT19NQVNLKElDVTo6VV9USVRMRUNB
U0VfTEVUVEVSKSwKLSAgICBMZXR0ZXJfTW9kaWZpZXIgPSBUT19NQVNLKElDVTo6VV9NT0RJRklF
Ul9MRVRURVIpLAotICAgIExldHRlcl9PdGhlciA9IFRPX01BU0soSUNVOjpVX09USEVSX0xFVFRF
UiksCi0KLSAgICBNYXJrX05vblNwYWNpbmcgPSBUT19NQVNLKElDVTo6VV9OT05fU1BBQ0lOR19N
QVJLKSwKLSAgICBNYXJrX0VuY2xvc2luZyA9IFRPX01BU0soSUNVOjpVX0VOQ0xPU0lOR19NQVJL
KSwKLSAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBUT19NQVNLKElDVTo6VV9DT01CSU5JTkdf
U1BBQ0lOR19NQVJLKSwKLQotICAgIE51bWJlcl9EZWNpbWFsRGlnaXQgPSBUT19NQVNLKElDVTo6
VV9ERUNJTUFMX0RJR0lUX05VTUJFUiksCi0gICAgTnVtYmVyX0xldHRlciA9IFRPX01BU0soSUNV
OjpVX0xFVFRFUl9OVU1CRVIpLAotICAgIE51bWJlcl9PdGhlciA9IFRPX01BU0soSUNVOjpVX09U
SEVSX05VTUJFUiksCi0KLSAgICBTZXBhcmF0b3JfU3BhY2UgPSBUT19NQVNLKElDVTo6VV9TUEFD
RV9TRVBBUkFUT1IpLAotICAgIFNlcGFyYXRvcl9MaW5lID0gVE9fTUFTSyhJQ1U6OlVfTElORV9T
RVBBUkFUT1IpLAotICAgIFNlcGFyYXRvcl9QYXJhZ3JhcGggPSBUT19NQVNLKElDVTo6VV9QQVJB
R1JBUEhfU0VQQVJBVE9SKSwKLQotICAgIE90aGVyX0NvbnRyb2wgPSBUT19NQVNLKElDVTo6VV9D
T05UUk9MX0NIQVIpLAotICAgIE90aGVyX0Zvcm1hdCA9IFRPX01BU0soSUNVOjpVX0ZPUk1BVF9D
SEFSKSwKLSAgICBPdGhlcl9Qcml2YXRlVXNlID0gVE9fTUFTSyhJQ1U6OlVfUFJJVkFURV9VU0Vf
Q0hBUiksCi0gICAgT3RoZXJfU3Vycm9nYXRlID0gVE9fTUFTSyhJQ1U6OlVfU1VSUk9HQVRFKSwK
LQotICAgIFB1bmN0dWF0aW9uX0Rhc2ggPSBUT19NQVNLKElDVTo6VV9EQVNIX1BVTkNUVUFUSU9O
KSwKLSAgICBQdW5jdHVhdGlvbl9PcGVuID0gVE9fTUFTSyhJQ1U6OlVfU1RBUlRfUFVOQ1RVQVRJ
T04pLAotICAgIFB1bmN0dWF0aW9uX0Nsb3NlID0gVE9fTUFTSyhJQ1U6OlVfRU5EX1BVTkNUVUFU
SU9OKSwKLSAgICBQdW5jdHVhdGlvbl9Db25uZWN0b3IgPSBUT19NQVNLKElDVTo6VV9DT05ORUNU
T1JfUFVOQ1RVQVRJT04pLAotICAgIFB1bmN0dWF0aW9uX090aGVyID0gVE9fTUFTSyhJQ1U6OlVf
T1RIRVJfUFVOQ1RVQVRJT04pLAotCi0gICAgU3ltYm9sX01hdGggPSBUT19NQVNLKElDVTo6VV9N
QVRIX1NZTUJPTCksCi0gICAgU3ltYm9sX0N1cnJlbmN5ID0gVE9fTUFTSyhJQ1U6OlVfQ1VSUkVO
Q1lfU1lNQk9MKSwKLSAgICBTeW1ib2xfTW9kaWZpZXIgPSBUT19NQVNLKElDVTo6VV9NT0RJRklF
Ul9TWU1CT0wpLAotICAgIFN5bWJvbF9PdGhlciA9IFRPX01BU0soSUNVOjpVX09USEVSX1NZTUJP
TCksCi0KLSAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBUT19NQVNLKElDVTo6VV9JTklU
SUFMX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9GaW5hbFF1b3RlID0gVE9fTUFTSyhJ
Q1U6OlVfRklOQUxfUFVOQ1RVQVRJT04pCi19OwotCi1VQ2hhciBmb2xkQ2FzZShVQ2hhcik7Ci0K
LWludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hh
ciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsKLQotaW50IHRvTG93
ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwg
aW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci0KLVVDaGFyIHRvVXBwZXIoVUNoYXIp
OwotVUNoYXIgdG9Mb3dlcihVQ2hhcik7Ci0KLWJvb2wgaXNVcHBlcihVQ2hhcik7Ci0KLWludCB0
b1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBzb3Vy
Y2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpOwotCi1VQ2hhciB0b1RpdGxlQ2Fz
ZShVQ2hhcik7Ci0KLWlubGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMyIGMpCi17Ci0gICAg
cmV0dXJuIGMgPj0gMHgwNjAwICYmIGMgPD0gMHgwNkZGOwotfQotCi1ib29sIGlzQWxwaGFudW1l
cmljKFVDaGFyKTsKLQotQ2hhckNhdGVnb3J5IGNhdGVnb3J5KHVuc2lnbmVkIGludCk7Ci0KLWlu
bGluZSBib29sIGlzU2VwYXJhdG9yU3BhY2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gY2F0ZWdv
cnkoYykgPT0gU2VwYXJhdG9yX1NwYWNlOwotfQotCi1ib29sIGlzUHJpbnRhYmxlQ2hhcihVQ2hh
cik7Ci0KLWJvb2wgaXNEaWdpdChVQ2hhcik7Ci0KLWJvb2wgaXNQdW5jdChVQ2hhcik7Ci0KLWlu
bGluZSBib29sIGhhc0xpbmVCcmVha2luZ1Byb3BlcnR5Q29tcGxleENvbnRleHQoVUNoYXIzMikK
LXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotaW5s
aW5lIGJvb2wgaGFzTGluZUJyZWFraW5nUHJvcGVydHlDb21wbGV4Q29udGV4dE9ySWRlb2dyYXBo
aWMoVUNoYXIzMiBjKQotewotICAgIC8vIEZJWE1FCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1V
Q2hhciBtaXJyb3JlZENoYXIoVUNoYXIzMik7Ci0KLURpcmVjdGlvbiBkaXJlY3Rpb24oVUNoYXIz
Mik7Ci0KLWJvb2wgaXNMb3dlcihVQ2hhcik7Ci0KLWludCBkaWdpdFZhbHVlKFVDaGFyKTsKLQot
dW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMyKTsKLQotRGVjb21wb3NpdGlvblR5
cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMik7Ci0KLWlubGluZSBpbnQgdW1lbWNhc2VjbXAo
Y29uc3QgVUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQotewotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgVUNoYXIgYzEgPSBmb2xkQ2FzZShhW2ld
KTsKLSAgICAgICAgVUNoYXIgYzIgPSBmb2xkQ2FzZShiW2ldKTsKLSAgICAgICAgaWYgKGMxICE9
IGMyKQotICAgICAgICAgICAgcmV0dXJuIGMxIC0gYzI7Ci0gICAgfQotICAgIHJldHVybiAwOwot
fQotCi1ib29sIGlzU3BhY2UoVUNoYXIpOwotYm9vbCBpc0xldHRlcihVQ2hhcik7Ci0KLX0gLy8g
bmFtZXNwYWNlIFVuaWNvZGUKLX0gLy8gbmFtZXNwYWNlIFdURgotCi0jZW5kaWYKSW5kZXg6IEph
dmFTY3JpcHRDb3JlXHd0Zlx1bmljb2RlXG1pbmltYWxpY3VcVW5pY29kZU1pbmltYWxJQ1UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlXHd0Zlx1bmljb2RlXG1pbmltYWxpY3VcVW5p
Y29kZU1pbmltYWxJQ1UuY3BwCShyZXZpc2lvbiA3MDE0MikJKGZyb20gSmF2YVNjcmlwdENvcmUv
d3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcDo3MDE0MikKKysrIEphdmFTY3JpcHRD
b3JlXHd0Zlx1bmljb2RlXG1pbmltYWxpY3VcVW5pY29kZU1pbmltYWxJQ1UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMTgxIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwNiBHZW9y
Z2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IDxhcEBueXBvcC5jb20+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIw
MDkgVG9yY2ggTW9iaWxlLCBJbmMuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJVbmljb2RlV2luQ0UuaCIKKworI2luY2x1ZGUgPHdjaGFyLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworbmFtZXNwYWNlIFVuaWNvZGUgeworCitVQ2hhciB0b0xvd2VyKFVDaGFyIGMpCit7
CisgICAgcmV0dXJuIHRvd2xvd2VyKGMpOworfQorCitVQ2hhciB0b1VwcGVyKFVDaGFyIGMpCit7
CisgICAgcmV0dXJuIHRvd3VwcGVyKGMpOworfQorCitVQ2hhciBmb2xkQ2FzZShVQ2hhciBjKQor
eworICAgIHJldHVybiB0b3dsb3dlcihjKTsKK30KKworYm9vbCBpc1ByaW50YWJsZUNoYXIoVUNo
YXIgYykKK3sKKyAgICByZXR1cm4gISFpc3dwcmludChjKTsKK30KKworYm9vbCBpc1NwYWNlKFVD
aGFyIGMpCit7CisgICAgcmV0dXJuICEhaXN3c3BhY2UoYyk7Cit9CisKK2Jvb2wgaXNMZXR0ZXIo
VUNoYXIgYykKK3sKKyAgICByZXR1cm4gISFpc3dhbHBoYShjKTsKK30KKworYm9vbCBpc1VwcGVy
KFVDaGFyIGMpCit7CisgICAgcmV0dXJuICEhaXN3dXBwZXIoYyk7Cit9CisKK2Jvb2wgaXNMb3dl
cihVQ2hhciBjKQoreworICAgIHJldHVybiAhIWlzd2xvd2VyKGMpOworfQorCitib29sIGlzRGln
aXQoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gISFpc3dkaWdpdChjKTsKK30KKworYm9vbCBpc1B1
bmN0KFVDaGFyIGMpCit7CisgICAgcmV0dXJuICEhaXN3cHVuY3QoYyk7Cit9CisKK2Jvb2wgaXNB
bHBoYW51bWVyaWMoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gISFpc3dhbG51bShjKTsKK30KKwor
aW50IHRvTG93ZXIoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIq
IHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICBjb25zdCBV
Q2hhciogc291cmNlSXRlcmF0b3IgPSBzb3VyY2U7CisgICAgY29uc3QgVUNoYXIqIHNvdXJjZUVu
ZCA9IHNvdXJjZSArIHNvdXJjZUxlbmd0aDsKKyAgICBVQ2hhciogcmVzdWx0SXRlcmF0b3IgPSBy
ZXN1bHQ7CisgICAgVUNoYXIqIHJlc3VsdEVuZCA9IHJlc3VsdCArIHJlc3VsdExlbmd0aDsKKwor
ICAgIGludCByZW1haW5pbmdDaGFyYWN0ZXJzID0gMDsKKyAgICBpZiAoc291cmNlTGVuZ3RoIDw9
IHJlc3VsdExlbmd0aCkKKyAgICAgICAgd2hpbGUgKHNvdXJjZUl0ZXJhdG9yIDwgc291cmNlRW5k
KQorICAgICAgICAgICAgKnJlc3VsdEl0ZXJhdG9yKysgPSB0b3dsb3dlcigqc291cmNlSXRlcmF0
b3IrKyk7CisgICAgZWxzZQorICAgICAgICB3aGlsZSAocmVzdWx0SXRlcmF0b3IgPCByZXN1bHRF
bmQpCisgICAgICAgICAgICAqcmVzdWx0SXRlcmF0b3IrKyA9IHRvd2xvd2VyKCpzb3VyY2VJdGVy
YXRvcisrKTsKKworICAgIGlmIChzb3VyY2VJdGVyYXRvciA8IHNvdXJjZUVuZCkKKyAgICAgICAg
cmVtYWluaW5nQ2hhcmFjdGVycyArPSBzb3VyY2VFbmQgLSBzb3VyY2VJdGVyYXRvcjsKKyAgICAq
aXNFcnJvciA9ICEhcmVtYWluaW5nQ2hhcmFjdGVyczsKKyAgICBpZiAocmVzdWx0SXRlcmF0b3Ig
PCByZXN1bHRFbmQpCisgICAgICAgICpyZXN1bHRJdGVyYXRvciA9IDA7CisKKyAgICByZXR1cm4g
KHJlc3VsdEl0ZXJhdG9yIC0gcmVzdWx0KSArIHJlbWFpbmluZ0NoYXJhY3RlcnM7Cit9CisKK2lu
dCB0b1VwcGVyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFyKiBz
b3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCit7CisgICAgY29uc3QgVUNo
YXIqIHNvdXJjZUl0ZXJhdG9yID0gc291cmNlOworICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VFbmQg
PSBzb3VyY2UgKyBzb3VyY2VMZW5ndGg7CisgICAgVUNoYXIqIHJlc3VsdEl0ZXJhdG9yID0gcmVz
dWx0OworICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyByZXN1bHRMZW5ndGg7CisKKyAg
ICBpbnQgcmVtYWluaW5nQ2hhcmFjdGVycyA9IDA7CisgICAgaWYgKHNvdXJjZUxlbmd0aCA8PSBy
ZXN1bHRMZW5ndGgpCisgICAgICAgIHdoaWxlIChzb3VyY2VJdGVyYXRvciA8IHNvdXJjZUVuZCkK
KyAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBwZXIoKnNvdXJjZUl0ZXJhdG9y
KyspOworICAgIGVsc2UKKyAgICAgICAgd2hpbGUgKHJlc3VsdEl0ZXJhdG9yIDwgcmVzdWx0RW5k
KQorICAgICAgICAgICAgKnJlc3VsdEl0ZXJhdG9yKysgPSB0b3d1cHBlcigqc291cmNlSXRlcmF0
b3IrKyk7CisKKyAgICBpZiAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCisgICAgICAgIHJl
bWFpbmluZ0NoYXJhY3RlcnMgKz0gc291cmNlRW5kIC0gc291cmNlSXRlcmF0b3I7CisgICAgKmlz
RXJyb3IgPSAhIXJlbWFpbmluZ0NoYXJhY3RlcnM7CisgICAgaWYgKHJlc3VsdEl0ZXJhdG9yIDwg
cmVzdWx0RW5kKQorICAgICAgICAqcmVzdWx0SXRlcmF0b3IgPSAwOworCisgICAgcmV0dXJuIChy
ZXN1bHRJdGVyYXRvciAtIHJlc3VsdCkgKyByZW1haW5pbmdDaGFyYWN0ZXJzOworfQorCitpbnQg
Zm9sZENhc2UoVUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNv
dXJjZSwgaW50IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcikKK3sKKyAgICAqaXNFcnJvciA9
IGZhbHNlOworICAgIGlmIChyZXN1bHRMZW5ndGggPCBzb3VyY2VMZW5ndGgpIHsKKyAgICAgICAg
KmlzRXJyb3IgPSB0cnVlOworICAgICAgICByZXR1cm4gc291cmNlTGVuZ3RoOworICAgIH0KKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKQorICAgICAgICByZXN1bHRb
aV0gPSBmb2xkQ2FzZShzb3VyY2VbaV0pOworICAgIHJldHVybiBzb3VyY2VMZW5ndGg7Cit9CisK
K1VDaGFyIHRvVGl0bGVDYXNlKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIHRvd3VwcGVyKGMpOwor
fQorCitEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIgYykKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RGlyZWN0aW9uPihVbmljb2RlQ0U6OmRpcmVjdGlvbihjKSk7Cit9CisKK0NoYXJDYXRl
Z29yeSBjYXRlZ29yeSh1bnNpZ25lZCBpbnQgYykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Q2hhckNhdGVnb3J5PihUT19NQVNLKChfX2ludDgpIFVuaWNvZGVDRTo6Y2F0ZWdvcnkoYykpKTsK
K30KKworRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMiBjKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZWNvbXBvc2l0aW9uVHlwZT4oVW5pY29kZUNFOjpkZWNv
bXBvc2l0aW9uVHlwZShjKSk7Cit9CisKK3Vuc2lnbmVkIGNoYXIgY29tYmluaW5nQ2xhc3MoVUNo
YXIzMiBjKQoreworICAgIHJldHVybiBVbmljb2RlQ0U6OmNvbWJpbmluZ0NsYXNzKGMpOworfQor
CitVQ2hhciBtaXJyb3JlZENoYXIoVUNoYXIzMiBjKQoreworICAgIHJldHVybiBVbmljb2RlQ0U6
Om1pcnJvcmVkQ2hhcihjKTsKK30KKworaW50IGRpZ2l0VmFsdWUoVUNoYXIgYykKK3sKKyAgICBy
ZXR1cm4gVW5pY29kZUNFOjpkaWdpdFZhbHVlKGMpOworfQorCit9IC8vIG5hbWVzcGFjZSBVbmlj
b2RlCit9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2Rl
L21pbmltYWxpY3UvVW5pY29kZU1pbmltYWxJQ1UuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gSmF2YVNj
cmlwdENvcmUvd3RmL3VuaWNvZGUvbWluaW1hbGljdS9Vbmljb2RlTWluaW1hbElDVS5jcHAJKHJl
dmlzaW9uIDApCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9taW5pbWFsaWN1L1VuaWNv
ZGVNaW5pbWFsSUNVLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgogICogIENv
cHlyaWdodCAoQykgMjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgorICogIENvcHlyaWdodCAo
QykgMjAxMCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjAsOSArMjEsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJVbmljb2RlV2luQ0UuaCIKKyNpbmNsdWRlICJVbmljb2RlTWluaW1hbElDVS5o
IgogCi0jaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx3Y3R5cGUuaD4KIAogbmFtZXNwYWNl
IFdURiB7CiBuYW1lc3BhY2UgVW5pY29kZSB7CkBAIC0xNDksMzIgKzE1MCwzMiBAQCBVQ2hhciB0
b1RpdGxlQ2FzZShVQ2hhciBjKQogCiBEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFyMzIgYykKIHsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlyZWN0aW9uPihVbmljb2RlQ0U6OmRpcmVjdGlvbihj
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpcmVjdGlvbj4oTWluaW1hbElDVTo6ZGlyZWN0
aW9uKGMpKTsKIH0KIAogQ2hhckNhdGVnb3J5IGNhdGVnb3J5KHVuc2lnbmVkIGludCBjKQogewot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaGFyQ2F0ZWdvcnk+KFRPX01BU0soKF9faW50OCkgVW5p
Y29kZUNFOjpjYXRlZ29yeShjKSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaGFyQ2F0ZWdv
cnk+KFRPX01BU0soc3RhdGljX2Nhc3Q8aW50OF90PihNaW5pbWFsSUNVOjpjYXRlZ29yeShjKSkp
KTsKIH0KIAogRGVjb21wb3NpdGlvblR5cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMiBjKQog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxEZWNvbXBvc2l0aW9uVHlwZT4oVW5pY29kZUNFOjpk
ZWNvbXBvc2l0aW9uVHlwZShjKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERlY29tcG9zaXRp
b25UeXBlPihNaW5pbWFsSUNVOjpkZWNvbXBvc2l0aW9uVHlwZShjKSk7CiB9CiAKIHVuc2lnbmVk
IGNoYXIgY29tYmluaW5nQ2xhc3MoVUNoYXIzMiBjKQogewotICAgIHJldHVybiBVbmljb2RlQ0U6
OmNvbWJpbmluZ0NsYXNzKGMpOworICAgIHJldHVybiBNaW5pbWFsSUNVOjpjb21iaW5pbmdDbGFz
cyhjKTsKIH0KIAogVUNoYXIgbWlycm9yZWRDaGFyKFVDaGFyMzIgYykKIHsKLSAgICByZXR1cm4g
VW5pY29kZUNFOjptaXJyb3JlZENoYXIoYyk7CisgICAgcmV0dXJuIE1pbmltYWxJQ1U6Om1pcnJv
cmVkQ2hhcihjKTsKIH0KIAogaW50IGRpZ2l0VmFsdWUoVUNoYXIgYykKIHsKLSAgICByZXR1cm4g
VW5pY29kZUNFOjpkaWdpdFZhbHVlKGMpOworICAgIHJldHVybiBNaW5pbWFsSUNVOjpkaWdpdFZh
bHVlKGMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBVbmljb2RlCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZVx3dGZcdW5pY29kZVxtaW5pbWFsaWN1XFVuaWNvZGVNaW5pbWFsSUNVLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmVcd3RmXHVuaWNvZGVcbWluaW1hbGljdVxVbmljb2RlTWluaW1hbElD
VS5oCShyZXZpc2lvbiA3MDE0MikJKGZyb20gSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvd2lu
Y2UvVW5pY29kZVdpbkNFLmg6NzAxNDIpCisrKyBKYXZhU2NyaXB0Q29yZVx3dGZcdW5pY29kZVxt
aW5pbWFsaWN1XFVuaWNvZGVNaW5pbWFsSUNVLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NzcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29z
QGtkZS5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFw
QG55cG9wLmNvbT4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBN
b2JpbGUsIEluYy4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgV1RGX1VuaWNvZGVXaW5DRV9oCisj
ZGVmaW5lIFdURl9Vbmljb2RlV2luQ0VfaAorCisjaW5jbHVkZSAiVW5pY29kZU1hY3Jvc0Zyb21J
Q1UuaCIKKworI2luY2x1ZGUgImNlX3VuaWNvZGUuaCIKKworI2RlZmluZSBUT19NQVNLKHgpICgx
IDw8ICh4KSkKKworbmFtZXNwYWNlIFdURiB7CituYW1lc3BhY2UgVW5pY29kZSB7CisKK2VudW0g
RGlyZWN0aW9uIHsKKyAgICBMZWZ0VG9SaWdodCA9IFVuaWNvZGVDRTo6VV9MRUZUX1RPX1JJR0hU
LAorICAgIFJpZ2h0VG9MZWZ0ID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlQsCisgICAgRXVy
b3BlYW5OdW1iZXIgPSBVbmljb2RlQ0U6OlVfRVVST1BFQU5fTlVNQkVSLAorICAgIEV1cm9wZWFu
TnVtYmVyU2VwYXJhdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1Is
CisgICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05V
TUJFUl9URVJNSU5BVE9SLAorICAgIEFyYWJpY051bWJlciA9IFVuaWNvZGVDRTo6VV9BUkFCSUNf
TlVNQkVSLAorICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9DT01NT05f
TlVNQkVSX1NFUEFSQVRPUiwKKyAgICBCbG9ja1NlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9CTE9D
S19TRVBBUkFUT1IsCisgICAgU2VnbWVudFNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9TRUdNRU5U
X1NFUEFSQVRPUiwKKyAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9XSElURV9T
UEFDRV9ORVVUUkFMLAorICAgIE90aGVyTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9PVEhFUl9ORVVU
UkFMLAorICAgIExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gVW5pY29kZUNFOjpVX0xFRlRfVE9fUklH
SFRfRU1CRURESU5HLAorICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVbmljb2RlQ0U6OlVfTEVG
VF9UT19SSUdIVF9PVkVSUklERSwKKyAgICBSaWdodFRvTGVmdEFyYWJpYyA9IFVuaWNvZGVDRTo6
VV9SSUdIVF9UT19MRUZUX0FSQUJJQywKKyAgICBSaWdodFRvTGVmdEVtYmVkZGluZyA9IFVuaWNv
ZGVDRTo6VV9SSUdIVF9UT19MRUZUX0VNQkVERElORywKKyAgICBSaWdodFRvTGVmdE92ZXJyaWRl
ID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUsCisgICAgUG9wRGlyZWN0aW9u
YWxGb3JtYXQgPSBVbmljb2RlQ0U6OlVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwKKyAgICBOb25T
cGFjaW5nTWFyayA9IFVuaWNvZGVDRTo6VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywKKyAgICBCb3Vu
ZGFyeU5ldXRyYWwgPSBVbmljb2RlQ0U6OlVfQk9VTkRBUllfTkVVVFJBTAorfTsKKworZW51bSBE
ZWNvbXBvc2l0aW9uVHlwZSB7CisgICAgRGVjb21wb3NpdGlvbk5vbmUgPSBVbmljb2RlQ0U6OlVf
RFRfTk9ORSwKKyAgICBEZWNvbXBvc2l0aW9uQ2Fub25pY2FsID0gVW5pY29kZUNFOjpVX0RUX0NB
Tk9OSUNBTCwKKyAgICBEZWNvbXBvc2l0aW9uQ29tcGF0ID0gVW5pY29kZUNFOjpVX0RUX0NPTVBB
VCwKKyAgICBEZWNvbXBvc2l0aW9uQ2lyY2xlID0gVW5pY29kZUNFOjpVX0RUX0NJUkNMRSwKKyAg
ICBEZWNvbXBvc2l0aW9uRmluYWwgPSBVbmljb2RlQ0U6OlVfRFRfRklOQUwsCisgICAgRGVjb21w
b3NpdGlvbkZvbnQgPSBVbmljb2RlQ0U6OlVfRFRfRk9OVCwKKyAgICBEZWNvbXBvc2l0aW9uRnJh
Y3Rpb24gPSBVbmljb2RlQ0U6OlVfRFRfRlJBQ1RJT04sCisgICAgRGVjb21wb3NpdGlvbkluaXRp
YWwgPSBVbmljb2RlQ0U6OlVfRFRfSU5JVElBTCwKKyAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQg
PSBVbmljb2RlQ0U6OlVfRFRfSVNPTEFURUQsCisgICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9IFVu
aWNvZGVDRTo6VV9EVF9NRURJQUwsCisgICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9IFVuaWNvZGVD
RTo6VV9EVF9OQVJST1csCisgICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBVbmljb2RlQ0U6OlVf
RFRfTk9CUkVBSywKKyAgICBEZWNvbXBvc2l0aW9uU21hbGwgPSBVbmljb2RlQ0U6OlVfRFRfU01B
TEwsCisgICAgRGVjb21wb3NpdGlvblNxdWFyZSA9IFVuaWNvZGVDRTo6VV9EVF9TUVVBUkUsCisg
ICAgRGVjb21wb3NpdGlvblN1YiA9IFVuaWNvZGVDRTo6VV9EVF9TVUIsCisgICAgRGVjb21wb3Np
dGlvblN1cGVyID0gVW5pY29kZUNFOjpVX0RUX1NVUEVSLAorICAgIERlY29tcG9zaXRpb25WZXJ0
aWNhbCA9IFVuaWNvZGVDRTo6VV9EVF9WRVJUSUNBTCwKKyAgICBEZWNvbXBvc2l0aW9uV2lkZSA9
IFVuaWNvZGVDRTo6VV9EVF9XSURFCit9OworCitlbnVtIENoYXJDYXRlZ29yeSB7CisgICAgTm9D
YXRlZ29yeSA9ICAwLAorICAgIE90aGVyX05vdEFzc2lnbmVkID0gVE9fTUFTSyhVbmljb2RlQ0U6
OlVfR0VORVJBTF9PVEhFUl9UWVBFUyksCisgICAgTGV0dGVyX1VwcGVyY2FzZSA9IFRPX01BU0so
VW5pY29kZUNFOjpVX1VQUEVSQ0FTRV9MRVRURVIpLAorICAgIExldHRlcl9Mb3dlcmNhc2UgPSBU
T19NQVNLKFVuaWNvZGVDRTo6VV9MT1dFUkNBU0VfTEVUVEVSKSwKKyAgICBMZXR0ZXJfVGl0bGVj
YXNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfVElUTEVDQVNFX0xFVFRFUiksCisgICAgTGV0dGVy
X01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJfTEVUVEVSKSwKKyAgICBM
ZXR0ZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9MRVRURVIpLAorCisgICAg
TWFya19Ob25TcGFjaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTk9OX1NQQUNJTkdfTUFSSyks
CisgICAgTWFya19FbmNsb3NpbmcgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9FTkNMT1NJTkdfTUFS
SyksCisgICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09N
QklOSU5HX1NQQUNJTkdfTUFSSyksCisKKyAgICBOdW1iZXJfRGVjaW1hbERpZ2l0ID0gVE9fTUFT
SyhVbmljb2RlQ0U6OlVfREVDSU1BTF9ESUdJVF9OVU1CRVIpLAorICAgIE51bWJlcl9MZXR0ZXIg
PSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MRVRURVJfTlVNQkVSKSwKKyAgICBOdW1iZXJfT3RoZXIg
PSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9OVU1CRVIpLAorCisgICAgU2VwYXJhdG9yX1Nw
YWNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfU1BBQ0VfU0VQQVJBVE9SKSwKKyAgICBTZXBhcmF0
b3JfTGluZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0xJTkVfU0VQQVJBVE9SKSwKKyAgICBTZXBh
cmF0b3JfUGFyYWdyYXBoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfUEFSQUdSQVBIX1NFUEFSQVRP
UiksCisKKyAgICBPdGhlcl9Db250cm9sID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OVFJPTF9D
SEFSKSwKKyAgICBPdGhlcl9Gb3JtYXQgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9GT1JNQVRfQ0hB
UiksCisgICAgT3RoZXJfUHJpdmF0ZVVzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1BSSVZBVEVf
VVNFX0NIQVIpLAorICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1NV
UlJPR0FURSksCisKKyAgICBQdW5jdHVhdGlvbl9EYXNoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVf
REFTSF9QVU5DVFVBVElPTiksCisgICAgUHVuY3R1YXRpb25fT3BlbiA9IFRPX01BU0soVW5pY29k
ZUNFOjpVX1NUQVJUX1BVTkNUVUFUSU9OKSwKKyAgICBQdW5jdHVhdGlvbl9DbG9zZSA9IFRPX01B
U0soVW5pY29kZUNFOjpVX0VORF9QVU5DVFVBVElPTiksCisgICAgUHVuY3R1YXRpb25fQ29ubmVj
dG9yID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OTkVDVE9SX1BVTkNUVUFUSU9OKSwKKyAgICBQ
dW5jdHVhdGlvbl9PdGhlciA9IFRPX01BU0soVW5pY29kZUNFOjpVX09USEVSX1BVTkNUVUFUSU9O
KSwKKworICAgIFN5bWJvbF9NYXRoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTUFUSF9TWU1CT0wp
LAorICAgIFN5bWJvbF9DdXJyZW5jeSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0NVUlJFTkNZX1NZ
TUJPTCksCisgICAgU3ltYm9sX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJ
RVJfU1lNQk9MKSwKKyAgICBTeW1ib2xfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhF
Ul9TWU1CT0wpLAorCisgICAgUHVuY3R1YXRpb25fSW5pdGlhbFF1b3RlID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfSU5JVElBTF9QVU5DVFVBVElPTiksCisgICAgUHVuY3R1YXRpb25fRmluYWxRdW90
ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0ZJTkFMX1BVTkNUVUFUSU9OKQorfTsKKworQ2hhckNh
dGVnb3J5IGNhdGVnb3J5KHVuc2lnbmVkIGludCk7CisKK2Jvb2wgaXNTcGFjZShVQ2hhcik7Citi
b29sIGlzTGV0dGVyKFVDaGFyKTsKK2Jvb2wgaXNQcmludGFibGVDaGFyKFVDaGFyKTsKK2Jvb2wg
aXNVcHBlcihVQ2hhcik7Citib29sIGlzTG93ZXIoVUNoYXIpOworYm9vbCBpc1B1bmN0KFVDaGFy
KTsKK2Jvb2wgaXNEaWdpdChVQ2hhcik7Citib29sIGlzQWxwaGFudW1lcmljKFVDaGFyKTsKK2lu
bGluZSBib29sIGlzU2VwYXJhdG9yU3BhY2UoVUNoYXIgYykgeyByZXR1cm4gY2F0ZWdvcnkoYykg
PT0gU2VwYXJhdG9yX1NwYWNlOyB9CitpbmxpbmUgYm9vbCBpc0hpZ2hTdXJyb2dhdGUoVUNoYXIg
YykgeyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZDgwMDsgfQoraW5saW5lIGJvb2wgaXNMb3dT
dXJyb2dhdGUoVUNoYXIgYykgeyByZXR1cm4gKGMgJiAweGZjMDApID09IDB4ZGMwMDsgfQorCitV
Q2hhciB0b0xvd2VyKFVDaGFyKTsKK1VDaGFyIHRvVXBwZXIoVUNoYXIpOworVUNoYXIgZm9sZENh
c2UoVUNoYXIpOworVUNoYXIgdG9UaXRsZUNhc2UoVUNoYXIpOworaW50IHRvTG93ZXIoVUNoYXIq
IHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJj
ZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7CitpbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQg
cmVzdWx0TGVuZ3RoLCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29s
KiBpc0Vycm9yKTsKK2ludCBmb2xkQ2FzZShVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3Ro
LCBjb25zdCBVQ2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKTsK
KworaW50IGRpZ2l0VmFsdWUoVUNoYXIpOworCitVQ2hhciBtaXJyb3JlZENoYXIoVUNoYXIzMik7
Cit1bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0NsYXNzKFVDaGFyMzIpOworRGVjb21wb3NpdGlvblR5
cGUgZGVjb21wb3NpdGlvblR5cGUoVUNoYXIzMik7CitEaXJlY3Rpb24gZGlyZWN0aW9uKFVDaGFy
MzIpOworaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyKFVDaGFyMzIgYykKK3sKKyAgICByZXR1cm4g
YyA+PSAweDA2MDAgJiYgYyA8PSAweDA2RkY7Cit9CisKK2lubGluZSBib29sIGhhc0xpbmVCcmVh
a2luZ1Byb3BlcnR5Q29tcGxleENvbnRleHQoVUNoYXIzMikKK3sKKyAgICByZXR1cm4gZmFsc2U7
IC8vIEZJWE1FOiBpbXBsZW1lbnQhCit9CisKK2lubGluZSBpbnQgdW1lbWNhc2VjbXAoY29uc3Qg
VUNoYXIqIGEsIGNvbnN0IFVDaGFyKiBiLCBpbnQgbGVuKQoreworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgVUNoYXIgYzEgPSBmb2xkQ2FzZShhW2ldKTsKKyAg
ICAgICAgVUNoYXIgYzIgPSBmb2xkQ2FzZShiW2ldKTsKKyAgICAgICAgaWYgKGMxICE9IGMyKQor
ICAgICAgICAgICAgcmV0dXJuIGMxIC0gYzI7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitp
bmxpbmUgVUNoYXIzMiBzdXJyb2dhdGVUb1VjczQoVUNoYXIgaGlnaCwgVUNoYXIgbG93KQorewor
ICAgIHJldHVybiAoVUNoYXIzMihoaWdoKSA8PCAxMCkgKyBsb3cgLSAweDM1ZmRjMDA7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFVuaWNvZGUKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8g
V1RGX1VuaWNvZGVXaW5DRV9oCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9taW5p
bWFsaWN1L1VuaWNvZGVNaW5pbWFsSUNVLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBKYXZhU2NyaXB0Q29y
ZS93dGYvdW5pY29kZS9taW5pbWFsaWN1L1VuaWNvZGVNaW5pbWFsSUNVLmgJKHJldmlzaW9uIDAp
CisrKyBKYXZhU2NyaXB0Q29yZS93dGYvdW5pY29kZS9taW5pbWFsaWN1L1VuaWNvZGVNaW5pbWFs
SUNVLmgJKHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQG55cG9wLmNvbT4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgQ29tcHV0ZXIsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5
cmlnaHQgKEMpIDIwMDctMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KKyAqICBDb3B5cmlnaHQgKEMp
IDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTIxLDEwMCArMjIsOTkgQEAKICAqCiAgKi8KIAotI2lmbmRlZiBXVEZfVW5p
Y29kZVdpbkNFX2gKLSNkZWZpbmUgV1RGX1VuaWNvZGVXaW5DRV9oCisjaWZuZGVmIFdURl9Vbmlj
b2RlTWluaW1hbElDVV9oCisjZGVmaW5lIFdURl9Vbmljb2RlTWluaW1hbElDVV9oCiAKKyNpbmNs
dWRlICJNaW5pbWFsSUNVLmgiCiAjaW5jbHVkZSAiVW5pY29kZU1hY3Jvc0Zyb21JQ1UuaCIKIAot
I2luY2x1ZGUgImNlX3VuaWNvZGUuaCIKLQogI2RlZmluZSBUT19NQVNLKHgpICgxIDw8ICh4KSkK
IAogbmFtZXNwYWNlIFdURiB7CiBuYW1lc3BhY2UgVW5pY29kZSB7CiAKIGVudW0gRGlyZWN0aW9u
IHsKLSAgICBMZWZ0VG9SaWdodCA9IFVuaWNvZGVDRTo6VV9MRUZUX1RPX1JJR0hULAotICAgIFJp
Z2h0VG9MZWZ0ID0gVW5pY29kZUNFOjpVX1JJR0hUX1RPX0xFRlQsCi0gICAgRXVyb3BlYW5OdW1i
ZXIgPSBVbmljb2RlQ0U6OlVfRVVST1BFQU5fTlVNQkVSLAotICAgIEV1cm9wZWFuTnVtYmVyU2Vw
YXJhdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1IsCi0gICAgRXVy
b3BlYW5OdW1iZXJUZXJtaW5hdG9yID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05VTUJFUl9URVJN
SU5BVE9SLAotICAgIEFyYWJpY051bWJlciA9IFVuaWNvZGVDRTo6VV9BUkFCSUNfTlVNQkVSLAot
ICAgIENvbW1vbk51bWJlclNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9DT01NT05fTlVNQkVSX1NF
UEFSQVRPUiwKLSAgICBCbG9ja1NlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9CTE9DS19TRVBBUkFU
T1IsCi0gICAgU2VnbWVudFNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9TRUdNRU5UX1NFUEFSQVRP
UiwKLSAgICBXaGl0ZVNwYWNlTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9XSElURV9TUEFDRV9ORVVU
UkFMLAotICAgIE90aGVyTmV1dHJhbCA9IFVuaWNvZGVDRTo6VV9PVEhFUl9ORVVUUkFMLAotICAg
IExlZnRUb1JpZ2h0RW1iZWRkaW5nID0gVW5pY29kZUNFOjpVX0xFRlRfVE9fUklHSFRfRU1CRURE
SU5HLAotICAgIExlZnRUb1JpZ2h0T3ZlcnJpZGUgPSBVbmljb2RlQ0U6OlVfTEVGVF9UT19SSUdI
VF9PVkVSUklERSwKLSAgICBSaWdodFRvTGVmdEFyYWJpYyA9IFVuaWNvZGVDRTo6VV9SSUdIVF9U
T19MRUZUX0FSQUJJQywKLSAgICBSaWdodFRvTGVmdEVtYmVkZGluZyA9IFVuaWNvZGVDRTo6VV9S
SUdIVF9UT19MRUZUX0VNQkVERElORywKLSAgICBSaWdodFRvTGVmdE92ZXJyaWRlID0gVW5pY29k
ZUNFOjpVX1JJR0hUX1RPX0xFRlRfT1ZFUlJJREUsCi0gICAgUG9wRGlyZWN0aW9uYWxGb3JtYXQg
PSBVbmljb2RlQ0U6OlVfUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCwKLSAgICBOb25TcGFjaW5nTWFy
ayA9IFVuaWNvZGVDRTo6VV9ESVJfTk9OX1NQQUNJTkdfTUFSSywKLSAgICBCb3VuZGFyeU5ldXRy
YWwgPSBVbmljb2RlQ0U6OlVfQk9VTkRBUllfTkVVVFJBTAorICAgIExlZnRUb1JpZ2h0ID0gTWlu
aW1hbElDVTo6VV9MRUZUX1RPX1JJR0hULAorICAgIFJpZ2h0VG9MZWZ0ID0gTWluaW1hbElDVTo6
VV9SSUdIVF9UT19MRUZULAorICAgIEV1cm9wZWFuTnVtYmVyID0gTWluaW1hbElDVTo6VV9FVVJP
UEVBTl9OVU1CRVIsCisgICAgRXVyb3BlYW5OdW1iZXJTZXBhcmF0b3IgPSBNaW5pbWFsSUNVOjpV
X0VVUk9QRUFOX05VTUJFUl9TRVBBUkFUT1IsCisgICAgRXVyb3BlYW5OdW1iZXJUZXJtaW5hdG9y
ID0gTWluaW1hbElDVTo6VV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiwKKyAgICBBcmFiaWNO
dW1iZXIgPSBNaW5pbWFsSUNVOjpVX0FSQUJJQ19OVU1CRVIsCisgICAgQ29tbW9uTnVtYmVyU2Vw
YXJhdG9yID0gTWluaW1hbElDVTo6VV9DT01NT05fTlVNQkVSX1NFUEFSQVRPUiwKKyAgICBCbG9j
a1NlcGFyYXRvciA9IE1pbmltYWxJQ1U6OlVfQkxPQ0tfU0VQQVJBVE9SLAorICAgIFNlZ21lbnRT
ZXBhcmF0b3IgPSBNaW5pbWFsSUNVOjpVX1NFR01FTlRfU0VQQVJBVE9SLAorICAgIFdoaXRlU3Bh
Y2VOZXV0cmFsID0gTWluaW1hbElDVTo6VV9XSElURV9TUEFDRV9ORVVUUkFMLAorICAgIE90aGVy
TmV1dHJhbCA9IE1pbmltYWxJQ1U6OlVfT1RIRVJfTkVVVFJBTCwKKyAgICBMZWZ0VG9SaWdodEVt
YmVkZGluZyA9IE1pbmltYWxJQ1U6OlVfTEVGVF9UT19SSUdIVF9FTUJFRERJTkcsCisgICAgTGVm
dFRvUmlnaHRPdmVycmlkZSA9IE1pbmltYWxJQ1U6OlVfTEVGVF9UT19SSUdIVF9PVkVSUklERSwK
KyAgICBSaWdodFRvTGVmdEFyYWJpYyA9IE1pbmltYWxJQ1U6OlVfUklHSFRfVE9fTEVGVF9BUkFC
SUMsCisgICAgUmlnaHRUb0xlZnRFbWJlZGRpbmcgPSBNaW5pbWFsSUNVOjpVX1JJR0hUX1RPX0xF
RlRfRU1CRURESU5HLAorICAgIFJpZ2h0VG9MZWZ0T3ZlcnJpZGUgPSBNaW5pbWFsSUNVOjpVX1JJ
R0hUX1RPX0xFRlRfT1ZFUlJJREUsCisgICAgUG9wRGlyZWN0aW9uYWxGb3JtYXQgPSBNaW5pbWFs
SUNVOjpVX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQsCisgICAgTm9uU3BhY2luZ01hcmsgPSBNaW5p
bWFsSUNVOjpVX0RJUl9OT05fU1BBQ0lOR19NQVJLLAorICAgIEJvdW5kYXJ5TmV1dHJhbCA9IE1p
bmltYWxJQ1U6OlVfQk9VTkRBUllfTkVVVFJBTAogfTsKIAogZW51bSBEZWNvbXBvc2l0aW9uVHlw
ZSB7Ci0gICAgRGVjb21wb3NpdGlvbk5vbmUgPSBVbmljb2RlQ0U6OlVfRFRfTk9ORSwKLSAgICBE
ZWNvbXBvc2l0aW9uQ2Fub25pY2FsID0gVW5pY29kZUNFOjpVX0RUX0NBTk9OSUNBTCwKLSAgICBE
ZWNvbXBvc2l0aW9uQ29tcGF0ID0gVW5pY29kZUNFOjpVX0RUX0NPTVBBVCwKLSAgICBEZWNvbXBv
c2l0aW9uQ2lyY2xlID0gVW5pY29kZUNFOjpVX0RUX0NJUkNMRSwKLSAgICBEZWNvbXBvc2l0aW9u
RmluYWwgPSBVbmljb2RlQ0U6OlVfRFRfRklOQUwsCi0gICAgRGVjb21wb3NpdGlvbkZvbnQgPSBV
bmljb2RlQ0U6OlVfRFRfRk9OVCwKLSAgICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24gPSBVbmljb2Rl
Q0U6OlVfRFRfRlJBQ1RJT04sCi0gICAgRGVjb21wb3NpdGlvbkluaXRpYWwgPSBVbmljb2RlQ0U6
OlVfRFRfSU5JVElBTCwKLSAgICBEZWNvbXBvc2l0aW9uSXNvbGF0ZWQgPSBVbmljb2RlQ0U6OlVf
RFRfSVNPTEFURUQsCi0gICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9IFVuaWNvZGVDRTo6VV9EVF9N
RURJQUwsCi0gICAgRGVjb21wb3NpdGlvbk5hcnJvdyA9IFVuaWNvZGVDRTo6VV9EVF9OQVJST1cs
Ci0gICAgRGVjb21wb3NpdGlvbk5vQnJlYWsgPSBVbmljb2RlQ0U6OlVfRFRfTk9CUkVBSywKLSAg
ICBEZWNvbXBvc2l0aW9uU21hbGwgPSBVbmljb2RlQ0U6OlVfRFRfU01BTEwsCi0gICAgRGVjb21w
b3NpdGlvblNxdWFyZSA9IFVuaWNvZGVDRTo6VV9EVF9TUVVBUkUsCi0gICAgRGVjb21wb3NpdGlv
blN1YiA9IFVuaWNvZGVDRTo6VV9EVF9TVUIsCi0gICAgRGVjb21wb3NpdGlvblN1cGVyID0gVW5p
Y29kZUNFOjpVX0RUX1NVUEVSLAotICAgIERlY29tcG9zaXRpb25WZXJ0aWNhbCA9IFVuaWNvZGVD
RTo6VV9EVF9WRVJUSUNBTCwKLSAgICBEZWNvbXBvc2l0aW9uV2lkZSA9IFVuaWNvZGVDRTo6VV9E
VF9XSURFCisgICAgRGVjb21wb3NpdGlvbk5vbmUgPSBNaW5pbWFsSUNVOjpVX0RUX05PTkUsCisg
ICAgRGVjb21wb3NpdGlvbkNhbm9uaWNhbCA9IE1pbmltYWxJQ1U6OlVfRFRfQ0FOT05JQ0FMLAor
ICAgIERlY29tcG9zaXRpb25Db21wYXQgPSBNaW5pbWFsSUNVOjpVX0RUX0NPTVBBVCwKKyAgICBE
ZWNvbXBvc2l0aW9uQ2lyY2xlID0gTWluaW1hbElDVTo6VV9EVF9DSVJDTEUsCisgICAgRGVjb21w
b3NpdGlvbkZpbmFsID0gTWluaW1hbElDVTo6VV9EVF9GSU5BTCwKKyAgICBEZWNvbXBvc2l0aW9u
Rm9udCA9IE1pbmltYWxJQ1U6OlVfRFRfRk9OVCwKKyAgICBEZWNvbXBvc2l0aW9uRnJhY3Rpb24g
PSBNaW5pbWFsSUNVOjpVX0RUX0ZSQUNUSU9OLAorICAgIERlY29tcG9zaXRpb25Jbml0aWFsID0g
TWluaW1hbElDVTo6VV9EVF9JTklUSUFMLAorICAgIERlY29tcG9zaXRpb25Jc29sYXRlZCA9IE1p
bmltYWxJQ1U6OlVfRFRfSVNPTEFURUQsCisgICAgRGVjb21wb3NpdGlvbk1lZGlhbCA9IE1pbmlt
YWxJQ1U6OlVfRFRfTUVESUFMLAorICAgIERlY29tcG9zaXRpb25OYXJyb3cgPSBNaW5pbWFsSUNV
OjpVX0RUX05BUlJPVywKKyAgICBEZWNvbXBvc2l0aW9uTm9CcmVhayA9IE1pbmltYWxJQ1U6OlVf
RFRfTk9CUkVBSywKKyAgICBEZWNvbXBvc2l0aW9uU21hbGwgPSBNaW5pbWFsSUNVOjpVX0RUX1NN
QUxMLAorICAgIERlY29tcG9zaXRpb25TcXVhcmUgPSBNaW5pbWFsSUNVOjpVX0RUX1NRVUFSRSwK
KyAgICBEZWNvbXBvc2l0aW9uU3ViID0gTWluaW1hbElDVTo6VV9EVF9TVUIsCisgICAgRGVjb21w
b3NpdGlvblN1cGVyID0gTWluaW1hbElDVTo6VV9EVF9TVVBFUiwKKyAgICBEZWNvbXBvc2l0aW9u
VmVydGljYWwgPSBNaW5pbWFsSUNVOjpVX0RUX1ZFUlRJQ0FMLAorICAgIERlY29tcG9zaXRpb25X
aWRlID0gTWluaW1hbElDVTo6VV9EVF9XSURFCiB9OwogCiBlbnVtIENoYXJDYXRlZ29yeSB7CiAg
ICAgTm9DYXRlZ29yeSA9ICAwLAotICAgIE90aGVyX05vdEFzc2lnbmVkID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfR0VORVJBTF9PVEhFUl9UWVBFUyksCi0gICAgTGV0dGVyX1VwcGVyY2FzZSA9IFRP
X01BU0soVW5pY29kZUNFOjpVX1VQUEVSQ0FTRV9MRVRURVIpLAotICAgIExldHRlcl9Mb3dlcmNh
c2UgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MT1dFUkNBU0VfTEVUVEVSKSwKLSAgICBMZXR0ZXJf
VGl0bGVjYXNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfVElUTEVDQVNFX0xFVFRFUiksCi0gICAg
TGV0dGVyX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTU9ESUZJRVJfTEVUVEVSKSwK
LSAgICBMZXR0ZXJfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9MRVRURVIpLAot
Ci0gICAgTWFya19Ob25TcGFjaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTk9OX1NQQUNJTkdf
TUFSSyksCi0gICAgTWFya19FbmNsb3NpbmcgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9FTkNMT1NJ
TkdfTUFSSyksCi0gICAgTWFya19TcGFjaW5nQ29tYmluaW5nID0gVE9fTUFTSyhVbmljb2RlQ0U6
OlVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyksCi0KLSAgICBOdW1iZXJfRGVjaW1hbERpZ2l0ID0g
VE9fTUFTSyhVbmljb2RlQ0U6OlVfREVDSU1BTF9ESUdJVF9OVU1CRVIpLAotICAgIE51bWJlcl9M
ZXR0ZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MRVRURVJfTlVNQkVSKSwKLSAgICBOdW1iZXJf
T3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9PVEhFUl9OVU1CRVIpLAotCi0gICAgU2VwYXJh
dG9yX1NwYWNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfU1BBQ0VfU0VQQVJBVE9SKSwKLSAgICBT
ZXBhcmF0b3JfTGluZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0xJTkVfU0VQQVJBVE9SKSwKLSAg
ICBTZXBhcmF0b3JfUGFyYWdyYXBoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfUEFSQUdSQVBIX1NF
UEFSQVRPUiksCi0KLSAgICBPdGhlcl9Db250cm9sID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09O
VFJPTF9DSEFSKSwKLSAgICBPdGhlcl9Gb3JtYXQgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9GT1JN
QVRfQ0hBUiksCi0gICAgT3RoZXJfUHJpdmF0ZVVzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1BS
SVZBVEVfVVNFX0NIQVIpLAotICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFRPX01BU0soVW5pY29kZUNF
OjpVX1NVUlJPR0FURSksCi0KLSAgICBQdW5jdHVhdGlvbl9EYXNoID0gVE9fTUFTSyhVbmljb2Rl
Q0U6OlVfREFTSF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fT3BlbiA9IFRPX01BU0so
VW5pY29kZUNFOjpVX1NUQVJUX1BVTkNUVUFUSU9OKSwKLSAgICBQdW5jdHVhdGlvbl9DbG9zZSA9
IFRPX01BU0soVW5pY29kZUNFOjpVX0VORF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25f
Q29ubmVjdG9yID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfQ09OTkVDVE9SX1BVTkNUVUFUSU9OKSwK
LSAgICBQdW5jdHVhdGlvbl9PdGhlciA9IFRPX01BU0soVW5pY29kZUNFOjpVX09USEVSX1BVTkNU
VUFUSU9OKSwKLQotICAgIFN5bWJvbF9NYXRoID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTUFUSF9T
WU1CT0wpLAotICAgIFN5bWJvbF9DdXJyZW5jeSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0NVUlJF
TkNZX1NZTUJPTCksCi0gICAgU3ltYm9sX01vZGlmaWVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVf
TU9ESUZJRVJfU1lNQk9MKSwKLSAgICBTeW1ib2xfT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6
VV9PVEhFUl9TWU1CT0wpLAorICAgIE90aGVyX05vdEFzc2lnbmVkID0gVE9fTUFTSyhNaW5pbWFs
SUNVOjpVX0dFTkVSQUxfT1RIRVJfVFlQRVMpLAorICAgIExldHRlcl9VcHBlcmNhc2UgPSBUT19N
QVNLKE1pbmltYWxJQ1U6OlVfVVBQRVJDQVNFX0xFVFRFUiksCisgICAgTGV0dGVyX0xvd2VyY2Fz
ZSA9IFRPX01BU0soTWluaW1hbElDVTo6VV9MT1dFUkNBU0VfTEVUVEVSKSwKKyAgICBMZXR0ZXJf
VGl0bGVjYXNlID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX1RJVExFQ0FTRV9MRVRURVIpLAorICAg
IExldHRlcl9Nb2RpZmllciA9IFRPX01BU0soTWluaW1hbElDVTo6VV9NT0RJRklFUl9MRVRURVIp
LAorICAgIExldHRlcl9PdGhlciA9IFRPX01BU0soTWluaW1hbElDVTo6VV9PVEhFUl9MRVRURVIp
LAorCisgICAgTWFya19Ob25TcGFjaW5nID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX05PTl9TUEFD
SU5HX01BUkspLAorICAgIE1hcmtfRW5jbG9zaW5nID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX0VO
Q0xPU0lOR19NQVJLKSwKKyAgICBNYXJrX1NwYWNpbmdDb21iaW5pbmcgPSBUT19NQVNLKE1pbmlt
YWxJQ1U6OlVfQ09NQklOSU5HX1NQQUNJTkdfTUFSSyksCisKKyAgICBOdW1iZXJfRGVjaW1hbERp
Z2l0ID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX0RFQ0lNQUxfRElHSVRfTlVNQkVSKSwKKyAgICBO
dW1iZXJfTGV0dGVyID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX0xFVFRFUl9OVU1CRVIpLAorICAg
IE51bWJlcl9PdGhlciA9IFRPX01BU0soTWluaW1hbElDVTo6VV9PVEhFUl9OVU1CRVIpLAorCisg
ICAgU2VwYXJhdG9yX1NwYWNlID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX1NQQUNFX1NFUEFSQVRP
UiksCisgICAgU2VwYXJhdG9yX0xpbmUgPSBUT19NQVNLKE1pbmltYWxJQ1U6OlVfTElORV9TRVBB
UkFUT1IpLAorICAgIFNlcGFyYXRvcl9QYXJhZ3JhcGggPSBUT19NQVNLKE1pbmltYWxJQ1U6OlVf
UEFSQUdSQVBIX1NFUEFSQVRPUiksCisKKyAgICBPdGhlcl9Db250cm9sID0gVE9fTUFTSyhNaW5p
bWFsSUNVOjpVX0NPTlRST0xfQ0hBUiksCisgICAgT3RoZXJfRm9ybWF0ID0gVE9fTUFTSyhNaW5p
bWFsSUNVOjpVX0ZPUk1BVF9DSEFSKSwKKyAgICBPdGhlcl9Qcml2YXRlVXNlID0gVE9fTUFTSyhN
aW5pbWFsSUNVOjpVX1BSSVZBVEVfVVNFX0NIQVIpLAorICAgIE90aGVyX1N1cnJvZ2F0ZSA9IFRP
X01BU0soTWluaW1hbElDVTo6VV9TVVJST0dBVEUpLAorCisgICAgUHVuY3R1YXRpb25fRGFzaCA9
IFRPX01BU0soTWluaW1hbElDVTo6VV9EQVNIX1BVTkNUVUFUSU9OKSwKKyAgICBQdW5jdHVhdGlv
bl9PcGVuID0gVE9fTUFTSyhNaW5pbWFsSUNVOjpVX1NUQVJUX1BVTkNUVUFUSU9OKSwKKyAgICBQ
dW5jdHVhdGlvbl9DbG9zZSA9IFRPX01BU0soTWluaW1hbElDVTo6VV9FTkRfUFVOQ1RVQVRJT04p
LAorICAgIFB1bmN0dWF0aW9uX0Nvbm5lY3RvciA9IFRPX01BU0soTWluaW1hbElDVTo6VV9DT05O
RUNUT1JfUFVOQ1RVQVRJT04pLAorICAgIFB1bmN0dWF0aW9uX090aGVyID0gVE9fTUFTSyhNaW5p
bWFsSUNVOjpVX09USEVSX1BVTkNUVUFUSU9OKSwKKworICAgIFN5bWJvbF9NYXRoID0gVE9fTUFT
SyhNaW5pbWFsSUNVOjpVX01BVEhfU1lNQk9MKSwKKyAgICBTeW1ib2xfQ3VycmVuY3kgPSBUT19N
QVNLKE1pbmltYWxJQ1U6OlVfQ1VSUkVOQ1lfU1lNQk9MKSwKKyAgICBTeW1ib2xfTW9kaWZpZXIg
PSBUT19NQVNLKE1pbmltYWxJQ1U6OlVfTU9ESUZJRVJfU1lNQk9MKSwKKyAgICBTeW1ib2xfT3Ro
ZXIgPSBUT19NQVNLKE1pbmltYWxJQ1U6OlVfT1RIRVJfU1lNQk9MKSwKIAotICAgIFB1bmN0dWF0
aW9uX0luaXRpYWxRdW90ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0lOSVRJQUxfUFVOQ1RVQVRJ
T04pLAotICAgIFB1bmN0dWF0aW9uX0ZpbmFsUXVvdGUgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9G
SU5BTF9QVU5DVFVBVElPTikKKyAgICBQdW5jdHVhdGlvbl9Jbml0aWFsUXVvdGUgPSBUT19NQVNL
KE1pbmltYWxJQ1U6OlVfSU5JVElBTF9QVU5DVFVBVElPTiksCisgICAgUHVuY3R1YXRpb25fRmlu
YWxRdW90ZSA9IFRPX01BU0soTWluaW1hbElDVTo6VV9GSU5BTF9QVU5DVFVBVElPTikKIH07CiAK
IENoYXJDYXRlZ29yeSBjYXRlZ29yeSh1bnNpZ25lZCBpbnQpOwpAQCAtMTU1LDYgKzE1NSwxMSBA
QCBpbmxpbmUgYm9vbCBoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsCiAgICAgcmV0dXJuIGZh
bHNlOyAvLyBGSVhNRTogaW1wbGVtZW50IQogfQogCitpbmxpbmUgYm9vbCBoYXNMaW5lQnJlYWtp
bmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0T3JJZGVvZ3JhcGhpYyhVQ2hhcjMyIGMpCit7CisgICAg
cmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCiBpbmxpbmUgaW50IHVtZW1j
YXNlY21wKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbikKIHsKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CkBAIC0xNzQsNCArMTc5LDQgQEAgaW5saW5l
IFVDaGFyMzIgc3Vycm9nYXRlVG9VY3M0KFVDaGFyIGhpZwogfSAvLyBuYW1lc3BhY2UgVW5pY29k
ZQogfSAvLyBuYW1lc3BhY2UgV1RGCiAKLSNlbmRpZiAvLyBXVEZfVW5pY29kZVdpbkNFX2gKKyNl
bmRpZiAvLyBXVEZfVW5pY29kZU1pbmltYWxJQ1VfaApJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5jcHAJKHJldmlzaW9uIDcwMTQy
KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL3VuaWNvZGUvd2luY2UvVW5pY29kZVdpbkNFLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSwxODEgKzAsMCBAQAotLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDYgR2VvcmdlIFN0YWlrb3MgPHN0YWlrb3NAa2RlLm9yZz4KLSAqICBDb3B5cmlnaHQgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAbnlwb3AuY29tPgotICogIENvcHlyaWdodCAoQykg
MjAwNy0yMDA5IFRvcmNoIE1vYmlsZSwgSW5jLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiVW5pY29kZVdpbkNFLmgiCi0KLSNpbmNsdWRlIDx3Y2hhci5oPgotCi1u
YW1lc3BhY2UgV1RGIHsKLW5hbWVzcGFjZSBVbmljb2RlIHsKLQotVUNoYXIgdG9Mb3dlcihVQ2hh
ciBjKQotewotICAgIHJldHVybiB0b3dsb3dlcihjKTsKLX0KLQotVUNoYXIgdG9VcHBlcihVQ2hh
ciBjKQotewotICAgIHJldHVybiB0b3d1cHBlcihjKTsKLX0KLQotVUNoYXIgZm9sZENhc2UoVUNo
YXIgYykKLXsKLSAgICByZXR1cm4gdG93bG93ZXIoYyk7Ci19Ci0KLWJvb2wgaXNQcmludGFibGVD
aGFyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3cHJpbnQoYyk7Ci19Ci0KLWJvb2wgaXNT
cGFjZShVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3NwYWNlKGMpOwotfQotCi1ib29sIGlz
TGV0dGVyKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxwaGEoYyk7Ci19Ci0KLWJvb2wg
aXNVcHBlcihVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3VwcGVyKGMpOwotfQotCi1ib29s
IGlzTG93ZXIoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gISFpc3dsb3dlcihjKTsKLX0KLQotYm9v
bCBpc0RpZ2l0KFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3ZGlnaXQoYyk7Ci19Ci0KLWJv
b2wgaXNQdW5jdChVQ2hhciBjKQotewotICAgIHJldHVybiAhIWlzd3B1bmN0KGMpOwotfQotCi1i
b29sIGlzQWxwaGFudW1lcmljKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuICEhaXN3YWxudW0oYyk7
Ci19Ci0KLWludCB0b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0
IFVDaGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAg
Y29uc3QgVUNoYXIqIHNvdXJjZUl0ZXJhdG9yID0gc291cmNlOwotICAgIGNvbnN0IFVDaGFyKiBz
b3VyY2VFbmQgPSBzb3VyY2UgKyBzb3VyY2VMZW5ndGg7Ci0gICAgVUNoYXIqIHJlc3VsdEl0ZXJh
dG9yID0gcmVzdWx0OwotICAgIFVDaGFyKiByZXN1bHRFbmQgPSByZXN1bHQgKyByZXN1bHRMZW5n
dGg7Ci0KLSAgICBpbnQgcmVtYWluaW5nQ2hhcmFjdGVycyA9IDA7Ci0gICAgaWYgKHNvdXJjZUxl
bmd0aCA8PSByZXN1bHRMZW5ndGgpCi0gICAgICAgIHdoaWxlIChzb3VyY2VJdGVyYXRvciA8IHNv
dXJjZUVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93bG93ZXIoKnNvdXJj
ZUl0ZXJhdG9yKyspOwotICAgIGVsc2UKLSAgICAgICAgd2hpbGUgKHJlc3VsdEl0ZXJhdG9yIDwg
cmVzdWx0RW5kKQotICAgICAgICAgICAgKnJlc3VsdEl0ZXJhdG9yKysgPSB0b3dsb3dlcigqc291
cmNlSXRlcmF0b3IrKyk7Ci0KLSAgICBpZiAoc291cmNlSXRlcmF0b3IgPCBzb3VyY2VFbmQpCi0g
ICAgICAgIHJlbWFpbmluZ0NoYXJhY3RlcnMgKz0gc291cmNlRW5kIC0gc291cmNlSXRlcmF0b3I7
Ci0gICAgKmlzRXJyb3IgPSAhIXJlbWFpbmluZ0NoYXJhY3RlcnM7Ci0gICAgaWYgKHJlc3VsdEl0
ZXJhdG9yIDwgcmVzdWx0RW5kKQotICAgICAgICAqcmVzdWx0SXRlcmF0b3IgPSAwOwotCi0gICAg
cmV0dXJuIChyZXN1bHRJdGVyYXRvciAtIHJlc3VsdCkgKyByZW1haW5pbmdDaGFyYWN0ZXJzOwot
fQotCi1pbnQgdG9VcHBlcihVQ2hhciogcmVzdWx0LCBpbnQgcmVzdWx0TGVuZ3RoLCBjb25zdCBV
Q2hhciogc291cmNlLCBpbnQgc291cmNlTGVuZ3RoLCBib29sKiBpc0Vycm9yKQotewotICAgIGNv
bnN0IFVDaGFyKiBzb3VyY2VJdGVyYXRvciA9IHNvdXJjZTsKLSAgICBjb25zdCBVQ2hhciogc291
cmNlRW5kID0gc291cmNlICsgc291cmNlTGVuZ3RoOwotICAgIFVDaGFyKiByZXN1bHRJdGVyYXRv
ciA9IHJlc3VsdDsKLSAgICBVQ2hhciogcmVzdWx0RW5kID0gcmVzdWx0ICsgcmVzdWx0TGVuZ3Ro
OwotCi0gICAgaW50IHJlbWFpbmluZ0NoYXJhY3RlcnMgPSAwOwotICAgIGlmIChzb3VyY2VMZW5n
dGggPD0gcmVzdWx0TGVuZ3RoKQotICAgICAgICB3aGlsZSAoc291cmNlSXRlcmF0b3IgPCBzb3Vy
Y2VFbmQpCi0gICAgICAgICAgICAqcmVzdWx0SXRlcmF0b3IrKyA9IHRvd3VwcGVyKCpzb3VyY2VJ
dGVyYXRvcisrKTsKLSAgICBlbHNlCi0gICAgICAgIHdoaWxlIChyZXN1bHRJdGVyYXRvciA8IHJl
c3VsdEVuZCkKLSAgICAgICAgICAgICpyZXN1bHRJdGVyYXRvcisrID0gdG93dXBwZXIoKnNvdXJj
ZUl0ZXJhdG9yKyspOwotCi0gICAgaWYgKHNvdXJjZUl0ZXJhdG9yIDwgc291cmNlRW5kKQotICAg
ICAgICByZW1haW5pbmdDaGFyYWN0ZXJzICs9IHNvdXJjZUVuZCAtIHNvdXJjZUl0ZXJhdG9yOwot
ICAgICppc0Vycm9yID0gISFyZW1haW5pbmdDaGFyYWN0ZXJzOwotICAgIGlmIChyZXN1bHRJdGVy
YXRvciA8IHJlc3VsdEVuZCkKLSAgICAgICAgKnJlc3VsdEl0ZXJhdG9yID0gMDsKLQotICAgIHJl
dHVybiAocmVzdWx0SXRlcmF0b3IgLSByZXN1bHQpICsgcmVtYWluaW5nQ2hhcmFjdGVyczsKLX0K
LQotaW50IGZvbGRDYXNlKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVD
aGFyKiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpCi17Ci0gICAgKmlz
RXJyb3IgPSBmYWxzZTsKLSAgICBpZiAocmVzdWx0TGVuZ3RoIDwgc291cmNlTGVuZ3RoKSB7Ci0g
ICAgICAgICppc0Vycm9yID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUxlbmd0aDsKLSAg
ICB9Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkKLSAgICAgICAg
cmVzdWx0W2ldID0gZm9sZENhc2Uoc291cmNlW2ldKTsKLSAgICByZXR1cm4gc291cmNlTGVuZ3Ro
OwotfQotCi1VQ2hhciB0b1RpdGxlQ2FzZShVQ2hhciBjKQotewotICAgIHJldHVybiB0b3d1cHBl
cihjKTsKLX0KLQotRGlyZWN0aW9uIGRpcmVjdGlvbihVQ2hhcjMyIGMpCi17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PERpcmVjdGlvbj4oVW5pY29kZUNFOjpkaXJlY3Rpb24oYykpOwotfQotCi1D
aGFyQ2F0ZWdvcnkgY2F0ZWdvcnkodW5zaWduZWQgaW50IGMpCi17Ci0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PENoYXJDYXRlZ29yeT4oVE9fTUFTSygoX19pbnQ4KSBVbmljb2RlQ0U6OmNhdGVnb3J5
KGMpKSk7Ci19Ci0KLURlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIg
YykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGVjb21wb3NpdGlvblR5cGU+KFVuaWNvZGVD
RTo6ZGVjb21wb3NpdGlvblR5cGUoYykpOwotfQotCi11bnNpZ25lZCBjaGFyIGNvbWJpbmluZ0Ns
YXNzKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gVW5pY29kZUNFOjpjb21iaW5pbmdDbGFzcyhj
KTsKLX0KLQotVUNoYXIgbWlycm9yZWRDaGFyKFVDaGFyMzIgYykKLXsKLSAgICByZXR1cm4gVW5p
Y29kZUNFOjptaXJyb3JlZENoYXIoYyk7Ci19Ci0KLWludCBkaWdpdFZhbHVlKFVDaGFyIGMpCi17
Ci0gICAgcmV0dXJuIFVuaWNvZGVDRTo6ZGlnaXRWYWx1ZShjKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgVW5pY29kZQotfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
dW5pY29kZS93aW5jZS9Vbmljb2RlV2luQ0UuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIEphdmFTY3JpcHRD
b3JlL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCShyZXZpc2lvbiA3MDE0MikKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi91bmljb2RlL3dpbmNlL1VuaWNvZGVXaW5DRS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDE3NyArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAwNiBHZW9y
Z2UgU3RhaWtvcyA8c3RhaWtvc0BrZGUub3JnPgotICogIENvcHlyaWdodCAoQykgMjAwNiBBbGV4
ZXkgUHJvc2t1cnlha292IDxhcEBueXBvcC5jb20+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3IEFw
cGxlIENvbXB1dGVyLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQotICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIFdU
Rl9Vbmljb2RlV2luQ0VfaAotI2RlZmluZSBXVEZfVW5pY29kZVdpbkNFX2gKLQotI2luY2x1ZGUg
IlVuaWNvZGVNYWNyb3NGcm9tSUNVLmgiCi0KLSNpbmNsdWRlICJjZV91bmljb2RlLmgiCi0KLSNk
ZWZpbmUgVE9fTUFTSyh4KSAoMSA8PCAoeCkpCi0KLW5hbWVzcGFjZSBXVEYgewotbmFtZXNwYWNl
IFVuaWNvZGUgewotCi1lbnVtIERpcmVjdGlvbiB7Ci0gICAgTGVmdFRvUmlnaHQgPSBVbmljb2Rl
Q0U6OlVfTEVGVF9UT19SSUdIVCwKLSAgICBSaWdodFRvTGVmdCA9IFVuaWNvZGVDRTo6VV9SSUdI
VF9UT19MRUZULAotICAgIEV1cm9wZWFuTnVtYmVyID0gVW5pY29kZUNFOjpVX0VVUk9QRUFOX05V
TUJFUiwKLSAgICBFdXJvcGVhbk51bWJlclNlcGFyYXRvciA9IFVuaWNvZGVDRTo6VV9FVVJPUEVB
Tl9OVU1CRVJfU0VQQVJBVE9SLAotICAgIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvciA9IFVuaWNv
ZGVDRTo6VV9FVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiwKLSAgICBBcmFiaWNOdW1iZXIgPSBV
bmljb2RlQ0U6OlVfQVJBQklDX05VTUJFUiwKLSAgICBDb21tb25OdW1iZXJTZXBhcmF0b3IgPSBV
bmljb2RlQ0U6OlVfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IsCi0gICAgQmxvY2tTZXBhcmF0b3Ig
PSBVbmljb2RlQ0U6OlVfQkxPQ0tfU0VQQVJBVE9SLAotICAgIFNlZ21lbnRTZXBhcmF0b3IgPSBV
bmljb2RlQ0U6OlVfU0VHTUVOVF9TRVBBUkFUT1IsCi0gICAgV2hpdGVTcGFjZU5ldXRyYWwgPSBV
bmljb2RlQ0U6OlVfV0hJVEVfU1BBQ0VfTkVVVFJBTCwKLSAgICBPdGhlck5ldXRyYWwgPSBVbmlj
b2RlQ0U6OlVfT1RIRVJfTkVVVFJBTCwKLSAgICBMZWZ0VG9SaWdodEVtYmVkZGluZyA9IFVuaWNv
ZGVDRTo6VV9MRUZUX1RPX1JJR0hUX0VNQkVERElORywKLSAgICBMZWZ0VG9SaWdodE92ZXJyaWRl
ID0gVW5pY29kZUNFOjpVX0xFRlRfVE9fUklHSFRfT1ZFUlJJREUsCi0gICAgUmlnaHRUb0xlZnRB
cmFiaWMgPSBVbmljb2RlQ0U6OlVfUklHSFRfVE9fTEVGVF9BUkFCSUMsCi0gICAgUmlnaHRUb0xl
ZnRFbWJlZGRpbmcgPSBVbmljb2RlQ0U6OlVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcsCi0gICAg
UmlnaHRUb0xlZnRPdmVycmlkZSA9IFVuaWNvZGVDRTo6VV9SSUdIVF9UT19MRUZUX09WRVJSSURF
LAotICAgIFBvcERpcmVjdGlvbmFsRm9ybWF0ID0gVW5pY29kZUNFOjpVX1BPUF9ESVJFQ1RJT05B
TF9GT1JNQVQsCi0gICAgTm9uU3BhY2luZ01hcmsgPSBVbmljb2RlQ0U6OlVfRElSX05PTl9TUEFD
SU5HX01BUkssCi0gICAgQm91bmRhcnlOZXV0cmFsID0gVW5pY29kZUNFOjpVX0JPVU5EQVJZX05F
VVRSQUwKLX07Ci0KLWVudW0gRGVjb21wb3NpdGlvblR5cGUgewotICAgIERlY29tcG9zaXRpb25O
b25lID0gVW5pY29kZUNFOjpVX0RUX05PTkUsCi0gICAgRGVjb21wb3NpdGlvbkNhbm9uaWNhbCA9
IFVuaWNvZGVDRTo6VV9EVF9DQU5PTklDQUwsCi0gICAgRGVjb21wb3NpdGlvbkNvbXBhdCA9IFVu
aWNvZGVDRTo6VV9EVF9DT01QQVQsCi0gICAgRGVjb21wb3NpdGlvbkNpcmNsZSA9IFVuaWNvZGVD
RTo6VV9EVF9DSVJDTEUsCi0gICAgRGVjb21wb3NpdGlvbkZpbmFsID0gVW5pY29kZUNFOjpVX0RU
X0ZJTkFMLAotICAgIERlY29tcG9zaXRpb25Gb250ID0gVW5pY29kZUNFOjpVX0RUX0ZPTlQsCi0g
ICAgRGVjb21wb3NpdGlvbkZyYWN0aW9uID0gVW5pY29kZUNFOjpVX0RUX0ZSQUNUSU9OLAotICAg
IERlY29tcG9zaXRpb25Jbml0aWFsID0gVW5pY29kZUNFOjpVX0RUX0lOSVRJQUwsCi0gICAgRGVj
b21wb3NpdGlvbklzb2xhdGVkID0gVW5pY29kZUNFOjpVX0RUX0lTT0xBVEVELAotICAgIERlY29t
cG9zaXRpb25NZWRpYWwgPSBVbmljb2RlQ0U6OlVfRFRfTUVESUFMLAotICAgIERlY29tcG9zaXRp
b25OYXJyb3cgPSBVbmljb2RlQ0U6OlVfRFRfTkFSUk9XLAotICAgIERlY29tcG9zaXRpb25Ob0Jy
ZWFrID0gVW5pY29kZUNFOjpVX0RUX05PQlJFQUssCi0gICAgRGVjb21wb3NpdGlvblNtYWxsID0g
VW5pY29kZUNFOjpVX0RUX1NNQUxMLAotICAgIERlY29tcG9zaXRpb25TcXVhcmUgPSBVbmljb2Rl
Q0U6OlVfRFRfU1FVQVJFLAotICAgIERlY29tcG9zaXRpb25TdWIgPSBVbmljb2RlQ0U6OlVfRFRf
U1VCLAotICAgIERlY29tcG9zaXRpb25TdXBlciA9IFVuaWNvZGVDRTo6VV9EVF9TVVBFUiwKLSAg
ICBEZWNvbXBvc2l0aW9uVmVydGljYWwgPSBVbmljb2RlQ0U6OlVfRFRfVkVSVElDQUwsCi0gICAg
RGVjb21wb3NpdGlvbldpZGUgPSBVbmljb2RlQ0U6OlVfRFRfV0lERQotfTsKLQotZW51bSBDaGFy
Q2F0ZWdvcnkgewotICAgIE5vQ2F0ZWdvcnkgPSAgMCwKLSAgICBPdGhlcl9Ob3RBc3NpZ25lZCA9
IFRPX01BU0soVW5pY29kZUNFOjpVX0dFTkVSQUxfT1RIRVJfVFlQRVMpLAotICAgIExldHRlcl9V
cHBlcmNhc2UgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9VUFBFUkNBU0VfTEVUVEVSKSwKLSAgICBM
ZXR0ZXJfTG93ZXJjYXNlID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTE9XRVJDQVNFX0xFVFRFUiks
Ci0gICAgTGV0dGVyX1RpdGxlY2FzZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1RJVExFQ0FTRV9M
RVRURVIpLAotICAgIExldHRlcl9Nb2RpZmllciA9IFRPX01BU0soVW5pY29kZUNFOjpVX01PRElG
SUVSX0xFVFRFUiksCi0gICAgTGV0dGVyX090aGVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfT1RI
RVJfTEVUVEVSKSwKLQotICAgIE1hcmtfTm9uU3BhY2luZyA9IFRPX01BU0soVW5pY29kZUNFOjpV
X05PTl9TUEFDSU5HX01BUkspLAotICAgIE1hcmtfRW5jbG9zaW5nID0gVE9fTUFTSyhVbmljb2Rl
Q0U6OlVfRU5DTE9TSU5HX01BUkspLAotICAgIE1hcmtfU3BhY2luZ0NvbWJpbmluZyA9IFRPX01B
U0soVW5pY29kZUNFOjpVX0NPTUJJTklOR19TUEFDSU5HX01BUkspLAotCi0gICAgTnVtYmVyX0Rl
Y2ltYWxEaWdpdCA9IFRPX01BU0soVW5pY29kZUNFOjpVX0RFQ0lNQUxfRElHSVRfTlVNQkVSKSwK
LSAgICBOdW1iZXJfTGV0dGVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfTEVUVEVSX05VTUJFUiks
Ci0gICAgTnVtYmVyX090aGVyID0gVE9fTUFTSyhVbmljb2RlQ0U6OlVfT1RIRVJfTlVNQkVSKSwK
LQotICAgIFNlcGFyYXRvcl9TcGFjZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX1NQQUNFX1NFUEFS
QVRPUiksCi0gICAgU2VwYXJhdG9yX0xpbmUgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9MSU5FX1NF
UEFSQVRPUiksCi0gICAgU2VwYXJhdG9yX1BhcmFncmFwaCA9IFRPX01BU0soVW5pY29kZUNFOjpV
X1BBUkFHUkFQSF9TRVBBUkFUT1IpLAotCi0gICAgT3RoZXJfQ29udHJvbCA9IFRPX01BU0soVW5p
Y29kZUNFOjpVX0NPTlRST0xfQ0hBUiksCi0gICAgT3RoZXJfRm9ybWF0ID0gVE9fTUFTSyhVbmlj
b2RlQ0U6OlVfRk9STUFUX0NIQVIpLAotICAgIE90aGVyX1ByaXZhdGVVc2UgPSBUT19NQVNLKFVu
aWNvZGVDRTo6VV9QUklWQVRFX1VTRV9DSEFSKSwKLSAgICBPdGhlcl9TdXJyb2dhdGUgPSBUT19N
QVNLKFVuaWNvZGVDRTo6VV9TVVJST0dBVEUpLAotCi0gICAgUHVuY3R1YXRpb25fRGFzaCA9IFRP
X01BU0soVW5pY29kZUNFOjpVX0RBU0hfUFVOQ1RVQVRJT04pLAotICAgIFB1bmN0dWF0aW9uX09w
ZW4gPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9TVEFSVF9QVU5DVFVBVElPTiksCi0gICAgUHVuY3R1
YXRpb25fQ2xvc2UgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9FTkRfUFVOQ1RVQVRJT04pLAotICAg
IFB1bmN0dWF0aW9uX0Nvbm5lY3RvciA9IFRPX01BU0soVW5pY29kZUNFOjpVX0NPTk5FQ1RPUl9Q
VU5DVFVBVElPTiksCi0gICAgUHVuY3R1YXRpb25fT3RoZXIgPSBUT19NQVNLKFVuaWNvZGVDRTo6
VV9PVEhFUl9QVU5DVFVBVElPTiksCi0KLSAgICBTeW1ib2xfTWF0aCA9IFRPX01BU0soVW5pY29k
ZUNFOjpVX01BVEhfU1lNQk9MKSwKLSAgICBTeW1ib2xfQ3VycmVuY3kgPSBUT19NQVNLKFVuaWNv
ZGVDRTo6VV9DVVJSRU5DWV9TWU1CT0wpLAotICAgIFN5bWJvbF9Nb2RpZmllciA9IFRPX01BU0so
VW5pY29kZUNFOjpVX01PRElGSUVSX1NZTUJPTCksCi0gICAgU3ltYm9sX090aGVyID0gVE9fTUFT
SyhVbmljb2RlQ0U6OlVfT1RIRVJfU1lNQk9MKSwKLQotICAgIFB1bmN0dWF0aW9uX0luaXRpYWxR
dW90ZSA9IFRPX01BU0soVW5pY29kZUNFOjpVX0lOSVRJQUxfUFVOQ1RVQVRJT04pLAotICAgIFB1
bmN0dWF0aW9uX0ZpbmFsUXVvdGUgPSBUT19NQVNLKFVuaWNvZGVDRTo6VV9GSU5BTF9QVU5DVFVB
VElPTikKLX07Ci0KLUNoYXJDYXRlZ29yeSBjYXRlZ29yeSh1bnNpZ25lZCBpbnQpOwotCi1ib29s
IGlzU3BhY2UoVUNoYXIpOwotYm9vbCBpc0xldHRlcihVQ2hhcik7Ci1ib29sIGlzUHJpbnRhYmxl
Q2hhcihVQ2hhcik7Ci1ib29sIGlzVXBwZXIoVUNoYXIpOwotYm9vbCBpc0xvd2VyKFVDaGFyKTsK
LWJvb2wgaXNQdW5jdChVQ2hhcik7Ci1ib29sIGlzRGlnaXQoVUNoYXIpOwotYm9vbCBpc0FscGhh
bnVtZXJpYyhVQ2hhcik7Ci1pbmxpbmUgYm9vbCBpc1NlcGFyYXRvclNwYWNlKFVDaGFyIGMpIHsg
cmV0dXJuIGNhdGVnb3J5KGMpID09IFNlcGFyYXRvcl9TcGFjZTsgfQotaW5saW5lIGJvb2wgaXNI
aWdoU3Vycm9nYXRlKFVDaGFyIGMpIHsgcmV0dXJuIChjICYgMHhmYzAwKSA9PSAweGQ4MDA7IH0K
LWlubGluZSBib29sIGlzTG93U3Vycm9nYXRlKFVDaGFyIGMpIHsgcmV0dXJuIChjICYgMHhmYzAw
KSA9PSAweGRjMDA7IH0KLQotVUNoYXIgdG9Mb3dlcihVQ2hhcik7Ci1VQ2hhciB0b1VwcGVyKFVD
aGFyKTsKLVVDaGFyIGZvbGRDYXNlKFVDaGFyKTsKLVVDaGFyIHRvVGl0bGVDYXNlKFVDaGFyKTsK
LWludCB0b0xvd2VyKFVDaGFyKiByZXN1bHQsIGludCByZXN1bHRMZW5ndGgsIGNvbnN0IFVDaGFy
KiBzb3VyY2UsIGludCBzb3VyY2VMZW5ndGgsIGJvb2wqIGlzRXJyb3IpOwotaW50IHRvVXBwZXIo
VUNoYXIqIHJlc3VsdCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50
IHNvdXJjZUxlbmd0aCwgYm9vbCogaXNFcnJvcik7Ci1pbnQgZm9sZENhc2UoVUNoYXIqIHJlc3Vs
dCwgaW50IHJlc3VsdExlbmd0aCwgY29uc3QgVUNoYXIqIHNvdXJjZSwgaW50IHNvdXJjZUxlbmd0
aCwgYm9vbCogaXNFcnJvcik7Ci0KLWludCBkaWdpdFZhbHVlKFVDaGFyKTsKLQotVUNoYXIgbWly
cm9yZWRDaGFyKFVDaGFyMzIpOwotdW5zaWduZWQgY2hhciBjb21iaW5pbmdDbGFzcyhVQ2hhcjMy
KTsKLURlY29tcG9zaXRpb25UeXBlIGRlY29tcG9zaXRpb25UeXBlKFVDaGFyMzIpOwotRGlyZWN0
aW9uIGRpcmVjdGlvbihVQ2hhcjMyKTsKLWlubGluZSBib29sIGlzQXJhYmljQ2hhcihVQ2hhcjMy
IGMpCi17Ci0gICAgcmV0dXJuIGMgPj0gMHgwNjAwICYmIGMgPD0gMHgwNkZGOwotfQotCi1pbmxp
bmUgYm9vbCBoYXNMaW5lQnJlYWtpbmdQcm9wZXJ0eUNvbXBsZXhDb250ZXh0KFVDaGFyMzIpCi17
Ci0gICAgcmV0dXJuIGZhbHNlOyAvLyBGSVhNRTogaW1wbGVtZW50IQotfQotCi1pbmxpbmUgaW50
IHVtZW1jYXNlY21wKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgaW50IGxlbikKLXsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIFVDaGFyIGMxID0g
Zm9sZENhc2UoYVtpXSk7Ci0gICAgICAgIFVDaGFyIGMyID0gZm9sZENhc2UoYltpXSk7Ci0gICAg
ICAgIGlmIChjMSAhPSBjMikKLSAgICAgICAgICAgIHJldHVybiBjMSAtIGMyOwotICAgIH0KLSAg
ICByZXR1cm4gMDsKLX0KLQotaW5saW5lIFVDaGFyMzIgc3Vycm9nYXRlVG9VY3M0KFVDaGFyIGhp
Z2gsIFVDaGFyIGxvdykKLXsKLSAgICByZXR1cm4gKFVDaGFyMzIoaGlnaCkgPDwgMTApICsgbG93
IC0gMHgzNWZkYzAwOwotfQotCi19IC8vIG5hbWVzcGFjZSBVbmljb2RlCi19IC8vIG5hbWVzcGFj
ZSBXVEYKLQotI2VuZGlmIC8vIFdURl9Vbmljb2RlV2luQ0VfaAo=
</data>
<flag name="review"
          id="61293"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="61294"
          type_id="3"
          status="-"
          setter="paroga"
    />
          </attachment>
      

    </bug>

</bugzilla>