<?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>101860</bug_id>
          
          <creation_ts>2012-11-11 05:05:55 -0800</creation_ts>
          <short_desc>RenderStyle: Pack Color members tighter in substructures.</short_desc>
          <delta_ts>2012-11-12 07:56:37 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</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>
          <dependson>101937</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>763818</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-11 05:05:55 -0800</bug_when>
    <thetext>WebCore::Color is currently quite wasteful with its { RGBA32 rgba; bool isValid; } layout.
For colors that can never be invalid, we should just store an RGBA32. For others, we can pack the validity flags with other bitfield members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763819</commentid>
    <comment_count>1</comment_count>
      <attachid>173497</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-11 05:06:24 -0800</bug_when>
    <thetext>Created attachment 173497
EWS experiment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763820</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-11 05:08:03 -0800</bug_when>
    <thetext>Attachment 173497 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/rendering/style/RenderStyle...&quot; exit_code: 1
Source/WebCore/rendering/style/RenderStyle.cpp:977:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763821</commentid>
    <comment_count>3</comment_count>
      <attachid>173497</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-11 05:12:01 -0800</bug_when>
    <thetext>Comment on attachment 173497
EWS experiment

Attachment 173497 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14792714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763822</commentid>
    <comment_count>4</comment_count>
      <attachid>173497</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-11 05:13:27 -0800</bug_when>
    <thetext>Comment on attachment 173497
EWS experiment

Attachment 173497 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14813025</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763823</commentid>
    <comment_count>5</comment_count>
      <attachid>173497</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-11 05:18:37 -0800</bug_when>
    <thetext>Comment on attachment 173497
EWS experiment

Attachment 173497 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14809114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763829</commentid>
    <comment_count>6</comment_count>
      <attachid>173497</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-11 05:32:03 -0800</bug_when>
    <thetext>Comment on attachment 173497
EWS experiment

Attachment 173497 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14794644</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763830</commentid>
    <comment_count>7</comment_count>
      <attachid>173497</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-11-11 05:41:20 -0800</bug_when>
    <thetext>Comment on attachment 173497
EWS experiment

Attachment 173497 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14794646</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763865</commentid>
    <comment_count>8</comment_count>
      <attachid>173510</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-11 10:54:10 -0800</bug_when>
    <thetext>Created attachment 173510
EWS experiment 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763876</commentid>
    <comment_count>9</comment_count>
      <attachid>173515</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-11 12:30:05 -0800</bug_when>
    <thetext>Created attachment 173515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764163</commentid>
    <comment_count>10</comment_count>
      <attachid>173515</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-12 02:12:20 -0800</bug_when>
    <thetext>Comment on attachment 173515
Patch

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

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:978
&gt;  Color RenderStyle::color() const { return inherited-&gt;color; }
&gt;  Color RenderStyle::visitedLinkColor() const { return inherited-&gt;visitedLinkColor; }
&gt; -void RenderStyle::setColor(const Color&amp; v) { SET_VAR(inherited, color, v) };
&gt; -void RenderStyle::setVisitedLinkColor(const Color&amp; v) { SET_VAR(inherited, visitedLinkColor, v) }
&gt; +void RenderStyle::setColor(const Color&amp; v) { SET_VAR(inherited, color, v.rgb()); }
&gt; +void RenderStyle::setVisitedLinkColor(const Color&amp; v) { SET_VAR(inherited, visitedLinkColor, v.rgb()); }

Should these just take/return RGB32s? It would be good if the interface would make it clear what is being saved. 

At least there should be ASSERT(c.isValid()).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764365</commentid>
    <comment_count>11</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-12 06:45:27 -0800</bug_when>
    <thetext>Committed r134224: &lt;http://trac.webkit.org/changeset/134224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764427</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 07:56:37 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101937</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173497</attachid>
            <date>2012-11-11 05:06:24 -0800</date>
            <delta_ts>2012-11-11 10:54:10 -0800</delta_ts>
            <desc>EWS experiment</desc>
            <filename>ews-101860.diff</filename>
            <type>text/plain</type>
            <size>37022</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IDE3OWQzMjUuLjU1ZGRhMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcApAQCAtNjY3LDkgKzY2Nyw5IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5k
ZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2Vk
Q29uCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdGV4dERlY29yYXRpb25TdHlsZQogI2VuZGlmIC8vIENTUzNfVEVYVAotICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvciAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERh
dGEtPnRleHRGaWxsQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJv
a2VDb2xvciAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcgotICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IgIT0gb3RoZXItPnJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcgorICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dEZpbGxDb2xvcigpICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEZpbGxDb2xvcigpCisgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29s
b3IoKSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcigpCisgICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcigpICE9IG90aGVyLT5y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IoKQogICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEt
PnRleHRFbXBoYXNpc0ZpbGwKICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VS
ZW5kZXJpbmcgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nKQog
ICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKQEAgLTk3NCw4ICs5NzQsOCBA
QCB2b2lkIFJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IHYpCiAKIENvbG9yIFJlbmRlclN0eWxlOjpjb2xvcigpIGNvbnN0IHsgcmV0dXJuIGluaGVy
aXRlZC0+Y29sb3I7IH0KIENvbG9yIFJlbmRlclN0eWxlOjp2aXNpdGVkTGlua0NvbG9yKCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVkTGlua0NvbG9yOyB9Ci12b2lkIFJlbmRlclN0
eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgY29sb3Is
IHYpIH07Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0NvbG9yLCB2KSB9Cit2b2lkIFJl
bmRlclN0eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwg
Y29sb3IsIHYucmdiKCkpOyB9Owordm9pZCBSZW5kZXJTdHlsZTo6c2V0VmlzaXRlZExpbmtDb2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgdmlzaXRlZExpbmtDb2xvciwg
di5yZ2IoKSk7IH0KIAogc2hvcnQgUmVuZGVyU3R5bGU6Omhvcml6b250YWxCb3JkZXJTcGFjaW5n
KCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkLT5ob3Jpem9udGFsX2JvcmRlcl9zcGFjaW5nOyB9
CiBzaG9ydCBSZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJTcGFjaW5nKCkgY29uc3QgeyByZXR1
cm4gaW5oZXJpdGVkLT52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZzsgfQpAQCAtMTU2Niw2ICsxNTY2
LDEyIEBAIFRleHRFbXBoYXNpc01hcmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXNpc01hcmsoKSBj
b25zdAogICAgIHJldHVybiBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOwogfQogCit2b2lkIFJlbmRl
clN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
Cit7CisgICAgaWYgKHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211bHRpQ29sLT52aXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvcigpICE9IGNvbG9yKQorICAgICAgICByYXJlTm9uSW5oZXJpdGVkRGF0
YS5hY2Nlc3MoKS0+bV9tdWx0aUNvbC5hY2Nlc3MoKS0+c2V0VmlzaXRlZExpbmtDb2x1bW5SdWxl
Q29sb3IoY29sb3IpOworfQorCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIENvbG9yIFJlbmRl
clN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBhMWRiODcwLi5jMzBmODQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtOTYsNiAr
OTYsMTAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gaW5saW5lIGJvb2wgY29t
cGFyZUVxdWFsKGNvbnN0IFQmIHQsIGNvbnN0IFUmIHUKICAgICBpZiAoIWNvbXBhcmVFcXVhbChn
cm91cC0+dmFyaWFibGUuY29sb3IoKSwgdmFsdWUpKSBcCiAgICAgICAgIGdyb3VwLmFjY2Vzcygp
LT52YXJpYWJsZS5zZXRDb2xvcih2YWx1ZSk7CiAKKyNkZWZpbmUgU0VUX0FDQ0VTU09SX1ZBUihn
cm91cCwgZ2V0dGVyLCBzZXR0ZXIsIHZhbHVlKSBcCisgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3Jv
dXAtPmdldHRlcigpLCB2YWx1ZSkpIFwKKyAgICAgICAgZ3JvdXAuYWNjZXNzKCktPnNldHRlcih2
YWx1ZSk7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgc3RkOjptYXg7CkBAIC0xMDU4
LDcgKzEwNjIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldEJvcmRlckJvdHRvbUxlZnRSYWRp
dXMoKSB7IFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbUxlZnQsIGluaXRpYWxCb3Jk
ZXJSYWRpdXMoKSkgfQogICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21SaWdodFJhZGl1cygpIHsg
U0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tUmlnaHQsIGluaXRpYWxCb3JkZXJSYWRp
dXMoKSkgfQogCi0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsg
U0VUX1ZBUihtX2JhY2tncm91bmQsIG1fY29sb3IsIHYpIH0KKyAgICB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9jb2xvciwg
di5yZ2IoKSkgfQogCiAgICAgdm9pZCBzZXRCYWNrZ3JvdW5kWFBvc2l0aW9uKExlbmd0aCBsKSB7
IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2JhY2tncm91bmQubV94UG9zaXRpb24sIGwpIH0KICAg
ICB2b2lkIHNldEJhY2tncm91bmRZUG9zaXRpb24oTGVuZ3RoIGwpIHsgU0VUX1ZBUihtX2JhY2tn
cm91bmQsIG1fYmFja2dyb3VuZC5tX3lQb3NpdGlvbiwgbCkgfQpAQCAtMTI2MSw5ICsxMjY1LDkg
QEAgcHVibGljOgogICAgIC8vIENTUzMgU2V0dGVycwogICAgIHZvaWQgc2V0T3V0bGluZU9mZnNl
dChpbnQgdikgeyBTRVRfVkFSKG1fYmFja2dyb3VuZCwgbV9vdXRsaW5lLm1fb2Zmc2V0LCB2KSB9
CiAgICAgdm9pZCBzZXRUZXh0U2hhZG93KFBhc3NPd25QdHI8U2hhZG93RGF0YT4sIGJvb2wgYWRk
ID0gZmFsc2UpOwotICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgYykgfQorICAgIHZv
aWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9BQ0NFU1NPUl9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRleHRTdHJva2VDb2xvciwgc2V0VGV4dFN0cm9rZUNvbG9yLCBj
KSB9CiAgICAgdm9pZCBzZXRUZXh0U3Ryb2tlV2lkdGgoZmxvYXQgdykgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlV2lkdGgsIHcpIH0KLSAgICB2b2lkIHNldFRleHRGaWxs
Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZp
bGxDb2xvciwgYykgfQorICAgIHZvaWQgc2V0VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgYykg
eyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RmlsbENvbG9yLCBzZXRU
ZXh0RmlsbENvbG9yLCBjKSB9CiAgICAgdm9pZCBzZXRDb2xvclNwYWNlKENvbG9yU3BhY2Ugc3Bh
Y2UpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgY29sb3JTcGFjZSwgc3BhY2UpIH0KICAg
ICB2b2lkIHNldE9wYWNpdHkoZmxvYXQgZikgeyBmbG9hdCB2ID0gY2xhbXBUbzxmbG9hdD4oZiwg
MCwgMSk7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG9wYWNpdHksIHYpOyB9CiAgICAg
dm9pZCBzZXRBcHBlYXJhbmNlKENvbnRyb2xQYXJ0IGEpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJp
dGVkRGF0YSwgbV9hcHBlYXJhbmNlLCBhKTsgfQpAQCAtMTM0OCw3ICsxMzUyLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0VHJhbnNmb3JtT3JpZ2luWihmbG9hdCBmKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fdHJhbnNmb3JtLCBtX3osIGYpOyB9CiAgICAgdm9p
ZCBzZXRTcGVhayhFU3BlYWsgcykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBzcGVhaywg
cyk7IH0KICAgICB2b2lkIHNldFRleHRDb21iaW5lKFRleHRDb21iaW5lIHYpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV90ZXh0Q29tYmluZSwgdik7IH0KLSAgICB2b2lkIHNldFRl
eHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHRleHRFbXBoYXNpc0NvbG9yLCBjKSB9CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDb2xv
cihjb25zdCBDb2xvciYgYykgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0
ZXh0RW1waGFzaXNDb2xvciwgc2V0VGV4dEVtcGhhc2lzQ29sb3IsIGMpIH0KICAgICB2b2lkIHNl
dFRleHRFbXBoYXNpc0ZpbGwoVGV4dEVtcGhhc2lzRmlsbCBmaWxsKSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHRleHRFbXBoYXNpc0ZpbGwsIGZpbGwpOyB9CiAgICAgdm9pZCBzZXRUZXh0
RW1waGFzaXNNYXJrKFRleHRFbXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0RW1waGFzaXNNYXJrLCBtYXJrKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhh
c2lzQ3VzdG9tTWFyayhjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyaywgbWFyayk7IH0KQEAgLTE0MDcsNyAr
MTQxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250
YWluIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94Q29udGFpbiwgYyk7
IH0KICAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VU
X1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9CisgICAgdm9p
ZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYy5yZ2IoKSk7IH0KICNlbmRpZgogI2lmIEVO
QUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCiAgICAgdm9pZCBzZXRVc2VUb3Vj
aE92ZXJmbG93U2Nyb2xsaW5nKGJvb2wgdikgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB1
c2VUb3VjaE92ZXJmbG93U2Nyb2xsaW5nLCB2KTsgfQpAQCAtMTY4MCw3ICsxNjg0LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWCgpIHsgcmV0
dXJuIExlbmd0aCg1MC4wLCBQZXJjZW50KTsgfQogICAgIHN0YXRpYyBMZW5ndGggaW5pdGlhbFBl
cnNwZWN0aXZlT3JpZ2luWSgpIHsgcmV0dXJuIExlbmd0aCg1MC4wLCBQZXJjZW50KTsgfQogICAg
IHN0YXRpYyBDb2xvciBpbml0aWFsQmFja2dyb3VuZENvbG9yKCkgeyByZXR1cm4gQ29sb3I6OnRy
YW5zcGFyZW50OyB9Ci0gICAgc3RhdGljIENvbG9yIGluaXRpYWxUZXh0RW1waGFzaXNDb2xvcigp
IHsgcmV0dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KKyAgICBzdGF0aWMgQ29sb3IgaW5p
dGlhbFRleHRFbXBoYXNpc0NvbG9yKCkgeyByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OyB9CiAg
ICAgc3RhdGljIFRleHRFbXBoYXNpc0ZpbGwgaW5pdGlhbFRleHRFbXBoYXNpc0ZpbGwoKSB7IHJl
dHVybiBUZXh0RW1waGFzaXNGaWxsRmlsbGVkOyB9CiAgICAgc3RhdGljIFRleHRFbXBoYXNpc01h
cmsgaW5pdGlhbFRleHRFbXBoYXNpc01hcmsoKSB7IHJldHVybiBUZXh0RW1waGFzaXNNYXJrTm9u
ZTsgfQogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYWxUZXh0RW1waGFzaXND
dXN0b21NYXJrKCkgeyByZXR1cm4gbnVsbEF0b207IH0KQEAgLTE3NDYsMTYgKzE3NTAsMTcgQEAg
cHVibGljOgogI2VuZGlmCiBwcml2YXRlOgogICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2xvcihj
b25zdCBDb2xvciYpOwotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlu
a0JhY2tncm91bmRDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92
aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtC
b3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRl
ZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRW
aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFy
ZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgdikgfQot
ICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgdikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Is
IHYpIH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9yJiB2
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29s
b3IsIHYpIH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEuYWNjZXNzKCktPm1fbXVsdGlD
b2wsIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdikgfQotICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgdikgfQotICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IsIHYpIH0KKworICAg
IHZvaWQgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VU
X0FDQ0VTU09SX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCYWNrZ3JvdW5k
Q29sb3IsIHNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRW
aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNTT1Jf
VkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgc2V0
VmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5r
Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IsIHNldFZpc2l0ZWRM
aW5rQm9yZGVyUmlnaHRDb2xvciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLCB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCBzZXRWaXNpdGVkTGlua0Jv
cmRlckJvdHRvbUNvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclRvcENv
bG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IsIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29s
b3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5r
T3V0bGluZUNvbG9yLCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvciwgdikgfQorICAgIHZvaWQg
c2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNl
dFZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VT
U09SX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwg
c2V0VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFy
ZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciwgc2V0VmlzaXRlZExpbmtU
ZXh0RmlsbENvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xv
cihjb25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB2
aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciwgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Is
IHYpIH0KIAogICAgIHZvaWQgaW5oZXJpdFVuaWNvZGVCaWRpRnJvbShjb25zdCBSZW5kZXJTdHls
ZSogcGFyZW50KSB7IG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGkgPSBwYXJlbnQtPm5v
bmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGk7IH0KICAgICB2b2lkIGdldFNoYWRvd0V4dGVu
dChjb25zdCBTaGFkb3dEYXRhKiwgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0JiByaWdodCwg
TGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdDsKQEAgLTE3OTIsMjAg
KzE3OTcsMjAgQEAgcHJpdmF0ZToKICAgICBDb2xvciBjb2xvcigpIGNvbnN0OwogICAgIENvbG9y
IGNvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5t
X211bHRpQ29sLT5tX3J1bGUuY29sb3IoKTsgfQogICAgIENvbG9yIG91dGxpbmVDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZC0+b3V0bGluZSgpLmNvbG9yKCk7IH0KLSAgICBDb2xv
ciB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50
ZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIENvbG9yIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcjsgfQotICAgIENvbG9yIHRleHRT
dHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tl
Q29sb3I7IH0KKyAgICBDb2xvciB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcigpOyB9CisgICAgQ29sb3IgdGV4dEZp
bGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9y
KCk7IH0KKyAgICBDb2xvciB0ZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yKCk7IH0KICAgICBDb2xvciB2aXNpdGVkTGlua0Nv
bG9yKCkgY29uc3Q7Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25z
dCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3I7
IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7IH0K
LSAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcjsgfQot
ICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOyB9Ci0gICAgQ29s
b3IgdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV92aXNpdGVkTGlua091dGxpbmVDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRM
aW5rQ29sdW1uUnVsZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbXVsdGlDb2wtPm1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7IH0KLSAgICBDb2xvciB2
aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRl
ZERhdGEtPnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3I7IH0KLSAgICBDb2xvciB2aXNpdGVk
TGlua1RleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0U3Ryb2tl
Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0
U3Ryb2tlQ29sb3I7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcigpOyB9CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3Io
KTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKTsg
fQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigpOyB9
CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKCk7IH0KKyAgICBD
b2xvciB2aXNpdGVkTGlua091dGxpbmVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT52aXNpdGVkTGlua091dGxpbmVDb2xvcigpOyB9CisgICAgQ29sb3IgdmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0
YS0+bV9tdWx0aUNvbC0+dmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoKTsgfQorICAgIENvbG9y
IHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJp
dGVkRGF0YS0+dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcigpOyB9CisgICAgQ29sb3Igdmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcigpOyB9CisgICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0
U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExp
bmtUZXh0U3Ryb2tlQ29sb3IoKTsgfQogCiAgICAgQ29sb3IgY29sb3JJbmNsdWRpbmdGYWxsYmFj
ayhpbnQgY29sb3JQcm9wZXJ0eSwgYm9vbCB2aXNpdGVkTGluaykgY29uc3Q7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNw
cAppbmRleCAwOGY1NTI3Li5lZGI0NjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCkBAIC0yOCwxNSArMjgsMTUg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU3R5bGVCYWNrZ3JvdW5kRGF0YTo6U3R5bGVCYWNr
Z3JvdW5kRGF0YSgpCi0gICAgOiBtX2JhY2tncm91bmQoQmFja2dyb3VuZEZpbGxMYXllcikKLSAg
ICAsIG1fY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkKKyAgICA6
IG1fY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKS5yZ2IoKSkKKyAg
ICAsIG1fYmFja2dyb3VuZChCYWNrZ3JvdW5kRmlsbExheWVyKQogewogfQogCiBTdHlsZUJhY2tn
cm91bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEm
IG8pCiAgICAgOiBSZWZDb3VudGVkPFN0eWxlQmFja2dyb3VuZERhdGE+KCkKLSAgICAsIG1fYmFj
a2dyb3VuZChvLm1fYmFja2dyb3VuZCkKICAgICAsIG1fY29sb3Ioby5tX2NvbG9yKQorICAgICwg
bV9iYWNrZ3JvdW5kKG8ubV9iYWNrZ3JvdW5kKQogICAgICwgbV9vdXRsaW5lKG8ubV9vdXRsaW5l
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
QmFja2dyb3VuZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJh
Y2tncm91bmREYXRhLmgKaW5kZXggNDhhNzAwZS4uNjU3MjA5NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBjb25zdCBGaWxsTGF5ZXImIGJhY2tncm91
bmQoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmQ7IH0KLSAgICBjb25zdCBDb2xvciYgY29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CisgICAgY29uc3QgQ29sb3IgY29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAgICAgY29uc3QgT3V0bGluZVZhbHVlJiBvdXRsaW5l
KCkgY29uc3QgeyByZXR1cm4gbV9vdXRsaW5lOyB9CiAKIHByaXZhdGU6CkBAIC01NSw4ICs1NSw4
IEBAIHByaXZhdGU6CiAgICAgU3R5bGVCYWNrZ3JvdW5kRGF0YSgpOwogICAgIFN0eWxlQmFja2dy
b3VuZERhdGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYpOyAKIAorICAgIFJHQkEzMiBtX2Nv
bG9yOwogICAgIEZpbGxMYXllciBtX2JhY2tncm91bmQ7Ci0gICAgQ29sb3IgbV9jb2xvcjsKICAg
ICBPdXRsaW5lVmFsdWUgbV9vdXRsaW5lOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcAppbmRleCAwMjE3NDBmLi5k
MzdjMDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJ
bmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbmhlcml0ZWREYXRhLmNwcApAQCAtMzIsOCArMzIsOCBAQCBTdHlsZUluaGVyaXRlZERhdGE6
OlN0eWxlSW5oZXJpdGVkRGF0YSgpCiAgICAgLCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3BhY2luZygpKQogICAgICwgbGluZV9oZWln
aHQoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lSGVpZ2h0KCkpCiAgICAgLCBsaXN0X3N0eWxlX2lt
YWdlKFJlbmRlclN0eWxlOjppbml0aWFsTGlzdFN0eWxlSW1hZ2UoKSkKLSAgICAsIGNvbG9yKFJl
bmRlclN0eWxlOjppbml0aWFsQ29sb3IoKSkKLSAgICAsIHZpc2l0ZWRMaW5rQ29sb3IoUmVuZGVy
U3R5bGU6OmluaXRpYWxDb2xvcigpKQorICAgICwgY29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxD
b2xvcigpLnJnYigpKQorICAgICwgdmlzaXRlZExpbmtDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlh
bENvbG9yKCkucmdiKCkpCiB7CiB9CiAKQEAgLTQ3LDkgKzQ3LDkgQEAgU3R5bGVJbmhlcml0ZWRE
YXRhOjpTdHlsZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVJbmhlcml0ZWREYXRhJiBvKQogICAg
ICwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcoby52ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZykKICAg
ICAsIGxpbmVfaGVpZ2h0KG8ubGluZV9oZWlnaHQpCiAgICAgLCBsaXN0X3N0eWxlX2ltYWdlKG8u
bGlzdF9zdHlsZV9pbWFnZSkKLSAgICAsIGZvbnQoby5mb250KQogICAgICwgY29sb3Ioby5jb2xv
cikKICAgICAsIHZpc2l0ZWRMaW5rQ29sb3Ioby52aXNpdGVkTGlua0NvbG9yKQorICAgICwgZm9u
dChvLmZvbnQpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUluaGVyaXRlZERhdGEuaAppbmRleCA2Y2I3YmM1Li4zMzdmMjYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCkBA
IC01Nyw5ICs1NywxMCBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbGlzdF9z
dHlsZV9pbWFnZTsKIAorICAgIFJHQkEzMiBjb2xvcjsKKyAgICBSR0JBMzIgdmlzaXRlZExpbmtD
b2xvcjsKKwogICAgIEZvbnQgZm9udDsKLSAgICBDb2xvciBjb2xvcjsKLSAgICBDb2xvciB2aXNp
dGVkTGlua0NvbG9yOwogCiBwcml2YXRlOgogICAgIFN0eWxlSW5oZXJpdGVkRGF0YSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5j
cHAKaW5kZXggNjEwMjc3Yy4uNTA3NWY0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCkBAIC0zOSw2ICszOSw4IEBAIFN0
eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0YSgpCiAgICAgLCBtX2JyZWFrSW5zaWRl
KFJlbmRlclN0eWxlOjppbml0aWFsUGFnZUJyZWFrKCkpCiAgICAgLCBtX2F4aXMoUmVuZGVyU3R5
bGU6OmluaXRpYWxDb2x1bW5BeGlzKCkpCiAgICAgLCBtX3Byb2dyZXNzaW9uKFJlbmRlclN0eWxl
Ojppbml0aWFsQ29sdW1uUHJvZ3Jlc3Npb24oKSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IoZmFsc2UpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKENv
bG9yOjp0cmFuc3BhcmVudCkKIHsKIH0KIApAQCAtNDgsNyArNTAsNiBAQCBTdHlsZU11bHRpQ29s
RGF0YTo6U3R5bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG8pCiAgICAg
LCBtX2NvdW50KG8ubV9jb3VudCkKICAgICAsIG1fZ2FwKG8ubV9nYXApCiAgICAgLCBtX3J1bGUo
by5tX3J1bGUpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKG8ubV92aXNpdGVk
TGlua0NvbHVtblJ1bGVDb2xvcikKICAgICAsIG1fYXV0b1dpZHRoKG8ubV9hdXRvV2lkdGgpCiAg
ICAgLCBtX2F1dG9Db3VudChvLm1fYXV0b0NvdW50KQogICAgICwgbV9ub3JtYWxHYXAoby5tX25v
cm1hbEdhcCkKQEAgLTU4LDYgKzU5LDggQEAgU3R5bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlD
b2xEYXRhKGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvKQogICAgICwgbV9icmVha0luc2lkZShv
Lm1fYnJlYWtJbnNpZGUpCiAgICAgLCBtX2F4aXMoby5tX2F4aXMpCiAgICAgLCBtX3Byb2dyZXNz
aW9uKG8ubV9wcm9ncmVzc2lvbikKKyAgICAsIG1faGFzVmlzaXRlZExpbmtDb2x1bW5SdWxlQ29s
b3Ioby5tX2hhc1Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKQorICAgICwgbV92aXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvcihvLm1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IpCiB7CiB9CiAK
QEAgLTcwLDQgKzczLDEwIEBAIGJvb2wgU3R5bGVNdWx0aUNvbERhdGE6Om9wZXJhdG9yPT0oY29u
c3QgU3R5bGVNdWx0aUNvbERhdGEmIG8pIGNvbnN0CiAgICAgICAgICAgICYmIG1fcHJvZ3Jlc3Np
b24gPT0gby5tX3Byb2dyZXNzaW9uOwogfQogCit2b2lkIFN0eWxlTXVsdGlDb2xEYXRhOjpzZXRW
aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9o
YXNWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID0gY29sb3IucmdiKCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZU11bHRpQ29sRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
TXVsdGlDb2xEYXRhLmgKaW5kZXggODg4YWU2ZC4uYmZhYmRlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmgKQEAgLTU3LDcgKzU3
LDkgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIHNob3J0IG1fY291bnQ7CiAgICAgZmxvYXQgbV9n
YXA7CiAgICAgQm9yZGVyVmFsdWUgbV9ydWxlOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3I7CisKKyAgICBDb2xvciB2aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzVmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgPyBDb2xvcihtX3Zp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKSA6IENvbG9yKCk7IH0KKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJik7CiAKICAgICBib29sIG1fYXV0b1dp
ZHRoIDogMTsKICAgICBib29sIG1fYXV0b0NvdW50IDogMTsKQEAgLTcwLDYgKzcyLDkgQEAgcHVi
bGljOgogICAgIHVuc2lnbmVkIG1fcHJvZ3Jlc3Npb24gOiAyOyAvLyBDb2x1bW5Qcm9ncmVzc2lv
bgogCiBwcml2YXRlOgorICAgIGJvb2wgbV9oYXNWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciA6
IDE7CisgICAgUkdCQTMyIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3I7CisKICAgICBTdHls
ZU11bHRpQ29sRGF0YSgpOwogICAgIFN0eWxlTXVsdGlDb2xEYXRhKGNvbnN0IFN0eWxlTXVsdGlD
b2xEYXRhJik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDE2ODAyMjEuLmZmODJkMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0
ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5jcHAKQEAgLTI3LDE0ICsyNywxNCBAQAogI2luY2x1ZGUgIlJlbmRlclN0
eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTaGFk
b3dEYXRhLmgiCisjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2Ft
ZVNpemVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6
ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YT4gewotICAgIENvbG9yIGZpcnN0Q29sb3I7CiAgICAg
ZmxvYXQgZmlyc3RGbG9hdDsKLSAgICBDb2xvciBjb2xvcnNbNV07CisgICAgUkdCQTMyIGNvbG9y
c1s2XTsKICAgICB2b2lkKiBvd25QdHJzWzFdOwogICAgIEF0b21pY1N0cmluZyBhdG9taWNTdHJp
bmdzWzVdOwogICAgIHZvaWQqIHJlZlB0cnNbMl07CkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBT
YW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVT
aXplQXNTdHlsZVJhcmVJCiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAg
Q29sb3IgdG91Y2hDb2xvcnM7CisgICAgUkdCQTMyIHRvdWNoQ29sb3JzOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKQEAgLTY2LDYgKzY2LDEyIEBAIFN0eWxlUmFyZUluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgbV9lZmZlY3RpdmVab29t
KFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQogICAgICwgd2lkb3dzKFJlbmRlclN0eWxlOjpp
bml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRlclN0eWxlOjppbml0aWFsT3JwaGFu
cygpKQorICAgICwgbV9oYXNUZXh0U3Ryb2tlQ29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1RleHRG
aWxsQ29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1RleHRFbXBoYXNpc0NvbG9yKGZhbHNlKQorICAg
ICwgbV9oYXNWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yKGZhbHNlKQorICAgICwgbV9oYXNWaXNpdGVkTGlua1RleHRF
bXBoYXNpc0NvbG9yKGZhbHNlKQogICAgICwgdGV4dFNlY3VyaXR5KFJlbmRlclN0eWxlOjppbml0
aWFsVGV4dFNlY3VyaXR5KCkpCiAgICAgLCB1c2VyTW9kaWZ5KFJFQURfT05MWSkKICAgICAsIHdv
cmRCcmVhayhSZW5kZXJTdHlsZTo6aW5pdGlhbFdvcmRCcmVhaygpKQpAQCAtMTA1LDcgKzExMSwx
MCBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICNl
bmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgLCB0YXBIaWdobGlnaHRDb2xvcihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCi0jZW5kaWYgICAgCisjZW5k
aWYKKyAgICAsIG1fdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50
KQorICAgICwgbV92aXNpdGVkTGlua1RleHRGaWxsQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQor
ICAgICwgbV92aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkK
IHsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBtX3ZhcmlhYmxlcy5pbml0KCk7CkBA
IC0xMTQsMTMgKzEyMyw3IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGEoKQogCiBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pCiAgICAgOiBSZWZDb3VudGVkPFN0
eWxlUmFyZUluaGVyaXRlZERhdGE+KCkKLSAgICAsIHRleHRTdHJva2VDb2xvcihvLnRleHRTdHJv
a2VDb2xvcikKICAgICAsIHRleHRTdHJva2VXaWR0aChvLnRleHRTdHJva2VXaWR0aCkKLSAgICAs
IHRleHRGaWxsQ29sb3Ioby50ZXh0RmlsbENvbG9yKQotICAgICwgdGV4dEVtcGhhc2lzQ29sb3Io
by50ZXh0RW1waGFzaXNDb2xvcikKLSAgICAsIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKG8u
dmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IpCi0gICAgLCB2aXNpdGVkTGlua1RleHRGaWxsQ29s
b3Ioby52aXNpdGVkTGlua1RleHRGaWxsQ29sb3IpCi0gICAgLCB2aXNpdGVkTGlua1RleHRFbXBo
YXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIHRleHRTaGFk
b3coby50ZXh0U2hhZG93ID8gYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoKm8udGV4dFNoYWRvdykp
IDogbnVsbHB0cikKICAgICAsIGhpZ2hsaWdodChvLmhpZ2hsaWdodCkKICAgICAsIGN1cnNvckRh
dGEoby5jdXJzb3JEYXRhKQpAQCAtMTI4LDYgKzEzMSwxMiBAQCBTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEm
IG8pCiAgICAgLCBtX2VmZmVjdGl2ZVpvb20oby5tX2VmZmVjdGl2ZVpvb20pCiAgICAgLCB3aWRv
d3Moby53aWRvd3MpCiAgICAgLCBvcnBoYW5zKG8ub3JwaGFucykKKyAgICAsIG1faGFzVGV4dFN0
cm9rZUNvbG9yKG8ubV9oYXNUZXh0U3Ryb2tlQ29sb3IpCisgICAgLCBtX2hhc1RleHRGaWxsQ29s
b3Ioby5tX2hhc1RleHRGaWxsQ29sb3IpCisgICAgLCBtX2hhc1RleHRFbXBoYXNpc0NvbG9yKG8u
bV9oYXNUZXh0RW1waGFzaXNDb2xvcikKKyAgICAsIG1faGFzVmlzaXRlZExpbmtUZXh0U3Ryb2tl
Q29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKQorICAgICwgbV9oYXNWaXNp
dGVkTGlua1RleHRGaWxsQ29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcikKKyAg
ICAsIG1faGFzVmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihvLm1faGFzVmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcikKICAgICAsIHRleHRTZWN1cml0eShvLnRleHRTZWN1cml0eSkKICAg
ICAsIHVzZXJNb2RpZnkoby51c2VyTW9kaWZ5KQogICAgICwgd29yZEJyZWFrKG8ud29yZEJyZWFr
KQpAQCAtMTc0LDYgKzE4MywxMiBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJ
bmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pCiAjaWYgRU5BQkxF
KENTU19WQVJJQUJMRVMpCiAgICAgLCBtX3ZhcmlhYmxlcyhvLm1fdmFyaWFibGVzKQogI2VuZGlm
CisgICAgLCBtX3RleHRTdHJva2VDb2xvcihvLm1fdGV4dFN0cm9rZUNvbG9yKQorICAgICwgbV90
ZXh0RmlsbENvbG9yKG8ubV90ZXh0RmlsbENvbG9yKQorICAgICwgbV90ZXh0RW1waGFzaXNDb2xv
cihvLm1fdGV4dEVtcGhhc2lzQ29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNv
bG9yKG8ubV92aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtU
ZXh0RmlsbENvbG9yKG8ubV92aXNpdGVkTGlua1RleHRGaWxsQ29sb3IpCisgICAgLCBtX3Zpc2l0
ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Ip
CiB7CiB9CiAKQEAgLTE5MiwxMyArMjA3LDEzIEBAIHN0YXRpYyBib29sIGN1cnNvckRhdGFFcXVp
dmFsZW50KGNvbnN0IEN1cnNvckxpc3QqIGMxLCBjb25zdCBDdXJzb3JMaXN0KiBjMikKIAogYm9v
bCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVy
aXRlZERhdGEmIG8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRleHRTdHJva2VDb2xvciA9PSBvLnRl
eHRTdHJva2VDb2xvcgorICAgIHJldHVybiB0ZXh0U3Ryb2tlQ29sb3IoKSA9PSBvLnRleHRTdHJv
a2VDb2xvcigpCiAgICAgICAgICYmIHRleHRTdHJva2VXaWR0aCA9PSBvLnRleHRTdHJva2VXaWR0
aAotICAgICAgICAmJiB0ZXh0RmlsbENvbG9yID09IG8udGV4dEZpbGxDb2xvcgotICAgICAgICAm
JiB0ZXh0RW1waGFzaXNDb2xvciA9PSBvLnRleHRFbXBoYXNpc0NvbG9yCi0gICAgICAgICYmIHZp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yID09IG8udmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IK
LSAgICAgICAgJiYgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yID09IG8udmlzaXRlZExpbmtUZXh0
RmlsbENvbG9yCi0gICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IgPT0gby52
aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yCisgICAgICAgICYmIHRleHRGaWxsQ29sb3IoKSA9
PSBvLnRleHRGaWxsQ29sb3IoKQorICAgICAgICAmJiB0ZXh0RW1waGFzaXNDb2xvcigpID09IG8u
dGV4dEVtcGhhc2lzQ29sb3IoKQorICAgICAgICAmJiB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xv
cigpID09IG8udmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoKQorICAgICAgICAmJiB2aXNpdGVk
TGlua1RleHRGaWxsQ29sb3IoKSA9PSBvLnZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcigpCisgICAg
ICAgICYmIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoKSA9PSBvLnZpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3IoKQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgICAgICYmIHRh
cEhpZ2hsaWdodENvbG9yID09IG8udGFwSGlnaGxpZ2h0Q29sb3IKICNlbmRpZgpAQCAtMjYyLDYg
KzI3Nyw0MiBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OnNoYWRvd0RhdGFFcXVpdmFs
ZW50KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3ZvaWQgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1RleHRTdHJva2VDb2xvciA9IGNvbG9yLmlzVmFsaWQo
KTsKKyAgICBtX3RleHRTdHJva2VDb2xvciA9IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxl
UmFyZUluaGVyaXRlZERhdGE6OnNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQor
eworICAgIG1faGFzVGV4dEZpbGxDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3RleHRG
aWxsQ29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9pZCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpzZXRUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNU
ZXh0RW1waGFzaXNDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3RleHRFbXBoYXNpc0Nv
bG9yID0gY29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2V0
VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1f
aGFzVmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92
aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciA9IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxl
UmFyZUluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCit7CisgICAgbV9oYXNWaXNpdGVkTGlua1RleHRGaWxsQ29sb3IgPSBjb2xvci5p
c1ZhbGlkKCk7CisgICAgbV92aXNpdGVkTGlua1RleHRGaWxsQ29sb3IgPSBjb2xvci5yZ2IoKTsK
K30KKwordm9pZCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua1RleHRFbXBo
YXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1Zpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92aXNpdGVkTGlua1RleHRF
bXBoYXNpc0NvbG9yID0gY29sb3IucmdiKCk7Cit9CisKIHZvaWQgU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAppbmRleCBhMzRkZmIy
Li4wMGE2YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIFF1b3Rlc0RhdGE7CiBjbGFzcyBTaGFk
b3dEYXRhOworY2xhc3MgU3R5bGVJbWFnZTsKIAogLy8gVGhpcyBzdHJ1Y3QgaXMgZm9yIHJhcmVs
eSB1c2VkIGluaGVyaXRlZCBDU1MzLCBDU1MyLCBhbmQgV2ViS2l0LXNwZWNpZmljIHByb3BlcnRp
ZXMuCiAvLyBCeSBncm91cGluZyB0aGVtIHRvZ2V0aGVyLCB3ZSBzYXZlIHNwYWNlLCBhbmQgb25s
eSBhbGxvY2F0ZSB0aGlzIG9iamVjdCB3aGVuIHNvbWVvbmUKQEAgLTYwLDE4ICs2MSwyNSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKIAotICAgIENvbG9yIHRleHRTdHJva2VDb2xvcjsKICAgICBmbG9hdCB0ZXh0U3Ryb2tl
V2lkdGg7Ci0gICAgQ29sb3IgdGV4dEZpbGxDb2xvcjsKLSAgICBDb2xvciB0ZXh0RW1waGFzaXND
b2xvcjsKLSAgICAKLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcjsKLSAgICBD
b2xvciB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3I7Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtUZXh0
RW1waGFzaXNDb2xvcjsgICAgCiAKKyAgICBDb2xvciB0ZXh0U3Ryb2tlQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2hhc1RleHRTdHJva2VDb2xvciA/IENvbG9yKG1fdGV4dFN0cm9rZUNvbG9yKSA6
IENvbG9yKCk7IH0KKyAgICBDb2xvciB0ZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNUZXh0RmlsbENvbG9yID8gQ29sb3IobV90ZXh0RmlsbENvbG9yKSA6IENvbG9yKCk7IH0KKyAg
ICBDb2xvciB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGV4dEVtcGhh
c2lzQ29sb3IgPyBDb2xvcihtX3RleHRFbXBoYXNpc0NvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBD
b2xvciB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmlz
aXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IgPyBDb2xvcihtX3Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNv
bG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciA/IENvbG9yKG1fdmlz
aXRlZExpbmtUZXh0RmlsbENvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlu
a1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlua1RleHRF
bXBoYXNpc0NvbG9yID8gQ29sb3IobV92aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKSA6IENv
bG9yKCk7IH0KKworICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJik7Cisg
ICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRUZXh0
RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0
U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dEZp
bGxDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RW1waGFz
aXNDb2xvcihjb25zdCBDb2xvciYpOworICAgIAogICAgIE93blB0cjxTaGFkb3dEYXRhPiB0ZXh0
U2hhZG93OyAvLyBPdXIgdGV4dCBzaGFkb3cgaW5mb3JtYXRpb24gZm9yIHNoYWRvd2VkIHRleHQg
ZHJhd2luZy4KICAgICBBdG9taWNTdHJpbmcgaGlnaGxpZ2h0OyAvLyBBcHBsZS1zcGVjaWZpYyBl
eHRlbnNpb24gZm9yIGN1c3RvbSBoaWdobGlnaHQgcmVuZGVyaW5nLgotICAgIAorCiAgICAgUmVm
UHRyPEN1cnNvckxpc3Q+IGN1cnNvckRhdGE7CiAgICAgTGVuZ3RoIGluZGVudDsKICAgICBmbG9h
dCBtX2VmZmVjdGl2ZVpvb207CkBAIC03OSw3ICs4NywxMyBAQCBwdWJsaWM6CiAgICAgLy8gUGFn
ZWQgbWVkaWEgcHJvcGVydGllcy4KICAgICBzaG9ydCB3aWRvd3M7CiAgICAgc2hvcnQgb3JwaGFu
czsKLSAgICAKKworICAgIHVuc2lnbmVkIG1faGFzVGV4dFN0cm9rZUNvbG9yIDogMTsKKyAgICB1
bnNpZ25lZCBtX2hhc1RleHRGaWxsQ29sb3IgOiAxOworICAgIHVuc2lnbmVkIG1faGFzVGV4dEVt
cGhhc2lzQ29sb3IgOiAxOworICAgIHVuc2lnbmVkIG1faGFzVmlzaXRlZExpbmtUZXh0U3Ryb2tl
Q29sb3IgOiAxOworICAgIHVuc2lnbmVkIG1faGFzVmlzaXRlZExpbmtUZXh0RmlsbENvbG9yIDog
MTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IgOiAxOwog
ICAgIHVuc2lnbmVkIHRleHRTZWN1cml0eSA6IDI7IC8vIEVUZXh0U2VjdXJpdHkKICAgICB1bnNp
Z25lZCB1c2VyTW9kaWZ5IDogMjsgLy8gRVVzZXJNb2RpZnkgKGVkaXRpbmcpCiAgICAgdW5zaWdu
ZWQgd29yZEJyZWFrIDogMjsgLy8gRVdvcmRCcmVhawpAQCAtMTI5LDcgKzE0Myw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBDb2xvciB0YXBIaWdo
bGlnaHRDb2xvcjsKKyAgICBSR0JBMzIgdGFwSGlnaGxpZ2h0Q29sb3I7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQpAQCAtMTM3LDYgKzE1MSwxNCBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKKyAgICBSR0JBMzIgbV90ZXh0U3Ryb2tlQ29sb3I7CisgICAgUkdCQTMy
IG1fdGV4dEZpbGxDb2xvcjsKKyAgICBSR0JBMzIgbV90ZXh0RW1waGFzaXNDb2xvcjsKKworICAg
IFJHQkEzMiBtX3Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yOworICAgIFJHQkEzMiBtX3Zpc2l0
ZWRMaW5rVGV4dEZpbGxDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua1RleHRFbXBoYXNp
c0NvbG9yOworCiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYpOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmNwcAppbmRleCA2Yzg5ODk2Li5kZTE3YzIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGEuY3BwCkBAIC01NCw3ICs1NCw2IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgbV93cmFwTWFyZ2luKFJlbmRlclN0eWxlOjpp
bml0aWFsV3JhcE1hcmdpbigpKQogICAgICwgbV93cmFwUGFkZGluZyhSZW5kZXJTdHlsZTo6aW5p
dGlhbFdyYXBQYWRkaW5nKCkpCiAgICAgLCBtX2NsaXBQYXRoKFJlbmRlclN0eWxlOjppbml0aWFs
Q2xpcFBhdGgoKSkKLSAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkKICAgICAsIG1fb3JkZXIoUmVuZGVyU3R5bGU6
OmluaXRpYWxPcmRlcigpKQogICAgICwgbV9mbG93VGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFs
Rmxvd1RocmVhZCgpKQogICAgICwgbV9yZWdpb25UaHJlYWQoUmVuZGVyU3R5bGU6OmluaXRpYWxS
ZWdpb25UaHJlYWQoKSkKQEAgLTg4LDYgKzg3LDE5IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERh
dGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJ
TkcpCiAgICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShSZW5kZXJTdHlsZTo6aW5pdGlhbEJsZW5k
TW9kZSgpKQogI2VuZGlmCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKFJl
bmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQorICAgICwgbV9o
YXNWaXNpdGVkTGlua091dGxpbmVDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRD
b2xvcihmYWxzZSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihmYWxzZSkK
KyAgICAsIG1faGFzVmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihmYWxzZSkKKyAgICAsIG1f
dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5k
Q29sb3IoKS5yZ2IoKSkKKyAgICAsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoQ29sb3I6OnRy
YW5zcGFyZW50KQorICAgICwgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihDb2xvcjo6dHJh
bnNwYXJlbnQpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihDb2xvcjo6dHJh
bnNwYXJlbnQpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoQ29sb3I6OnRyYW5z
cGFyZW50KQorICAgICwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKENvbG9yOjp0cmFu
c3BhcmVudCkKKwogewogICAgIG1fbWFza0JveEltYWdlLnNldE1hc2tEZWZhdWx0cygpOwogfQpA
QCAtMTI4LDEyICsxNDAsNiBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogICAgICwgbV93cmFw
TWFyZ2luKG8ubV93cmFwTWFyZ2luKQogICAgICwgbV93cmFwUGFkZGluZyhvLm1fd3JhcFBhZGRp
bmcpCiAgICAgLCBtX2NsaXBQYXRoKG8ubV9jbGlwUGF0aCkKLSAgICAsIG1fdmlzaXRlZExpbmtC
YWNrZ3JvdW5kQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKQotICAgICwgbV92
aXNpdGVkTGlua091dGxpbmVDb2xvcihvLm1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCi0gICAg
LCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlckxlZnRD
b2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8ubV92aXNpdGVkTGlu
a0JvcmRlclJpZ2h0Q29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Ioby5t
X3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCiAgICAgLCBtX29yZGVy
KG8ubV9vcmRlcikKICAgICAsIG1fZmxvd1RocmVhZChvLm1fZmxvd1RocmVhZCkKICAgICAsIG1f
cmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJlYWQpCkBAIC0xNjcsNiArMTczLDE4IEBAIFN0eWxl
UmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICAsIG1f
ZWZmZWN0aXZlQmxlbmRNb2RlKG8ubV9lZmZlY3RpdmVCbGVuZE1vZGUpCiAjZW5kaWYKKyAgICAs
IG1faGFzVmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yKQorICAgICwgbV9oYXNWaXNpdGVkTGlua091dGxpbmVDb2xvcihvLm1faGFzVmlz
aXRlZExpbmtPdXRsaW5lQ29sb3IpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENv
bG9yKG8ubV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcikKKyAgICAsIG1faGFzVmlzaXRl
ZExpbmtCb3JkZXJSaWdodENvbG9yKG8ubV9oYXNWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Ip
CisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5r
Qm9yZGVyVG9wQ29sb3IpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Io
by5tX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yKG8ubV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcikKKyAgICAsIG1f
dmlzaXRlZExpbmtPdXRsaW5lQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKQorICAg
ICwgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihvLm1fdmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yKQorICAgICwgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKG8u
bV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKQorICAgICwgbV92aXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKQogewogfQogCkBAIC0y
MTMsMTIgKzIzMSwxMiBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9y
PT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiBtX3dy
YXBNYXJnaW4gPT0gby5tX3dyYXBNYXJnaW4KICAgICAgICAgJiYgbV93cmFwUGFkZGluZyA9PSBv
Lm1fd3JhcFBhZGRpbmcKICAgICAgICAgJiYgbV9jbGlwUGF0aCA9PSBvLm1fY2xpcFBhdGgKLSAg
ICAgICAgJiYgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtC
YWNrZ3JvdW5kQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua091dGxpbmVDb2xvciA9PSBv
Lm1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRl
ckxlZnRDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IKLSAgICAgICAgJiYg
bV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmln
aHRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPT0gby5tX3Zp
c2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yCisgICAgICAgICYm
IHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgPT0gby52aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKCkgPT0gby52aXNpdGVk
TGlua091dGxpbmVDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9y
KCkgPT0gby52aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRM
aW5rQm9yZGVyUmlnaHRDb2xvcigpID09IG8udmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKCkK
KyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpID09IG8udmlzaXRlZExpbmtC
b3JkZXJUb3BDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Io
KSA9PSBvLnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoKQogICAgICAgICAmJiBtX29yZGVy
ID09IG8ubV9vcmRlcgogICAgICAgICAmJiBtX2Zsb3dUaHJlYWQgPT0gby5tX2Zsb3dUaHJlYWQK
ICAgICAgICAgJiYgbV9yZWdpb25UaHJlYWQgPT0gby5tX3JlZ2lvblRocmVhZApAQCAtMzE1LDYg
KzMzMyw0MiBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnRyYW5zaXRpb25EYXRh
RXF1aXZhbGVudChjb25zdCBTdHlsZVJhcmVOb25JbmhlcgogICAgIHJldHVybiB0cnVlOwogfQog
Cit2b2lkIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rQm9yZGVyTGVm
dENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVy
TGVmdENvbG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0
Q29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9pZCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorewor
ICAgIG1faGFzVmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yID0gY29sb3IuaXNWYWxpZCgpOwor
ICAgIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yID0gY29sb3IucmdiKCk7Cit9CisKK3Zv
aWQgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6c2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNWaXNpdGVkTGlua0JvcmRlclRvcENv
bG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciA9
IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnNldFZp
c2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1f
aGFzVmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBt
X3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9pZCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNWaXNpdGVkTGlua091dGxpbmVDb2xvciA9IGNv
bG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yID0gY29sb3Iucmdi
KCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6c2V0VmlzaXRlZExpbmtC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1faGFzVmlzaXRlZExp
bmtCYWNrZ3JvdW5kQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92aXNpdGVkTGlua0Jh
Y2tncm91bmRDb2xvciA9IGNvbG9yLnJnYigpOworfQorCiB2b2lkIFN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5k
ZXggZTM3ODRkNC4uYTdkZDRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCkBAIC0xNDQsMTIgKzE0
NCwxOSBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Q2xpcFBhdGhPcGVyYXRpb24+IG1fY2xpcFBh
dGg7CiAKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yOwotICAgIENvbG9y
IG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRl
ckxlZnRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsKLSAg
ICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVk
TGlua0JvcmRlckJvdHRvbUNvbG9yOworICAgIENvbG9yIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvciA/IENv
bG9yKG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9y
IHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlu
a091dGxpbmVDb2xvciA/IENvbG9yKG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpIDogQ29sb3Io
KTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciA/IENvbG9yKG1fdmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmlzaXRlZExpbmtCb3JkZXJSaWdodENv
bG9yID8gQ29sb3IobV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IpIDogQ29sb3IoKTsgfQor
ICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hh
c1Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPyBDb2xvcihtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9w
Q29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPyBD
b2xvcihtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IpIDogQ29sb3IoKTsgfQorCisgICAg
dm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNl
dFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRW
aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGludCBtX29yZGVy
OwogCkBAIC0xOTQsNyArMjAxLDIxIEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBtX2VmZmVjdGl2
ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQogI2VuZGlmCiAKKyAgICB1bnNpZ25lZCBtX2hh
c1Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0
ZWRMaW5rT3V0bGluZUNvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rQm9y
ZGVyTGVmdENvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyUmln
aHRDb2xvciA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNWaXNpdGVkTGlua0JvcmRlclRvcENvbG9y
IDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgOiAx
OworCiBwcml2YXRlOgorICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yOwor
ICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOworICAgIFJHQkEzMiBtX3Zpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yOworICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmln
aHRDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yOworICAgIFJH
QkEzMiBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7CisKICAgICBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhKCk7CiAgICAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhJik7CiB9Owo=
</data>
<flag name="commit-queue"
          id="188203"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173510</attachid>
            <date>2012-11-11 10:54:10 -0800</date>
            <delta_ts>2012-11-11 12:30:05 -0800</delta_ts>
            <desc>EWS experiment 2</desc>
            <filename>ews-101860-2.diff</filename>
            <type>text/plain</type>
            <size>37157</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4
IDE3OWQzMjUuLmIwZjQzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcApAQCAtNjY3LDkgKzY2Nyw5IEBAIFN0eWxlRGlmZmVyZW5jZSBSZW5k
ZXJTdHlsZTo6ZGlmZihjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIsIHVuc2lnbmVkJiBjaGFuZ2Vk
Q29uCiAjaWYgRU5BQkxFKENTUzNfVEVYVCkKICAgICAgICAgfHwgcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdGV4dERlY29yYXRpb25TdHlsZSAhPSBvdGhlci0+cmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdGV4dERlY29yYXRpb25TdHlsZQogI2VuZGlmIC8vIENTUzNfVEVYVAotICAgICAgICB8fCBy
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvciAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERh
dGEtPnRleHRGaWxsQ29sb3IKLSAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJv
a2VDb2xvciAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcgotICAg
ICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IgIT0gb3RoZXItPnJh
cmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcgorICAgICAgICB8fCByYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dEZpbGxDb2xvcigpICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEZpbGxDb2xvcigpCisgICAgICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29s
b3IoKSAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcigpCisgICAg
ICAgIHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcigpICE9IG90aGVyLT5y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IoKQogICAgICAgICB8fCByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzRmlsbCAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEt
PnRleHRFbXBoYXNpc0ZpbGwKICAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VS
ZW5kZXJpbmcgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT5tX2ltYWdlUmVuZGVyaW5nKQog
ICAgICAgICByZXR1cm4gU3R5bGVEaWZmZXJlbmNlUmVwYWludDsKQEAgLTk3NCw4ICs5NzQsOCBA
QCB2b2lkIFJlbmRlclN0eWxlOjpzZXRMaXN0U3R5bGVJbWFnZShQYXNzUmVmUHRyPFN0eWxlSW1h
Z2U+IHYpCiAKIENvbG9yIFJlbmRlclN0eWxlOjpjb2xvcigpIGNvbnN0IHsgcmV0dXJuIGluaGVy
aXRlZC0+Y29sb3I7IH0KIENvbG9yIFJlbmRlclN0eWxlOjp2aXNpdGVkTGlua0NvbG9yKCkgY29u
c3QgeyByZXR1cm4gaW5oZXJpdGVkLT52aXNpdGVkTGlua0NvbG9yOyB9Ci12b2lkIFJlbmRlclN0
eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwgY29sb3Is
IHYpIH07Ci12b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9yKGNvbnN0IENvbG9y
JiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0NvbG9yLCB2KSB9Cit2b2lkIFJl
bmRlclN0eWxlOjpzZXRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKGluaGVyaXRlZCwg
Y29sb3IsIHYucmdiKCkpOyB9Cit2b2lkIFJlbmRlclN0eWxlOjpzZXRWaXNpdGVkTGlua0NvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCB2aXNpdGVkTGlua0NvbG9yLCB2
LnJnYigpKTsgfQogCiBzaG9ydCBSZW5kZXJTdHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmco
KSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmc7IH0K
IHNob3J0IFJlbmRlclN0eWxlOjp2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVy
biBpbmhlcml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOyB9CkBAIC0xNTY2LDYgKzE1NjYs
MTIgQEAgVGV4dEVtcGhhc2lzTWFyayBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhc2lzTWFyaygpIGNv
bnN0CiAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAKK3ZvaWQgUmVuZGVy
U3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
K3sKKyAgICBpZiAocmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbXVsdGlDb2wtPnZpc2l0ZWRMaW5r
Q29sdW1uUnVsZUNvbG9yKCkgIT0gY29sb3IpCisgICAgICAgIHJhcmVOb25Jbmhlcml0ZWREYXRh
LmFjY2VzcygpLT5tX211bHRpQ29sLmFjY2VzcygpLT5zZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVD
b2xvcihjb2xvcik7Cit9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogQ29sb3IgUmVuZGVy
U3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGExZGI4NzAuLmMzMGY4NDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC05Niw2ICs5
NiwxMCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgYm9vbCBjb21w
YXJlRXF1YWwoY29uc3QgVCYgdCwgY29uc3QgVSYgdQogICAgIGlmICghY29tcGFyZUVxdWFsKGdy
b3VwLT52YXJpYWJsZS5jb2xvcigpLCB2YWx1ZSkpIFwKICAgICAgICAgZ3JvdXAuYWNjZXNzKCkt
PnZhcmlhYmxlLnNldENvbG9yKHZhbHVlKTsKIAorI2RlZmluZSBTRVRfQUNDRVNTT1JfVkFSKGdy
b3VwLCBnZXR0ZXIsIHNldHRlciwgdmFsdWUpIFwKKyAgICBpZiAoIWNvbXBhcmVFcXVhbChncm91
cC0+Z2V0dGVyKCksIHZhbHVlKSkgXAorICAgICAgICBncm91cC5hY2Nlc3MoKS0+c2V0dGVyKHZh
bHVlKTsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBzdGQ6Om1heDsKQEAgLTEwNTgs
NyArMTA2Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cygpIHsgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLm1fYm90dG9tTGVmdCwgaW5pdGlhbEJvcmRl
clJhZGl1cygpKSB9CiAgICAgdm9pZCByZXNldEJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkgeyBT
RVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21SaWdodCwgaW5pdGlhbEJvcmRlclJhZGl1
cygpKSB9CiAKLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBT
RVRfVkFSKG1fYmFja2dyb3VuZCwgbV9jb2xvciwgdikgfQorICAgIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX2NvbG9yLCB2
LnJnYigpKSB9CiAKICAgICB2b2lkIHNldEJhY2tncm91bmRYUG9zaXRpb24oTGVuZ3RoIGwpIHsg
U0VUX1ZBUihtX2JhY2tncm91bmQsIG1fYmFja2dyb3VuZC5tX3hQb3NpdGlvbiwgbCkgfQogICAg
IHZvaWQgc2V0QmFja2dyb3VuZFlQb3NpdGlvbihMZW5ndGggbCkgeyBTRVRfVkFSKG1fYmFja2dy
b3VuZCwgbV9iYWNrZ3JvdW5kLm1feVBvc2l0aW9uLCBsKSB9CkBAIC0xMjYxLDkgKzEyNjUsOSBA
QCBwdWJsaWM6CiAgICAgLy8gQ1NTMyBTZXR0ZXJzCiAgICAgdm9pZCBzZXRPdXRsaW5lT2Zmc2V0
KGludCB2KSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5kLCBtX291dGxpbmUubV9vZmZzZXQsIHYpIH0K
ICAgICB2b2lkIHNldFRleHRTaGFkb3coUGFzc093blB0cjxTaGFkb3dEYXRhPiwgYm9vbCBhZGQg
PSBmYWxzZSk7Ci0gICAgdm9pZCBzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsg
U0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBjKSB9CisgICAgdm9p
ZCBzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX0FDQ0VTU09SX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFN0cm9rZUNvbG9yLCBzZXRUZXh0U3Ryb2tlQ29sb3IsIGMp
IH0KICAgICB2b2lkIHNldFRleHRTdHJva2VXaWR0aChmbG9hdCB3KSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHRleHRTdHJva2VXaWR0aCwgdykgfQotICAgIHZvaWQgc2V0VGV4dEZpbGxD
b2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0Rmls
bENvbG9yLCBjKSB9CisgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjKSB7
IFNFVF9BQ0NFU1NPUl9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRGaWxsQ29sb3IsIHNldFRl
eHRGaWxsQ29sb3IsIGMpIH0KICAgICB2b2lkIHNldENvbG9yU3BhY2UoQ29sb3JTcGFjZSBzcGFj
ZSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBjb2xvclNwYWNlLCBzcGFjZSkgfQogICAg
IHZvaWQgc2V0T3BhY2l0eShmbG9hdCBmKSB7IGZsb2F0IHYgPSBjbGFtcFRvPGZsb2F0PihmLCAw
LCAxKTsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgb3BhY2l0eSwgdik7IH0KICAgICB2
b2lkIHNldEFwcGVhcmFuY2UoQ29udHJvbFBhcnQgYSkgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0
ZWREYXRhLCBtX2FwcGVhcmFuY2UsIGEpOyB9CkBAIC0xMzQ4LDcgKzEzNTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRUcmFuc2Zvcm1PcmlnaW5aKGZsb2F0IGYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV90cmFuc2Zvcm0sIG1feiwgZik7IH0KICAgICB2b2lk
IHNldFNwZWFrKEVTcGVhayBzKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHNwZWFrLCBz
KTsgfQogICAgIHZvaWQgc2V0VGV4dENvbWJpbmUoVGV4dENvbWJpbmUgdikgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLCBtX3RleHRDb21iaW5lLCB2KTsgfQotICAgIHZvaWQgc2V0VGV4
dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgdGV4dEVtcGhhc2lzQ29sb3IsIGMpIH0KKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9y
KGNvbnN0IENvbG9yJiBjKSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRl
eHRFbXBoYXNpc0NvbG9yLCBzZXRUZXh0RW1waGFzaXNDb2xvciwgYykgfQogICAgIHZvaWQgc2V0
VGV4dEVtcGhhc2lzRmlsbChUZXh0RW1waGFzaXNGaWxsIGZpbGwpIHsgU0VUX1ZBUihyYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dEVtcGhhc2lzRmlsbCwgZmlsbCk7IH0KICAgICB2b2lkIHNldFRleHRF
bXBoYXNpc01hcmsoVGV4dEVtcGhhc2lzTWFyayBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIHRleHRFbXBoYXNpc01hcmssIG1hcmspOyB9CiAgICAgdm9pZCBzZXRUZXh0RW1waGFz
aXNDdXN0b21NYXJrKGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrLCBtYXJrKTsgfQpAQCAtMTQwNyw3ICsx
NDExLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENvbnRh
aW4gYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVCb3hDb250YWluLCBjKTsg
fQogICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsgfQogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYyk7IH0KKyAgICB2b2lk
IHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVy
aXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjLnJnYigpKTsgfQogI2VuZGlmCiAjaWYgRU5B
QkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKICAgICB2b2lkIHNldFVzZVRvdWNo
T3ZlcmZsb3dTY3JvbGxpbmcoYm9vbCB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHVz
ZVRvdWNoT3ZlcmZsb3dTY3JvbGxpbmcsIHYpOyB9CkBAIC0xNjgwLDcgKzE2ODQsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5YKCkgeyByZXR1
cm4gTGVuZ3RoKDUwLjAsIFBlcmNlbnQpOyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsUGVy
c3BlY3RpdmVPcmlnaW5ZKCkgeyByZXR1cm4gTGVuZ3RoKDUwLjAsIFBlcmNlbnQpOyB9CiAgICAg
c3RhdGljIENvbG9yIGluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6dHJh
bnNwYXJlbnQ7IH0KLSAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRleHRFbXBoYXNpc0NvbG9yKCkg
eyByZXR1cm4gVGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQorICAgIHN0YXRpYyBDb2xvciBpbml0
aWFsVGV4dEVtcGhhc2lzQ29sb3IoKSB7IHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7IH0KICAg
ICBzdGF0aWMgVGV4dEVtcGhhc2lzRmlsbCBpbml0aWFsVGV4dEVtcGhhc2lzRmlsbCgpIHsgcmV0
dXJuIFRleHRFbXBoYXNpc0ZpbGxGaWxsZWQ7IH0KICAgICBzdGF0aWMgVGV4dEVtcGhhc2lzTWFy
ayBpbml0aWFsVGV4dEVtcGhhc2lzTWFyaygpIHsgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtOb25l
OyB9CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdGlhbFRleHRFbXBoYXNpc0N1
c3RvbU1hcmsoKSB7IHJldHVybiBudWxsQXRvbTsgfQpAQCAtMTc0NiwxNiArMTc1MCwxNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbG9yKGNv
bnN0IENvbG9yJik7Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5r
QmFja2dyb3VuZENvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRD
b2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zp
c2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0Jv
cmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yLCB2KSB9Ci0g
ICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclRvcENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwg
dikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua091dGxpbmVDb2xv
ciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29s
b3ImIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9tdWx0aUNv
bCwgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCB2KSB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yLCB2KSB9Ci0gICAgdm9pZCBz
ZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJh
cmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciwgdikgfQorCisgICAg
dm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRf
QUNDRVNTT1JfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvciwgc2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9W
QVIocmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCBzZXRW
aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtC
b3JkZXJSaWdodENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgc2V0VmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFyZU5vbkluaGVy
aXRlZERhdGEsIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHNldFZpc2l0ZWRMaW5rQm9y
ZGVyQm90dG9tQ29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0
YSwgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciwgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
ciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3Im
IHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtP
dXRsaW5lQ29sb3IsIHNldFZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yLCB2KSB9CisgICAgdm9pZCBz
ZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0
VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNT
T1JfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCBz
ZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRWaXNpdGVk
TGlua1RleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJl
SW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yLCBzZXRWaXNpdGVkTGlua1Rl
eHRGaWxsQ29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9WQVIocmFyZUluaGVyaXRlZERhdGEsIHZp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvciwg
dikgfQogCiAgICAgdm9pZCBpbmhlcml0VW5pY29kZUJpZGlGcm9tKGNvbnN0IFJlbmRlclN0eWxl
KiBwYXJlbnQpIHsgbm9uaW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaSA9IHBhcmVudC0+bm9u
aW5oZXJpdGVkX2ZsYWdzLl91bmljb2RlQmlkaTsgfQogICAgIHZvaWQgZ2V0U2hhZG93RXh0ZW50
KGNvbnN0IFNoYWRvd0RhdGEqLCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBM
YXlvdXRVbml0JiBib3R0b20sIExheW91dFVuaXQmIGxlZnQpIGNvbnN0OwpAQCAtMTc5MiwyMCAr
MTc5NywyMCBAQCBwcml2YXRlOgogICAgIENvbG9yIGNvbG9yKCkgY29uc3Q7CiAgICAgQ29sb3Ig
Y29sdW1uUnVsZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
bXVsdGlDb2wtPm1fcnVsZS5jb2xvcigpOyB9CiAgICAgQ29sb3Igb3V0bGluZUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kLT5vdXRsaW5lKCkuY29sb3IoKTsgfQotICAgIENvbG9y
IHRleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRl
eHRFbXBoYXNpc0NvbG9yOyB9Ci0gICAgQ29sb3IgdGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yOyB9Ci0gICAgQ29sb3IgdGV4dFN0
cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VD
b2xvcjsgfQorICAgIENvbG9yIHRleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yKCk7IH0KKyAgICBDb2xvciB0ZXh0Rmls
bENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3Io
KTsgfQorICAgIENvbG9yIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhl
cml0ZWREYXRhLT50ZXh0U3Ryb2tlQ29sb3IoKTsgfQogICAgIENvbG9yIHZpc2l0ZWRMaW5rQ29s
b3IoKSBjb25zdDsKLSAgICBDb2xvciB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsg
fQotICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsgfQot
ICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+bV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOyB9Ci0g
ICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7IH0KLSAgICBDb2xv
ciB2aXNpdGVkTGlua091dGxpbmVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExp
bmtDb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9tdWx0aUNvbC0+bV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsgfQotICAgIENvbG9yIHZp
c2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVk
RGF0YS0+dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNp
dGVkTGlua1RleHRGaWxsQ29sb3I7IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRTdHJva2VD
b2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua1RleHRT
dHJva2VDb2xvcjsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigp
OyB9CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpOyB9
CisgICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT52aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCk7IH0K
KyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoKTsgfQorICAgIENv
bG9yIHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPnZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVk
TGlua0NvbHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRh
LT5tX211bHRpQ29sLT52aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcigpOyB9CisgICAgQ29sb3Ig
dmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0
ZWREYXRhLT52aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNp
dGVkTGlua1RleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+
dmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua1RleHRT
dHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNpdGVkTGlu
a1RleHRTdHJva2VDb2xvcigpOyB9CiAKICAgICBDb2xvciBjb2xvckluY2x1ZGluZ0ZhbGxiYWNr
KGludCBjb2xvclByb3BlcnR5LCBib29sIHZpc2l0ZWRMaW5rKSBjb25zdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3Bw
CmluZGV4IDA4ZjU1MjcuLmVkYjQ2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKQEAgLTI4LDE1ICsyOCwxNSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tn
cm91bmREYXRhKCkKLSAgICA6IG1fYmFja2dyb3VuZChCYWNrZ3JvdW5kRmlsbExheWVyKQotICAg
ICwgbV9jb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tncm91bmRDb2xvcigpKQorICAgIDog
bV9jb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tncm91bmRDb2xvcigpLnJnYigpKQorICAg
ICwgbV9iYWNrZ3JvdW5kKEJhY2tncm91bmRGaWxsTGF5ZXIpCiB7CiB9CiAKIFN0eWxlQmFja2dy
b3VuZERhdGE6OlN0eWxlQmFja2dyb3VuZERhdGEoY29uc3QgU3R5bGVCYWNrZ3JvdW5kRGF0YSYg
bykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVCYWNrZ3JvdW5kRGF0YT4oKQotICAgICwgbV9iYWNr
Z3JvdW5kKG8ubV9iYWNrZ3JvdW5kKQogICAgICwgbV9jb2xvcihvLm1fY29sb3IpCisgICAgLCBt
X2JhY2tncm91bmQoby5tX2JhY2tncm91bmQpCiAgICAgLCBtX291dGxpbmUoby5tX291dGxpbmUp
CiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVC
YWNrZ3JvdW5kRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFj
a2dyb3VuZERhdGEuaAppbmRleCA0OGE3MDBlLi42NTcyMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKQEAgLTQ2LDcg
KzQ2LDcgQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IEZpbGxMYXllciYgYmFja2dyb3Vu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja2dyb3VuZDsgfQotICAgIGNvbnN0IENvbG9yJiBjb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KKyAgICBjb25zdCBDb2xvciBjb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1fY29sb3I7IH0KICAgICBjb25zdCBPdXRsaW5lVmFsdWUmIG91dGxpbmUo
KSBjb25zdCB7IHJldHVybiBtX291dGxpbmU7IH0KIAogcHJpdmF0ZToKQEAgLTU1LDggKzU1LDgg
QEAgcHJpdmF0ZToKICAgICBTdHlsZUJhY2tncm91bmREYXRhKCk7CiAgICAgU3R5bGVCYWNrZ3Jv
dW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJik7IAogCisgICAgUkdCQTMyIG1fY29s
b3I7CiAgICAgRmlsbExheWVyIG1fYmFja2dyb3VuZDsKLSAgICBDb2xvciBtX2NvbG9yOwogICAg
IE91dGxpbmVWYWx1ZSBtX291dGxpbmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDAyMTc0MGYuLmQz
N2MwMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUlu
aGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUluaGVyaXRlZERhdGEuY3BwCkBAIC0zMiw4ICszMiw4IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6
U3R5bGVJbmhlcml0ZWREYXRhKCkKICAgICAsIHZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKFJlbmRl
clN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5nKCkpCiAgICAgLCBsaW5lX2hlaWdo
dChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSkKICAgICAsIGxpc3Rfc3R5bGVfaW1h
Z2UoUmVuZGVyU3R5bGU6OmluaXRpYWxMaXN0U3R5bGVJbWFnZSgpKQotICAgICwgY29sb3IoUmVu
ZGVyU3R5bGU6OmluaXRpYWxDb2xvcigpKQotICAgICwgdmlzaXRlZExpbmtDb2xvcihSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbG9yKCkpCisgICAgLCBjb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbENv
bG9yKCkucmdiKCkpCisgICAgLCB2aXNpdGVkTGlua0NvbG9yKFJlbmRlclN0eWxlOjppbml0aWFs
Q29sb3IoKS5yZ2IoKSkKIHsKIH0KIApAQCAtNDcsOSArNDcsOSBAQCBTdHlsZUluaGVyaXRlZERh
dGE6OlN0eWxlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZUluaGVyaXRlZERhdGEmIG8pCiAgICAg
LCB2ZXJ0aWNhbF9ib3JkZXJfc3BhY2luZyhvLnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nKQogICAg
ICwgbGluZV9oZWlnaHQoby5saW5lX2hlaWdodCkKICAgICAsIGxpc3Rfc3R5bGVfaW1hZ2Uoby5s
aXN0X3N0eWxlX2ltYWdlKQotICAgICwgZm9udChvLmZvbnQpCiAgICAgLCBjb2xvcihvLmNvbG9y
KQogICAgICwgdmlzaXRlZExpbmtDb2xvcihvLnZpc2l0ZWRMaW5rQ29sb3IpCisgICAgLCBmb250
KG8uZm9udCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlSW5oZXJpdGVkRGF0YS5oCmluZGV4IDZjYjdiYzUuLjMzN2YyNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbmhlcml0ZWREYXRhLmgKQEAg
LTU3LDkgKzU3LDEwIEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBsaXN0X3N0
eWxlX2ltYWdlOwogCisgICAgUkdCQTMyIGNvbG9yOworICAgIFJHQkEzMiB2aXNpdGVkTGlua0Nv
bG9yOworCiAgICAgRm9udCBmb250OwotICAgIENvbG9yIGNvbG9yOwotICAgIENvbG9yIHZpc2l0
ZWRMaW5rQ29sb3I7CiAKIHByaXZhdGU6CiAgICAgU3R5bGVJbmhlcml0ZWREYXRhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNw
cAppbmRleCA2MTAyNzdjLi41MDc1ZjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKQEAgLTM5LDYgKzM5LDggQEAgU3R5
bGVNdWx0aUNvbERhdGE6OlN0eWxlTXVsdGlDb2xEYXRhKCkKICAgICAsIG1fYnJlYWtJbnNpZGUo
UmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJlYWsoKSkKICAgICAsIG1fYXhpcyhSZW5kZXJTdHls
ZTo6aW5pdGlhbENvbHVtbkF4aXMoKSkKICAgICAsIG1fcHJvZ3Jlc3Npb24oUmVuZGVyU3R5bGU6
OmluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpKQorICAgICwgbV9oYXNWaXNpdGVkTGlua0NvbHVt
blJ1bGVDb2xvcihmYWxzZSkKKyAgICAsIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KQogewogfQogCkBAIC00OCw3ICs1MCw2IEBAIFN0eWxlTXVsdGlDb2xE
YXRhOjpTdHlsZU11bHRpQ29sRGF0YShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykKICAgICAs
IG1fY291bnQoby5tX2NvdW50KQogICAgICwgbV9nYXAoby5tX2dhcCkKICAgICAsIG1fcnVsZShv
Lm1fcnVsZSkKLSAgICAsIG1fdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3Ioby5tX3Zpc2l0ZWRM
aW5rQ29sdW1uUnVsZUNvbG9yKQogICAgICwgbV9hdXRvV2lkdGgoby5tX2F1dG9XaWR0aCkKICAg
ICAsIG1fYXV0b0NvdW50KG8ubV9hdXRvQ291bnQpCiAgICAgLCBtX25vcm1hbEdhcChvLm1fbm9y
bWFsR2FwKQpAQCAtNTgsNiArNTksOCBAQCBTdHlsZU11bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNv
bERhdGEoY29uc3QgU3R5bGVNdWx0aUNvbERhdGEmIG8pCiAgICAgLCBtX2JyZWFrSW5zaWRlKG8u
bV9icmVha0luc2lkZSkKICAgICAsIG1fYXhpcyhvLm1fYXhpcykKICAgICAsIG1fcHJvZ3Jlc3Np
b24oby5tX3Byb2dyZXNzaW9uKQorICAgICwgbV9oYXNWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xv
cihvLm1faGFzVmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5r
Q29sdW1uUnVsZUNvbG9yKG8ubV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKIHsKIH0KIApA
QCAtNzAsNCArNzMsMTAgQEAgYm9vbCBTdHlsZU11bHRpQ29sRGF0YTo6b3BlcmF0b3I9PShjb25z
dCBTdHlsZU11bHRpQ29sRGF0YSYgbykgY29uc3QKICAgICAgICAgICAgJiYgbV9wcm9ncmVzc2lv
biA9PSBvLm1fcHJvZ3Jlc3Npb247CiB9CiAKK3ZvaWQgU3R5bGVNdWx0aUNvbERhdGE6OnNldFZp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hh
c1Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdmlz
aXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTXVsdGlDb2xEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUNvbERhdGEuaAppbmRleCA4ODhhZTZkLi5iZmFiZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuaApAQCAtNTcsNyArNTcs
OSBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc2hvcnQgbV9jb3VudDsKICAgICBmbG9hdCBtX2dh
cDsKICAgICBCb3JkZXJWYWx1ZSBtX3J1bGU7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0NvbHVt
blJ1bGVDb2xvcjsKKworICAgIENvbG9yIHZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvciA/IENvbG9yKG1fdmlz
aXRlZExpbmtDb2x1bW5SdWxlQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGJvb2wgbV9hdXRvV2lk
dGggOiAxOwogICAgIGJvb2wgbV9hdXRvQ291bnQgOiAxOwpAQCAtNzAsNiArNzIsOSBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgbV9wcm9ncmVzc2lvbiA6IDI7IC8vIENvbHVtblByb2dyZXNzaW9u
CiAKIHByaXZhdGU6CisgICAgYm9vbCBtX2hhc1Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yIDog
MTsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcjsKKwogICAgIFN0eWxl
TXVsdGlDb2xEYXRhKCk7CiAgICAgU3R5bGVNdWx0aUNvbERhdGEoY29uc3QgU3R5bGVNdWx0aUNv
bERhdGEmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggMTY4MDIyMS4uNmQwMDIzMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcApAQCAtMjcsMTQgKzI3LDE0IEBACiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1ZGUgIlNoYWRv
d0RhdGEuaCIKKyNpbmNsdWRlICJTdHlsZUltYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1l
U2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNhbWVTaXpl
QXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhPiB7Ci0gICAgQ29sb3IgZmlyc3RDb2xvcjsKICAgICBm
bG9hdCBmaXJzdEZsb2F0OwotICAgIENvbG9yIGNvbG9yc1s1XTsKKyAgICBSR0JBMzIgY29sb3Jz
WzZdOwogICAgIHZvaWQqIG93blB0cnNbMV07CiAgICAgQXRvbWljU3RyaW5nIGF0b21pY1N0cmlu
Z3NbNV07CiAgICAgdm9pZCogcmVmUHRyc1syXTsKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IFNh
bWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U2FtZVNp
emVBc1N0eWxlUmFyZUkKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBD
b2xvciB0b3VjaENvbG9yczsKKyAgICBSR0JBMzIgdG91Y2hDb2xvcnM7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDU1NfVkFSSUFCTEVTKQpAQCAtNjYsNiArNjYsMTIgQEAgU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBtX2VmZmVjdGl2ZVpvb20o
UmVuZGVyU3R5bGU6OmluaXRpYWxab29tKCkpCiAgICAgLCB3aWRvd3MoUmVuZGVyU3R5bGU6Omlu
aXRpYWxXaWRvd3MoKSkKICAgICAsIG9ycGhhbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5z
KCkpCisgICAgLCBtX2hhc1RleHRTdHJva2VDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVGV4dEZp
bGxDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVGV4dEVtcGhhc2lzQ29sb3IoZmFsc2UpCisgICAg
LCBtX2hhc1Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKGZhbHNlKQorICAgICwgbV9oYXNWaXNp
dGVkTGlua1RleHRGaWxsQ29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEVt
cGhhc2lzQ29sb3IoZmFsc2UpCiAgICAgLCB0ZXh0U2VjdXJpdHkoUmVuZGVyU3R5bGU6OmluaXRp
YWxUZXh0U2VjdXJpdHkoKSkKICAgICAsIHVzZXJNb2RpZnkoUkVBRF9PTkxZKQogICAgICwgd29y
ZEJyZWFrKFJlbmRlclN0eWxlOjppbml0aWFsV29yZEJyZWFrKCkpCkBAIC0xMDQsOCArMTEwLDEx
IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAg
ICwgbV9pbWFnZVJlc29sdXRpb24oUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlc29sdXRpb24o
KSkKICNlbmRpZgogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgLCB0YXBIaWdobGlnaHRD
b2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCi0jZW5kaWYgICAg
CisgICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdo
dENvbG9yKCkucmdiKCkpCisjZW5kaWYKKyAgICAsIG1fdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNpdGVkTGlua1RleHRGaWxsQ29sb3Io
Q29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9y
KENvbG9yOjp0cmFuc3BhcmVudCkKIHsKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAgICBt
X3ZhcmlhYmxlcy5pbml0KCk7CkBAIC0xMTQsMTMgKzEyMyw3IEBAIFN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogCiBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8p
CiAgICAgOiBSZWZDb3VudGVkPFN0eWxlUmFyZUluaGVyaXRlZERhdGE+KCkKLSAgICAsIHRleHRT
dHJva2VDb2xvcihvLnRleHRTdHJva2VDb2xvcikKICAgICAsIHRleHRTdHJva2VXaWR0aChvLnRl
eHRTdHJva2VXaWR0aCkKLSAgICAsIHRleHRGaWxsQ29sb3Ioby50ZXh0RmlsbENvbG9yKQotICAg
ICwgdGV4dEVtcGhhc2lzQ29sb3Ioby50ZXh0RW1waGFzaXNDb2xvcikKLSAgICAsIHZpc2l0ZWRM
aW5rVGV4dFN0cm9rZUNvbG9yKG8udmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IpCi0gICAgLCB2
aXNpdGVkTGlua1RleHRGaWxsQ29sb3Ioby52aXNpdGVkTGlua1RleHRGaWxsQ29sb3IpCi0gICAg
LCB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXND
b2xvcikKICAgICAsIHRleHRTaGFkb3coby50ZXh0U2hhZG93ID8gYWRvcHRQdHIobmV3IFNoYWRv
d0RhdGEoKm8udGV4dFNoYWRvdykpIDogbnVsbHB0cikKICAgICAsIGhpZ2hsaWdodChvLmhpZ2hs
aWdodCkKICAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JEYXRhKQpAQCAtMTI4LDYgKzEzMSwxMiBA
QCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0
eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pCiAgICAgLCBtX2VmZmVjdGl2ZVpvb20oby5tX2VmZmVj
dGl2ZVpvb20pCiAgICAgLCB3aWRvd3Moby53aWRvd3MpCiAgICAgLCBvcnBoYW5zKG8ub3JwaGFu
cykKKyAgICAsIG1faGFzVGV4dFN0cm9rZUNvbG9yKG8ubV9oYXNUZXh0U3Ryb2tlQ29sb3IpCisg
ICAgLCBtX2hhc1RleHRGaWxsQ29sb3Ioby5tX2hhc1RleHRGaWxsQ29sb3IpCisgICAgLCBtX2hh
c1RleHRFbXBoYXNpc0NvbG9yKG8ubV9oYXNUZXh0RW1waGFzaXNDb2xvcikKKyAgICAsIG1faGFz
VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNv
bG9yKQorICAgICwgbV9oYXNWaXNpdGVkTGlua1RleHRGaWxsQ29sb3Ioby5tX2hhc1Zpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvcikKKyAgICAsIG1faGFzVmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xv
cihvLm1faGFzVmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKICAgICAsIHRleHRTZWN1cml0
eShvLnRleHRTZWN1cml0eSkKICAgICAsIHVzZXJNb2RpZnkoby51c2VyTW9kaWZ5KQogICAgICwg
d29yZEJyZWFrKG8ud29yZEJyZWFrKQpAQCAtMTc0LDYgKzE4MywxMiBAQCBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZUluaGVyaXRl
ZERhdGEmIG8pCiAjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCiAgICAgLCBtX3ZhcmlhYmxlcyhv
Lm1fdmFyaWFibGVzKQogI2VuZGlmCisgICAgLCBtX3RleHRTdHJva2VDb2xvcihvLm1fdGV4dFN0
cm9rZUNvbG9yKQorICAgICwgbV90ZXh0RmlsbENvbG9yKG8ubV90ZXh0RmlsbENvbG9yKQorICAg
ICwgbV90ZXh0RW1waGFzaXNDb2xvcihvLm1fdGV4dEVtcGhhc2lzQ29sb3IpCisgICAgLCBtX3Zp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKG8ubV92aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcikK
KyAgICAsIG1fdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKG8ubV92aXNpdGVkTGlua1RleHRGaWxs
Q29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Ioby5tX3Zpc2l0ZWRM
aW5rVGV4dEVtcGhhc2lzQ29sb3IpCiB7CiB9CiAKQEAgLTE5MiwxMyArMjA3LDEzIEBAIHN0YXRp
YyBib29sIGN1cnNvckRhdGFFcXVpdmFsZW50KGNvbnN0IEN1cnNvckxpc3QqIGMxLCBjb25zdCBD
dXJzb3JMaXN0KiBjMikKIAogYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09
KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRl
eHRTdHJva2VDb2xvciA9PSBvLnRleHRTdHJva2VDb2xvcgorICAgIHJldHVybiB0ZXh0U3Ryb2tl
Q29sb3IoKSA9PSBvLnRleHRTdHJva2VDb2xvcigpCiAgICAgICAgICYmIHRleHRTdHJva2VXaWR0
aCA9PSBvLnRleHRTdHJva2VXaWR0aAotICAgICAgICAmJiB0ZXh0RmlsbENvbG9yID09IG8udGV4
dEZpbGxDb2xvcgotICAgICAgICAmJiB0ZXh0RW1waGFzaXNDb2xvciA9PSBvLnRleHRFbXBoYXNp
c0NvbG9yCi0gICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yID09IG8udmlzaXRl
ZExpbmtUZXh0U3Ryb2tlQ29sb3IKLSAgICAgICAgJiYgdmlzaXRlZExpbmtUZXh0RmlsbENvbG9y
ID09IG8udmlzaXRlZExpbmtUZXh0RmlsbENvbG9yCi0gICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3IgPT0gby52aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yCisgICAgICAg
ICYmIHRleHRGaWxsQ29sb3IoKSA9PSBvLnRleHRGaWxsQ29sb3IoKQorICAgICAgICAmJiB0ZXh0
RW1waGFzaXNDb2xvcigpID09IG8udGV4dEVtcGhhc2lzQ29sb3IoKQorICAgICAgICAmJiB2aXNp
dGVkTGlua1RleHRTdHJva2VDb2xvcigpID09IG8udmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Io
KQorICAgICAgICAmJiB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IoKSA9PSBvLnZpc2l0ZWRMaW5r
VGV4dEZpbGxDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Io
KSA9PSBvLnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoKQogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAgICAgICAgICYmIHRhcEhpZ2hsaWdodENvbG9yID09IG8udGFwSGlnaGxpZ2h0Q29s
b3IKICNlbmRpZgpAQCAtMjYyLDYgKzI3Nyw0MiBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERh
dGE6OnNoYWRvd0RhdGFFcXVpdmFsZW50KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2V0VGV4
dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1RleHRTdHJva2VD
b2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3RleHRTdHJva2VDb2xvciA9IGNvbG9yLnJn
YigpOworfQorCit2b2lkIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OnNldFRleHRGaWxsQ29sb3Io
Y29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1faGFzVGV4dEZpbGxDb2xvciA9IGNvbG9yLmlz
VmFsaWQoKTsKKyAgICBtX3RleHRGaWxsQ29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9pZCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpzZXRUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCit7CisgICAgbV9oYXNUZXh0RW1waGFzaXNDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsK
KyAgICBtX3RleHRFbXBoYXNpc0NvbG9yID0gY29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YTo6c2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQoreworICAgIG1faGFzVmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IgPSBjb2xv
ci5pc1ZhbGlkKCk7CisgICAgbV92aXNpdGVkTGlua1RleHRTdHJva2VDb2xvciA9IGNvbG9yLnJn
YigpOworfQorCit2b2lkIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rVGV4
dEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNWaXNpdGVkTGlua1Rl
eHRGaWxsQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92aXNpdGVkTGlua1RleHRGaWxs
Q29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9pZCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpz
ZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAg
ICBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7Cisg
ICAgbV92aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yID0gY29sb3IucmdiKCk7Cit9CisKIHZv
aWQgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkNTUyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuaAppbmRleCBhMzRkZmIyLi4wMGE2YTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKQEAgLTQxLDYg
KzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ3Vyc29yTGlzdDsKIGNsYXNzIFF1
b3Rlc0RhdGE7CiBjbGFzcyBTaGFkb3dEYXRhOworY2xhc3MgU3R5bGVJbWFnZTsKIAogLy8gVGhp
cyBzdHJ1Y3QgaXMgZm9yIHJhcmVseSB1c2VkIGluaGVyaXRlZCBDU1MzLCBDU1MyLCBhbmQgV2Vi
S2l0LXNwZWNpZmljIHByb3BlcnRpZXMuCiAvLyBCeSBncm91cGluZyB0aGVtIHRvZ2V0aGVyLCB3
ZSBzYXZlIHNwYWNlLCBhbmQgb25seSBhbGxvY2F0ZSB0aGlzIG9iamVjdCB3aGVuIHNvbWVvbmUK
QEAgLTYwLDE4ICs2MSwyNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAotICAgIENvbG9yIHRleHRTdHJva2VDb2xvcjsK
ICAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGg7Ci0gICAgQ29sb3IgdGV4dEZpbGxDb2xvcjsKLSAg
ICBDb2xvciB0ZXh0RW1waGFzaXNDb2xvcjsKLSAgICAKLSAgICBDb2xvciB2aXNpdGVkTGlua1Rl
eHRTdHJva2VDb2xvcjsKLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3I7Ci0gICAg
Q29sb3IgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsgICAgCiAKKyAgICBDb2xvciB0ZXh0
U3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hhc1RleHRTdHJva2VDb2xvciA/IENvbG9y
KG1fdGV4dFN0cm9rZUNvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB0ZXh0RmlsbENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNUZXh0RmlsbENvbG9yID8gQ29sb3IobV90ZXh0RmlsbENv
bG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB0ZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1faGFzVGV4dEVtcGhhc2lzQ29sb3IgPyBDb2xvcihtX3RleHRFbXBoYXNpc0NvbG9y
KSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzVmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IgPyBDb2xvcihtX3Zp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVk
TGlua1RleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEZp
bGxDb2xvciA/IENvbG9yKG1fdmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKSA6IENvbG9yKCk7IH0K
KyAgICBDb2xvciB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9oYXNWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yID8gQ29sb3IobV92aXNpdGVkTGlua1Rl
eHRFbXBoYXNpc0NvbG9yKSA6IENvbG9yKCk7IH0KKworICAgIHZvaWQgc2V0VGV4dFN0cm9rZUNv
bG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9y
Jik7CisgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZv
aWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lk
IHNldFZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0
VmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcihjb25zdCBDb2xvciYpOworICAgIAogICAgIE93
blB0cjxTaGFkb3dEYXRhPiB0ZXh0U2hhZG93OyAvLyBPdXIgdGV4dCBzaGFkb3cgaW5mb3JtYXRp
b24gZm9yIHNoYWRvd2VkIHRleHQgZHJhd2luZy4KICAgICBBdG9taWNTdHJpbmcgaGlnaGxpZ2h0
OyAvLyBBcHBsZS1zcGVjaWZpYyBleHRlbnNpb24gZm9yIGN1c3RvbSBoaWdobGlnaHQgcmVuZGVy
aW5nLgotICAgIAorCiAgICAgUmVmUHRyPEN1cnNvckxpc3Q+IGN1cnNvckRhdGE7CiAgICAgTGVu
Z3RoIGluZGVudDsKICAgICBmbG9hdCBtX2VmZmVjdGl2ZVpvb207CkBAIC03OSw3ICs4NywxMyBA
QCBwdWJsaWM6CiAgICAgLy8gUGFnZWQgbWVkaWEgcHJvcGVydGllcy4KICAgICBzaG9ydCB3aWRv
d3M7CiAgICAgc2hvcnQgb3JwaGFuczsKLSAgICAKKworICAgIHVuc2lnbmVkIG1faGFzVGV4dFN0
cm9rZUNvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1RleHRGaWxsQ29sb3IgOiAxOworICAg
IHVuc2lnbmVkIG1faGFzVGV4dEVtcGhhc2lzQ29sb3IgOiAxOworICAgIHVuc2lnbmVkIG1faGFz
VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IgOiAxOworICAgIHVuc2lnbmVkIG1faGFzVmlzaXRl
ZExpbmtUZXh0RmlsbENvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rVGV4
dEVtcGhhc2lzQ29sb3IgOiAxOwogICAgIHVuc2lnbmVkIHRleHRTZWN1cml0eSA6IDI7IC8vIEVU
ZXh0U2VjdXJpdHkKICAgICB1bnNpZ25lZCB1c2VyTW9kaWZ5IDogMjsgLy8gRVVzZXJNb2RpZnkg
KGVkaXRpbmcpCiAgICAgdW5zaWduZWQgd29yZEJyZWFrIDogMjsgLy8gRVdvcmRCcmVhawpAQCAt
MTI5LDcgKzE0Myw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKLSAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKKyAgICBSR0JBMzIgdGFwSGlnaGxpZ2h0
Q29sb3I7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQpAQCAtMTM3LDYgKzE1
MSwxNCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBSR0JBMzIgbV90ZXh0U3Ry
b2tlQ29sb3I7CisgICAgUkdCQTMyIG1fdGV4dEZpbGxDb2xvcjsKKyAgICBSR0JBMzIgbV90ZXh0
RW1waGFzaXNDb2xvcjsKKworICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9y
OworICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcjsKKyAgICBSR0JBMzIgbV92
aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOworCiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YSgpOwogICAgIFN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YSYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAppbmRleCA2Yzg5ODk2Li5kZTE3YzIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC01NCw3ICs1NCw2IEBAIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogICAgICwgbV93cmFw
TWFyZ2luKFJlbmRlclN0eWxlOjppbml0aWFsV3JhcE1hcmdpbigpKQogICAgICwgbV93cmFwUGFk
ZGluZyhSZW5kZXJTdHlsZTo6aW5pdGlhbFdyYXBQYWRkaW5nKCkpCiAgICAgLCBtX2NsaXBQYXRo
KFJlbmRlclN0eWxlOjppbml0aWFsQ2xpcFBhdGgoKSkKLSAgICAsIG1fdmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKSkKICAgICAs
IG1fb3JkZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxPcmRlcigpKQogICAgICwgbV9mbG93VGhyZWFk
KFJlbmRlclN0eWxlOjppbml0aWFsRmxvd1RocmVhZCgpKQogICAgICwgbV9yZWdpb25UaHJlYWQo
UmVuZGVyU3R5bGU6OmluaXRpYWxSZWdpb25UaHJlYWQoKSkKQEAgLTg4LDYgKzg3LDE5IEBAIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJsZW5kTW9kZSgpKQogI2VuZGlmCisgICAgLCBtX2hhc1Zpc2l0ZWRM
aW5rQmFja2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCku
aXNWYWxpZCgpKQorICAgICwgbV9oYXNWaXNpdGVkTGlua091dGxpbmVDb2xvcihmYWxzZSkKKyAg
ICAsIG1faGFzVmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1Zp
c2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtC
b3JkZXJUb3BDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtCb3JkZXJCb3R0b21D
b2xvcihmYWxzZSkKKyAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoUmVuZGVyU3R5
bGU6OmluaXRpYWxCYWNrZ3JvdW5kQ29sb3IoKS5yZ2IoKSkKKyAgICAsIG1fdmlzaXRlZExpbmtP
dXRsaW5lQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNpdGVkTGlua0JvcmRl
ckxlZnRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVy
VG9wQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkKKwogewogICAgIG1fbWFza0JveEltYWdlLnNl
dE1hc2tEZWZhdWx0cygpOwogfQpAQCAtMTI4LDEyICsxNDAsNiBAQCBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbklu
aGVyaXRlZAogICAgICwgbV93cmFwTWFyZ2luKG8ubV93cmFwTWFyZ2luKQogICAgICwgbV93cmFw
UGFkZGluZyhvLm1fd3JhcFBhZGRpbmcpCiAgICAgLCBtX2NsaXBQYXRoKG8ubV9jbGlwUGF0aCkK
LSAgICAsIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yKQotICAgICwgbV92aXNpdGVkTGlua091dGxpbmVDb2xvcihvLm1fdmlzaXRlZExp
bmtPdXRsaW5lQ29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8ubV92
aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdo
dENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRM
aW5rQm9yZGVyVG9wQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCi0gICAgLCBt
X3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9t
Q29sb3IpCiAgICAgLCBtX29yZGVyKG8ubV9vcmRlcikKICAgICAsIG1fZmxvd1RocmVhZChvLm1f
Zmxvd1RocmVhZCkKICAgICAsIG1fcmVnaW9uVGhyZWFkKG8ubV9yZWdpb25UaHJlYWQpCkBAIC0x
NjcsNiArMTczLDE4IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkCiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKICAgICAsIG1fZWZmZWN0aXZlQmxlbmRNb2RlKG8ubV9lZmZlY3RpdmVCbGVu
ZE1vZGUpCiAjZW5kaWYKKyAgICAsIG1faGFzVmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Ioby5t
X2hhc1Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKQorICAgICwgbV9oYXNWaXNpdGVkTGlua091
dGxpbmVDb2xvcihvLm1faGFzVmlzaXRlZExpbmtPdXRsaW5lQ29sb3IpCisgICAgLCBtX2hhc1Zp
c2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKG8ubV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xv
cikKKyAgICAsIG1faGFzVmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKG8ubV9oYXNWaXNpdGVk
TGlua0JvcmRlclJpZ2h0Q29sb3IpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29s
b3Ioby5tX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpCisgICAgLCBtX2hhc1Zpc2l0ZWRM
aW5rQm9yZGVyQm90dG9tQ29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ip
CisgICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKG8ubV92aXNpdGVkTGlua0JhY2tn
cm91bmRDb2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3Ioby5tX3Zpc2l0ZWRM
aW5rT3V0bGluZUNvbG9yKQorICAgICwgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihvLm1f
dmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmln
aHRDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKQorICAgICwgbV92aXNpdGVk
TGlua0JvcmRlclRvcENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKQorICAgICwg
bV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlckJvdHRv
bUNvbG9yKQogewogfQogCkBAIC0yMTMsMTIgKzIzMSwxMiBAQCBib29sIFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYg
bykgYwogICAgICAgICAmJiBtX3dyYXBNYXJnaW4gPT0gby5tX3dyYXBNYXJnaW4KICAgICAgICAg
JiYgbV93cmFwUGFkZGluZyA9PSBvLm1fd3JhcFBhZGRpbmcKICAgICAgICAgJiYgbV9jbGlwUGF0
aCA9PSBvLm1fY2xpcFBhdGgKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xv
ciA9PSBvLm1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVk
TGlua091dGxpbmVDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IKLSAgICAgICAg
JiYgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciA9PSBvLm1fdmlzaXRlZExpbmtCb3JkZXJM
ZWZ0Q29sb3IKLSAgICAgICAgJiYgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IgPT0gby5t
X3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcgotICAgICAgICAmJiBtX3Zpc2l0ZWRMaW5rQm9y
ZGVyVG9wQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IKLSAgICAgICAgJiYg
bV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlckJv
dHRvbUNvbG9yCisgICAgICAgICYmIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgPT0gby52
aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5rT3V0bGlu
ZUNvbG9yKCkgPT0gby52aXNpdGVkTGlua091dGxpbmVDb2xvcigpCisgICAgICAgICYmIHZpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgPT0gby52aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigp
CisgICAgICAgICYmIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpID09IG8udmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yKCkKKyAgICAgICAgJiYgdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xv
cigpID09IG8udmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRM
aW5rQm9yZGVyQm90dG9tQ29sb3IoKSA9PSBvLnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Io
KQogICAgICAgICAmJiBtX29yZGVyID09IG8ubV9vcmRlcgogICAgICAgICAmJiBtX2Zsb3dUaHJl
YWQgPT0gby5tX2Zsb3dUaHJlYWQKICAgICAgICAgJiYgbV9yZWdpb25UaHJlYWQgPT0gby5tX3Jl
Z2lvblRocmVhZApAQCAtMzE1LDYgKzMzMyw0MiBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OnRyYW5zaXRpb25EYXRhRXF1aXZhbGVudChjb25zdCBTdHlsZVJhcmVOb25Jbmhlcgog
ICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnNl
dFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBt
X2hhc1Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1f
dmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9pZCBTdHls
ZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1faGFzVmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9y
ID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yID0g
Y29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6c2V0Vmlz
aXRlZExpbmtCb3JkZXJUb3BDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNW
aXNpdGVkTGlua0JvcmRlclRvcENvbG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvciA9IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxlUmFyZU5v
bkluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQoreworICAgIG1faGFzVmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciA9IGNv
bG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IgPSBjb2xv
ci5yZ2IoKTsKK30KKwordm9pZCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVk
TGlua091dGxpbmVDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNWaXNpdGVk
TGlua091dGxpbmVDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rT3V0
bGluZUNvbG9yID0gY29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YTo6c2V0VmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQor
eworICAgIG1faGFzVmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7
CisgICAgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvciA9IGNvbG9yLnJnYigpOworfQorCiB2
b2lkIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZv
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmgKaW5kZXggZTM3ODRkNC4uYTdkZDRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5oCkBAIC0xNDQsMTIgKzE0NCwxOSBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8Q2xpcFBh
dGhPcGVyYXRpb24+IG1fY2xpcFBhdGg7CiAKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7Ci0gICAgQ29s
b3IgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5r
Qm9yZGVyUmlnaHRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3I7
Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yOworICAgIENvbG9yIHZp
c2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlu
a0JhY2tncm91bmRDb2xvciA/IENvbG9yKG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IpIDog
Q29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNWaXNpdGVkTGlua091dGxpbmVDb2xvciA/IENvbG9yKG1fdmlzaXRlZExpbmtP
dXRsaW5lQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyTGVm
dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciA/
IENvbG9yKG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IpIDogQ29sb3IoKTsgfQorICAgIENv
bG9yIHZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmlz
aXRlZExpbmtCb3JkZXJSaWdodENvbG9yID8gQ29sb3IobV92aXNpdGVkTGlua0JvcmRlclJpZ2h0
Q29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPyBDb2xvciht
X3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0
ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5r
Qm9yZGVyQm90dG9tQ29sb3IgPyBDb2xvcihtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3Ip
IDogQ29sb3IoKTsgfQorCisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihj
b25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3Qg
Q29sb3ImKTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGNvbnN0IENv
bG9yJik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29s
b3ImKTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3Im
KTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoY29uc3QgQ29sb3Im
KTsKIAogICAgIGludCBtX29yZGVyOwogCkBAIC0xOTQsNyArMjAxLDIxIEBAIHB1YmxpYzoKICAg
ICB1bnNpZ25lZCBtX2VmZmVjdGl2ZUJsZW5kTW9kZTogNTsgLy8gRUJsZW5kTW9kZQogI2VuZGlm
CiAKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yIDogMTsKKyAg
ICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yIDogMTsKKyAgICB1bnNpZ25l
ZCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hh
c1Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNWaXNp
dGVkTGlua0JvcmRlclRvcENvbG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5r
Qm9yZGVyQm90dG9tQ29sb3IgOiAxOworCiBwcml2YXRlOgorICAgIFJHQkEzMiBtX3Zpc2l0ZWRM
aW5rQmFja2dyb3VuZENvbG9yOworICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9y
OworICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yOworICAgIFJHQkEzMiBt
X3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yOworICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7
CisKICAgICBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCk7CiAgICAgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhJik7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173515</attachid>
            <date>2012-11-11 12:30:05 -0800</date>
            <delta_ts>2012-11-12 02:12:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101860.diff</filename>
            <type>text/plain</type>
            <size>41673</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlMTEyNTRiLi5hYTBkNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTItMTEtMTEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFJlbmRlclN0eWxlOiBQYWNrIENvbG9yIG1lbWJlcnMgdGlnaHRlciBpbiBzdWJzdHJ1Y3R1
cmVzLgorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMDE4NjA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIFJlbmRlclN0eWxlIHN1YnN0
cnVjdHVyZXMgKFN0eWxlSW5oZXJpdGVkRGF0YSwgZXQgYWwuKSwgdW5mb2xkIGFsbCBXZWJDb3Jl
OjpDb2xvcgorICAgICAgICBtZW1iZXJzIGludG8gUkdCQTMyL2Jvb2wgdmFyaWFibGVzIE9SIGp1
c3QgYW4gUkdCQTMyIGlmIHRoZSBjb2xvciBjYW4gbmV2ZXIgYmUgaW52YWxpZC4KKworICAgICAg
ICBNZW1vcnkgc2F2ZWQgcGVyIGluc3RhbmNlOgorCisgICAgICAgICAgICAtIFN0eWxlTXVsdGlD
b2xEYXRhOiAgICAgICAgICA0IGJ5dGVzCisgICAgICAgICAgICAtIFN0eWxlQmFja2dyb3VuZERh
dGE6ICAgICAgICA4IGJ5dGVzCisgICAgICAgICAgICAtIFN0eWxlSW5oZXJpdGVkRGF0YTogICAg
ICAgICA4IGJ5dGVzCisgICAgICAgICAgICAtIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6ICAgIDI0
IGJ5dGVzCisgICAgICAgICAgICAtIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6IDI0IGJ5dGVz
CisKKyAgICAgICAgMzIza0IgcHJvZ3Jlc3Npb24gb24gTWVtYnVzdGVyMy4KKworICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6ZGlmZik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0Q29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNv
bG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUJhY2tncm91bmREYXRhOjpTdHlsZUJhY2tncm91bmREYXRhKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVCYWNrZ3JvdW5kRGF0YTo6Y29sb3IpOgorICAgICAgICAoU3R5bGVCYWNrZ3JvdW5k
RGF0YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUluaGVyaXRlZERhdGE6OlN0eWxlSW5oZXJpdGVkRGF0
YSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oOgorICAg
ICAgICAoU3R5bGVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVNdWx0aUNvbERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVNdWx0aUNvbERhdGE6
OlN0eWxlTXVsdGlDb2xEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTXVsdGlDb2xEYXRh
OjpzZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmg6CisgICAgICAgIChTdHlsZU11bHRpQ29sRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU11bHRpQ29sRGF0YTo6dmlzaXRlZExpbmtDb2x1bW5SdWxl
Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRh
LmNwcDoKKyAgICAgICAgKFNhbWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpzZXRUZXh0U3Ry
b2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2V0
VGV4dEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpzZXRUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua1RleHRGaWxsQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2V0VmlzaXRlZExp
bmtUZXh0RW1waGFzaXNDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuaDoKKyAgICAgICAgKFN0eWxlUmFyZUluaGVyaXRlZERhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6dGV4dFN0cm9rZUNvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRlZERhdGE6OnRleHRGaWxsQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6dGV4dEVtcGhhc2lz
Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6dmlzaXRl
ZExpbmtUZXh0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJp
dGVkRGF0YTo6dmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmFyZUluaGVyaXRlZERhdGE6OnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWRE
YXRhOjpzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6c2V0VmlzaXRl
ZExpbmtCb3JkZXJUb3BDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnNldFZp
c2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6dmlzaXRlZExpbmtPdXRsaW5lQ29sb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6dmlzaXRlZExp
bmtCb3JkZXJMZWZ0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJp
dGVkRGF0YTo6dmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6dmlzaXRlZExpbmtC
b3JkZXJCb3R0b21Db2xvcik6CisgICAgICAgIChTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKToK
KwogMjAxMi0xMS0xMCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBDb2FsZXNjZSBtYWluIHRocmVhZCBzY3JvbGwgcG9zaXRpb24gdXBkYXRlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMTc5
ZDMyNS4uYjBmNDNiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCkBAIC02NjcsOSArNjY3LDkgQEAgU3R5bGVEaWZmZXJlbmNlIFJlbmRlclN0
eWxlOjpkaWZmKGNvbnN0IFJlbmRlclN0eWxlKiBvdGhlciwgdW5zaWduZWQmIGNoYW5nZWRDb24K
ICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgICAgICB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV90ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLT5yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90
ZXh0RGVjb3JhdGlvblN0eWxlCiAjZW5kaWYgLy8gQ1NTM19URVhUCi0gICAgICAgIHx8IHJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RmlsbENvbG9yICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+
dGV4dEZpbGxDb2xvcgotICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNv
bG9yICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yCi0gICAgICAg
IHx8IHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvciAhPSBvdGhlci0+cmFyZUlu
aGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yCisgICAgICAgIHx8IHJhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RmlsbENvbG9yKCkgIT0gb3RoZXItPnJhcmVJbmhlcml0ZWREYXRhLT50ZXh0Rmls
bENvbG9yKCkKKyAgICAgICAgfHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRTdHJva2VDb2xvcigp
ICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9yKCkKKyAgICAgICAg
fHwgcmFyZUluaGVyaXRlZERhdGEtPnRleHRFbXBoYXNpc0NvbG9yKCkgIT0gb3RoZXItPnJhcmVJ
bmhlcml0ZWREYXRhLT50ZXh0RW1waGFzaXNDb2xvcigpCiAgICAgICAgIHx8IHJhcmVJbmhlcml0
ZWREYXRhLT50ZXh0RW1waGFzaXNGaWxsICE9IG90aGVyLT5yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dEVtcGhhc2lzRmlsbAogICAgICAgICB8fCByYXJlSW5oZXJpdGVkRGF0YS0+bV9pbWFnZVJlbmRl
cmluZyAhPSBvdGhlci0+cmFyZUluaGVyaXRlZERhdGEtPm1faW1hZ2VSZW5kZXJpbmcpCiAgICAg
ICAgIHJldHVybiBTdHlsZURpZmZlcmVuY2VSZXBhaW50OwpAQCAtOTc0LDggKzk3NCw4IEBAIHZv
aWQgUmVuZGVyU3R5bGU6OnNldExpc3RTdHlsZUltYWdlKFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4g
dikKIAogQ29sb3IgUmVuZGVyU3R5bGU6OmNvbG9yKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVk
LT5jb2xvcjsgfQogQ29sb3IgUmVuZGVyU3R5bGU6OnZpc2l0ZWRMaW5rQ29sb3IoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPnZpc2l0ZWRMaW5rQ29sb3I7IH0KLXZvaWQgUmVuZGVyU3R5bGU6
OnNldENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xvciwgdikg
fTsKLXZvaWQgUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3QgQ29sb3ImIHYp
IHsgU0VUX1ZBUihpbmhlcml0ZWQsIHZpc2l0ZWRMaW5rQ29sb3IsIHYpIH0KK3ZvaWQgUmVuZGVy
U3R5bGU6OnNldENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIoaW5oZXJpdGVkLCBjb2xv
ciwgdi5yZ2IoKSk7IH0KK3ZvaWQgUmVuZGVyU3R5bGU6OnNldFZpc2l0ZWRMaW5rQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihpbmhlcml0ZWQsIHZpc2l0ZWRMaW5rQ29sb3IsIHYucmdi
KCkpOyB9CiAKIHNob3J0IFJlbmRlclN0eWxlOjpob3Jpem9udGFsQm9yZGVyU3BhY2luZygpIGNv
bnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+aG9yaXpvbnRhbF9ib3JkZXJfc3BhY2luZzsgfQogc2hv
cnQgUmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGlu
aGVyaXRlZC0+dmVydGljYWxfYm9yZGVyX3NwYWNpbmc7IH0KQEAgLTE1NjYsNiArMTU2NiwxMiBA
QCBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzaXNNYXJrKCkgY29uc3QK
ICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsKIH0KIAordm9pZCBSZW5kZXJTdHls
ZTo6c2V0VmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQorewor
ICAgIGlmIChyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0aUNvbC0+dmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3IoKSAhPSBjb2xvcikKKyAgICAgICAgcmFyZU5vbkluaGVyaXRlZERhdGEuYWNj
ZXNzKCktPm1fbXVsdGlDb2wuYWNjZXNzKCktPnNldFZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9y
KGNvbG9yKTsKK30KKwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBDb2xvciBSZW5kZXJTdHls
ZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggYTFkYjg3MC4uYzMwZjg0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTk2LDYgKzk2LDEw
IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBib29sIGNvbXBhcmVF
cXVhbChjb25zdCBUJiB0LCBjb25zdCBVJiB1CiAgICAgaWYgKCFjb21wYXJlRXF1YWwoZ3JvdXAt
PnZhcmlhYmxlLmNvbG9yKCksIHZhbHVlKSkgXAogICAgICAgICBncm91cC5hY2Nlc3MoKS0+dmFy
aWFibGUuc2V0Q29sb3IodmFsdWUpOwogCisjZGVmaW5lIFNFVF9BQ0NFU1NPUl9WQVIoZ3JvdXAs
IGdldHRlciwgc2V0dGVyLCB2YWx1ZSkgXAorICAgIGlmICghY29tcGFyZUVxdWFsKGdyb3VwLT5n
ZXR0ZXIoKSwgdmFsdWUpKSBcCisgICAgICAgIGdyb3VwLmFjY2VzcygpLT5zZXR0ZXIodmFsdWUp
OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIHN0ZDo6bWF4OwpAQCAtMTA1OCw3ICsx
MDYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkg
eyBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIubV9ib3R0b21MZWZ0LCBpbml0aWFsQm9yZGVyUmFk
aXVzKCkpIH0KICAgICB2b2lkIHJlc2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKSB7IFNFVF9W
QVIoc3Vycm91bmQsIGJvcmRlci5tX2JvdHRvbVJpZ2h0LCBpbml0aWFsQm9yZGVyUmFkaXVzKCkp
IH0KIAotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9W
QVIobV9iYWNrZ3JvdW5kLCBtX2NvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29s
b3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fY29sb3IsIHYucmdi
KCkpIH0KIAogICAgIHZvaWQgc2V0QmFja2dyb3VuZFhQb3NpdGlvbihMZW5ndGggbCkgeyBTRVRf
VkFSKG1fYmFja2dyb3VuZCwgbV9iYWNrZ3JvdW5kLm1feFBvc2l0aW9uLCBsKSB9CiAgICAgdm9p
ZCBzZXRCYWNrZ3JvdW5kWVBvc2l0aW9uKExlbmd0aCBsKSB7IFNFVF9WQVIobV9iYWNrZ3JvdW5k
LCBtX2JhY2tncm91bmQubV95UG9zaXRpb24sIGwpIH0KQEAgLTEyNjEsOSArMTI2NSw5IEBAIHB1
YmxpYzoKICAgICAvLyBDU1MzIFNldHRlcnMKICAgICB2b2lkIHNldE91dGxpbmVPZmZzZXQoaW50
IHYpIHsgU0VUX1ZBUihtX2JhY2tncm91bmQsIG1fb3V0bGluZS5tX29mZnNldCwgdikgfQogICAg
IHZvaWQgc2V0VGV4dFNoYWRvdyhQYXNzT3duUHRyPFNoYWRvd0RhdGE+LCBib29sIGFkZCA9IGZh
bHNlKTsKLSAgICB2b2lkIHNldFRleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlQ29sb3IsIGMpIH0KKyAgICB2b2lkIHNl
dFRleHRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0U3Ryb2tlQ29sb3IsIHNldFRleHRTdHJva2VDb2xvciwgYykgfQog
ICAgIHZvaWQgc2V0VGV4dFN0cm9rZVdpZHRoKGZsb2F0IHcpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgdGV4dFN0cm9rZVdpZHRoLCB3KSB9Ci0gICAgdm9pZCBzZXRUZXh0RmlsbENvbG9y
KGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRleHRGaWxsQ29s
b3IsIGMpIH0KKyAgICB2b2lkIHNldFRleHRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VU
X0FDQ0VTU09SX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEZpbGxDb2xvciwgc2V0VGV4dEZp
bGxDb2xvciwgYykgfQogICAgIHZvaWQgc2V0Q29sb3JTcGFjZShDb2xvclNwYWNlIHNwYWNlKSB7
IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIGNvbG9yU3BhY2UsIHNwYWNlKSB9CiAgICAgdm9p
ZCBzZXRPcGFjaXR5KGZsb2F0IGYpIHsgZmxvYXQgdiA9IGNsYW1wVG88ZmxvYXQ+KGYsIDAsIDEp
OyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBvcGFjaXR5LCB2KTsgfQogICAgIHZvaWQg
c2V0QXBwZWFyYW5jZShDb250cm9sUGFydCBhKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fYXBwZWFyYW5jZSwgYSk7IH0KQEAgLTEzNDgsNyArMTM1Miw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFRyYW5zZm9ybU9yaWdpblooZmxvYXQgZikgeyBTRVRfVkFSKHJhcmVOb25Jbmhl
cml0ZWREYXRhLmFjY2VzcygpLT5tX3RyYW5zZm9ybSwgbV96LCBmKTsgfQogICAgIHZvaWQgc2V0
U3BlYWsoRVNwZWFrIHMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgc3BlYWssIHMpOyB9
CiAgICAgdm9pZCBzZXRUZXh0Q29tYmluZShUZXh0Q29tYmluZSB2KSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIG1fdGV4dENvbWJpbmUsIHYpOyB9Ci0gICAgdm9pZCBzZXRUZXh0RW1w
aGFzaXNDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0
ZXh0RW1waGFzaXNDb2xvciwgYykgfQorICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ29sb3IoY29u
c3QgQ29sb3ImIGMpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVt
cGhhc2lzQ29sb3IsIHNldFRleHRFbXBoYXNpc0NvbG9yLCBjKSB9CiAgICAgdm9pZCBzZXRUZXh0
RW1waGFzaXNGaWxsKFRleHRFbXBoYXNpc0ZpbGwgZmlsbCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0RW1waGFzaXNGaWxsLCBmaWxsKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhh
c2lzTWFyayhUZXh0RW1waGFzaXNNYXJrIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0
YSwgdGV4dEVtcGhhc2lzTWFyaywgbWFyayk7IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNpc0N1
c3RvbU1hcmsoY29uc3QgQXRvbWljU3RyaW5nJiBtYXJrKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmssIG1hcmspOyB9CkBAIC0xNDA3LDcgKzE0MTEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbiBj
KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUJveENvbnRhaW4sIGMpOyB9CiAg
ICAgdm9pZCBzZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBsaW5lQ2xhbXAsIGMpOyB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LSAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIo
cmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQorICAgIHZvaWQgc2V0
VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMucmdiKCkpOyB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
QUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQogICAgIHZvaWQgc2V0VXNlVG91Y2hPdmVy
Zmxvd1Njcm9sbGluZyhib29sIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdXNlVG91
Y2hPdmVyZmxvd1Njcm9sbGluZywgdik7IH0KQEAgLTE2ODAsNyArMTY4NCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblgoKSB7IHJldHVybiBM
ZW5ndGgoNTAuMCwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxQZXJzcGVj
dGl2ZU9yaWdpblkoKSB7IHJldHVybiBMZW5ndGgoNTAuMCwgUGVyY2VudCk7IH0KICAgICBzdGF0
aWMgQ29sb3IgaW5pdGlhbEJhY2tncm91bmRDb2xvcigpIHsgcmV0dXJuIENvbG9yOjp0cmFuc3Bh
cmVudDsgfQotICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGV4dEVtcGhhc2lzQ29sb3IoKSB7IHJl
dHVybiBUZXh0RW1waGFzaXNGaWxsRmlsbGVkOyB9CisgICAgc3RhdGljIENvbG9yIGluaXRpYWxU
ZXh0RW1waGFzaXNDb2xvcigpIHsgcmV0dXJuIENvbG9yOjp0cmFuc3BhcmVudDsgfQogICAgIHN0
YXRpYyBUZXh0RW1waGFzaXNGaWxsIGluaXRpYWxUZXh0RW1waGFzaXNGaWxsKCkgeyByZXR1cm4g
VGV4dEVtcGhhc2lzRmlsbEZpbGxlZDsgfQogICAgIHN0YXRpYyBUZXh0RW1waGFzaXNNYXJrIGlu
aXRpYWxUZXh0RW1waGFzaXNNYXJrKCkgeyByZXR1cm4gVGV4dEVtcGhhc2lzTWFya05vbmU7IH0K
ICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWFsVGV4dEVtcGhhc2lzQ3VzdG9t
TWFyaygpIHsgcmV0dXJuIG51bGxBdG9tOyB9CkBAIC0xNzQ2LDE2ICsxNzUwLDE3IEBAIHB1Ymxp
YzoKICNlbmRpZgogcHJpdmF0ZToKICAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQ29sb3IoY29uc3Qg
Q29sb3ImKTsKLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9y
KGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fdmlzaXRl
ZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciwgdikgfQotICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVOb25J
bmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IsIHYpIH0KLSAgICB2
b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yLCB2KSB9
Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikgeyBT
RVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yLCB2
KSB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYg
dikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX211bHRpQ29sLCBt
X3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yLCB2KSB9Ci0gICAgdm9pZCBzZXRWaXNpdGVkTGlu
a1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IsIHYpIH0KLSAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KSB9CisKKyAgICB2b2lk
IHNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NF
U1NPUl9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9y
LCBzZXRWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRl
ZExpbmtCb3JkZXJMZWZ0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IsIHNldFZpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yLCB2KSB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRl
clJpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yLCBzZXRWaXNpdGVkTGlua0Jv
cmRlclJpZ2h0Q29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rQm9yZGVyQm90dG9t
Q29sb3IoY29uc3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJlTm9uSW5oZXJpdGVk
RGF0YSwgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciwgc2V0VmlzaXRlZExpbmtCb3JkZXJC
b3R0b21Db2xvciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihj
b25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB2
aXNpdGVkTGlua0JvcmRlclRvcENvbG9yLCBzZXRWaXNpdGVkTGlua0JvcmRlclRvcENvbG9yLCB2
KSB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua091dGxpbmVDb2xvcihjb25zdCBDb2xvciYgdikg
eyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCB2aXNpdGVkTGlua091dGxp
bmVDb2xvciwgc2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZp
c2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRWaXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9yJiB2KSB7IFNFVF9BQ0NFU1NPUl9W
QVIocmFyZUluaGVyaXRlZERhdGEsIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IsIHNldFZp
c2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IsIHYpIH0KKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5r
VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgdikgeyBTRVRfQUNDRVNTT1JfVkFSKHJhcmVJbmhl
cml0ZWREYXRhLCB2aXNpdGVkTGlua1RleHRGaWxsQ29sb3IsIHNldFZpc2l0ZWRMaW5rVGV4dEZp
bGxDb2xvciwgdikgfQorICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoY29u
c3QgQ29sb3ImIHYpIHsgU0VUX0FDQ0VTU09SX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdmlzaXRl
ZExpbmtUZXh0U3Ryb2tlQ29sb3IsIHNldFZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yLCB2KSB9
CiAKICAgICB2b2lkIGluaGVyaXRVbmljb2RlQmlkaUZyb20oY29uc3QgUmVuZGVyU3R5bGUqIHBh
cmVudCkgeyBub25pbmhlcml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpID0gcGFyZW50LT5ub25pbmhl
cml0ZWRfZmxhZ3MuX3VuaWNvZGVCaWRpOyB9CiAgICAgdm9pZCBnZXRTaGFkb3dFeHRlbnQoY29u
c3QgU2hhZG93RGF0YSosIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91
dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3Q7CkBAIC0xNzkyLDIwICsxNzk3
LDIwIEBAIHByaXZhdGU6CiAgICAgQ29sb3IgY29sb3IoKSBjb25zdDsKICAgICBDb2xvciBjb2x1
bW5SdWxlQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9tdWx0
aUNvbC0+bV9ydWxlLmNvbG9yKCk7IH0KICAgICBDb2xvciBvdXRsaW5lQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmQtPm91dGxpbmUoKS5jb2xvcigpOyB9Ci0gICAgQ29sb3IgdGV4
dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEVt
cGhhc2lzQ29sb3I7IH0KLSAgICBDb2xvciB0ZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4g
cmFyZUluaGVyaXRlZERhdGEtPnRleHRGaWxsQ29sb3I7IH0KLSAgICBDb2xvciB0ZXh0U3Ryb2tl
Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFN0cm9rZUNvbG9y
OyB9CisgICAgQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dEVtcGhhc2lzQ29sb3IoKTsgfQorICAgIENvbG9yIHRleHRGaWxsQ29s
b3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEZpbGxDb2xvcigpOyB9
CisgICAgQ29sb3IgdGV4dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRTdHJva2VDb2xvcigpOyB9CiAgICAgQ29sb3IgdmlzaXRlZExpbmtDb2xvcigp
IGNvbnN0OwotICAgIENvbG9yIHZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3I7
IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yOyB9Ci0g
ICAgQ29sb3IgdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yOyB9Ci0gICAg
Q29sb3IgdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3Zpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3I7IH0KLSAgICBD
b2xvciB2aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcjsgfQotICAgIENvbG9yIHZp
c2l0ZWRMaW5rT3V0bGluZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3I7IH0KLSAgICBDb2xvciB2aXNpdGVkTGlua0Nv
bHVtblJ1bGVDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX211
bHRpQ29sLT5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRl
ZExpbmtUZXh0RW1waGFzaXNDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT52aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOyB9Ci0gICAgQ29sb3IgdmlzaXRlZExpbmtU
ZXh0RmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvcjsgfQotICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9y
KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4dFN0cm9r
ZUNvbG9yOyB9CisgICAgQ29sb3IgdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3Io
KTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyByZXR1
cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKCk7IH0K
KyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBy
YXJlTm9uSW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKCk7IH0KKyAg
ICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFy
ZU5vbkluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rQm9yZGVyQm90dG9tQ29sb3IoKTsgfQorICAg
IENvbG9yIHZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+dmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcigpOyB9CisgICAgQ29sb3Ig
dmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+dmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5r
Q29sdW1uUnVsZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
bXVsdGlDb2wtPnZpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNp
dGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPnZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT52aXNp
dGVkTGlua1RleHRGaWxsQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dFN0cm9r
ZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnZpc2l0ZWRMaW5rVGV4
dFN0cm9rZUNvbG9yKCk7IH0KIAogICAgIENvbG9yIGNvbG9ySW5jbHVkaW5nRmFsbGJhY2soaW50
IGNvbG9yUHJvcGVydHksIGJvb2wgdmlzaXRlZExpbmspIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3JvdW5kRGF0YS5jcHAKaW5k
ZXggMDhmNTUyNy4uZWRiNDYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmNwcApAQCAtMjgsMTUgKzI4LDE1IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFN0eWxlQmFja2dyb3VuZERhdGE6OlN0eWxlQmFja2dyb3Vu
ZERhdGEoKQotICAgIDogbV9iYWNrZ3JvdW5kKEJhY2tncm91bmRGaWxsTGF5ZXIpCi0gICAgLCBt
X2NvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkpCisgICAgOiBtX2Nv
bG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkucmdiKCkpCisgICAgLCBt
X2JhY2tncm91bmQoQmFja2dyb3VuZEZpbGxMYXllcikKIHsKIH0KIAogU3R5bGVCYWNrZ3JvdW5k
RGF0YTo6U3R5bGVCYWNrZ3JvdW5kRGF0YShjb25zdCBTdHlsZUJhY2tncm91bmREYXRhJiBvKQog
ICAgIDogUmVmQ291bnRlZDxTdHlsZUJhY2tncm91bmREYXRhPigpCi0gICAgLCBtX2JhY2tncm91
bmQoby5tX2JhY2tncm91bmQpCiAgICAgLCBtX2NvbG9yKG8ubV9jb2xvcikKKyAgICAsIG1fYmFj
a2dyb3VuZChvLm1fYmFja2dyb3VuZCkKICAgICAsIG1fb3V0bGluZShvLm1fb3V0bGluZSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tn
cm91bmREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVCYWNrZ3Jv
dW5kRGF0YS5oCmluZGV4IDQ4YTcwMGUuLjY1NzIwOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUJhY2tncm91bmREYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQmFja2dyb3VuZERhdGEuaApAQCAtNDYsNyArNDYs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgY29uc3QgRmlsbExheWVyJiBiYWNrZ3JvdW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kOyB9Ci0gICAgY29uc3QgQ29sb3ImIGNvbG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9jb2xvcjsgfQorICAgIGNvbnN0IENvbG9yIGNvbG9yKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2xvcjsgfQogICAgIGNvbnN0IE91dGxpbmVWYWx1ZSYgb3V0bGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3V0bGluZTsgfQogCiBwcml2YXRlOgpAQCAtNTUsOCArNTUsOCBAQCBw
cml2YXRlOgogICAgIFN0eWxlQmFja2dyb3VuZERhdGEoKTsKICAgICBTdHlsZUJhY2tncm91bmRE
YXRhKGNvbnN0IFN0eWxlQmFja2dyb3VuZERhdGEmKTsgCiAKKyAgICBSR0JBMzIgbV9jb2xvcjsK
ICAgICBGaWxsTGF5ZXIgbV9iYWNrZ3JvdW5kOwotICAgIENvbG9yIG1fY29sb3I7CiAgICAgT3V0
bGluZVZhbHVlIG1fb3V0bGluZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggMDIxNzQwZi4uZDM3YzAw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJp
dGVkRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5o
ZXJpdGVkRGF0YS5jcHAKQEAgLTMyLDggKzMyLDggQEAgU3R5bGVJbmhlcml0ZWREYXRhOjpTdHls
ZUluaGVyaXRlZERhdGEoKQogICAgICwgdmVydGljYWxfYm9yZGVyX3NwYWNpbmcoUmVuZGVyU3R5
bGU6OmluaXRpYWxWZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSkKICAgICAsIGxpbmVfaGVpZ2h0KFJl
bmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKQogICAgICwgbGlzdF9zdHlsZV9pbWFnZShS
ZW5kZXJTdHlsZTo6aW5pdGlhbExpc3RTdHlsZUltYWdlKCkpCi0gICAgLCBjb2xvcihSZW5kZXJT
dHlsZTo6aW5pdGlhbENvbG9yKCkpCi0gICAgLCB2aXNpdGVkTGlua0NvbG9yKFJlbmRlclN0eWxl
Ojppbml0aWFsQ29sb3IoKSkKKyAgICAsIGNvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQ29sb3Io
KS5yZ2IoKSkKKyAgICAsIHZpc2l0ZWRMaW5rQ29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxDb2xv
cigpLnJnYigpKQogewogfQogCkBAIC00Nyw5ICs0Nyw5IEBAIFN0eWxlSW5oZXJpdGVkRGF0YTo6
U3R5bGVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlSW5oZXJpdGVkRGF0YSYgbykKICAgICAsIHZl
cnRpY2FsX2JvcmRlcl9zcGFjaW5nKG8udmVydGljYWxfYm9yZGVyX3NwYWNpbmcpCiAgICAgLCBs
aW5lX2hlaWdodChvLmxpbmVfaGVpZ2h0KQogICAgICwgbGlzdF9zdHlsZV9pbWFnZShvLmxpc3Rf
c3R5bGVfaW1hZ2UpCi0gICAgLCBmb250KG8uZm9udCkKICAgICAsIGNvbG9yKG8uY29sb3IpCiAg
ICAgLCB2aXNpdGVkTGlua0NvbG9yKG8udmlzaXRlZExpbmtDb2xvcikKKyAgICAsIGZvbnQoby5m
b250KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVJbmhlcml0ZWREYXRhLmgKaW5kZXggNmNiN2JjNS4uMzM3ZjI2MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUluaGVyaXRlZERhdGEuaApAQCAtNTcs
OSArNTcsMTAgQEAgcHVibGljOgogCiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGxpc3Rfc3R5bGVf
aW1hZ2U7CiAKKyAgICBSR0JBMzIgY29sb3I7CisgICAgUkdCQTMyIHZpc2l0ZWRMaW5rQ29sb3I7
CisKICAgICBGb250IGZvbnQ7Ci0gICAgQ29sb3IgY29sb3I7Ci0gICAgQ29sb3IgdmlzaXRlZExp
bmtDb2xvcjsKIAogcHJpdmF0ZToKICAgICBTdHlsZUluaGVyaXRlZERhdGEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVNdWx0aUNvbERhdGEuY3BwCmlu
ZGV4IDYxMDI3N2MuLjUwNzVmNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlTXVsdGlDb2xEYXRhLmNwcApAQCAtMzksNiArMzksOCBAQCBTdHlsZU11
bHRpQ29sRGF0YTo6U3R5bGVNdWx0aUNvbERhdGEoKQogICAgICwgbV9icmVha0luc2lkZShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFBhZ2VCcmVhaygpKQogICAgICwgbV9heGlzKFJlbmRlclN0eWxlOjpp
bml0aWFsQ29sdW1uQXhpcygpKQogICAgICwgbV9wcm9ncmVzc2lvbihSZW5kZXJTdHlsZTo6aW5p
dGlhbENvbHVtblByb2dyZXNzaW9uKCkpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQ29sdW1uUnVs
ZUNvbG9yKGZhbHNlKQorICAgICwgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpCiB7CiB9CiAKQEAgLTQ4LDcgKzUwLDYgQEAgU3R5bGVNdWx0aUNvbERhdGE6
OlN0eWxlTXVsdGlDb2xEYXRhKGNvbnN0IFN0eWxlTXVsdGlDb2xEYXRhJiBvKQogICAgICwgbV9j
b3VudChvLm1fY291bnQpCiAgICAgLCBtX2dhcChvLm1fZ2FwKQogICAgICwgbV9ydWxlKG8ubV9y
dWxlKQotICAgICwgbV92aXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcihvLm1fdmlzaXRlZExpbmtD
b2x1bW5SdWxlQ29sb3IpCiAgICAgLCBtX2F1dG9XaWR0aChvLm1fYXV0b1dpZHRoKQogICAgICwg
bV9hdXRvQ291bnQoby5tX2F1dG9Db3VudCkKICAgICAsIG1fbm9ybWFsR2FwKG8ubV9ub3JtYWxH
YXApCkBAIC01OCw2ICs1OSw4IEBAIFN0eWxlTXVsdGlDb2xEYXRhOjpTdHlsZU11bHRpQ29sRGF0
YShjb25zdCBTdHlsZU11bHRpQ29sRGF0YSYgbykKICAgICAsIG1fYnJlYWtJbnNpZGUoby5tX2Jy
ZWFrSW5zaWRlKQogICAgICwgbV9heGlzKG8ubV9heGlzKQogICAgICwgbV9wcm9ncmVzc2lvbihv
Lm1fcHJvZ3Jlc3Npb24pCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKG8u
bV9oYXNWaXNpdGVkTGlua0NvbHVtblJ1bGVDb2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtDb2x1
bW5SdWxlQ29sb3Ioby5tX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yKQogewogfQogCkBAIC03
MCw0ICs3MywxMCBAQCBib29sIFN0eWxlTXVsdGlDb2xEYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0
eWxlTXVsdGlDb2xEYXRhJiBvKSBjb25zdAogICAgICAgICAgICAmJiBtX3Byb2dyZXNzaW9uID09
IG8ubV9wcm9ncmVzc2lvbjsKIH0KIAordm9pZCBTdHlsZU11bHRpQ29sRGF0YTo6c2V0VmlzaXRl
ZExpbmtDb2x1bW5SdWxlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIG1faGFzVmlz
aXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92aXNpdGVk
TGlua0NvbHVtblJ1bGVDb2xvciA9IGNvbG9yLnJnYigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVN
dWx0aUNvbERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRp
Q29sRGF0YS5oCmluZGV4IDg4OGFlNmQuLmJmYWJkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU11bHRpQ29sRGF0YS5oCkBAIC01Nyw3ICs1Nyw5IEBA
IHB1YmxpYzoKICAgICB1bnNpZ25lZCBzaG9ydCBtX2NvdW50OwogICAgIGZsb2F0IG1fZ2FwOwog
ICAgIEJvcmRlclZhbHVlIG1fcnVsZTsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVs
ZUNvbG9yOworCisgICAgQ29sb3IgdmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yID8gQ29sb3IobV92aXNpdGVk
TGlua0NvbHVtblJ1bGVDb2xvcikgOiBDb2xvcigpOyB9CisgICAgdm9pZCBzZXRWaXNpdGVkTGlu
a0NvbHVtblJ1bGVDb2xvcihjb25zdCBDb2xvciYpOwogCiAgICAgYm9vbCBtX2F1dG9XaWR0aCA6
IDE7CiAgICAgYm9vbCBtX2F1dG9Db3VudCA6IDE7CkBAIC03MCw2ICs3Miw5IEBAIHB1YmxpYzoK
ICAgICB1bnNpZ25lZCBtX3Byb2dyZXNzaW9uIDogMjsgLy8gQ29sdW1uUHJvZ3Jlc3Npb24KIAog
cHJpdmF0ZToKKyAgICBib29sIG1faGFzVmlzaXRlZExpbmtDb2x1bW5SdWxlQ29sb3IgOiAxOwor
ICAgIFJHQkEzMiBtX3Zpc2l0ZWRMaW5rQ29sdW1uUnVsZUNvbG9yOworCiAgICAgU3R5bGVNdWx0
aUNvbERhdGEoKTsKICAgICBTdHlsZU11bHRpQ29sRGF0YShjb25zdCBTdHlsZU11bHRpQ29sRGF0
YSYpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRleCAxNjgwMjIxLi5lNzBlNzc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuY3BwCkBAIC0yNywxNCArMjcsMTQgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0
YS5oIgorI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXpl
QXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8U2FtZVNpemVBc1N0
eWxlUmFyZUluaGVyaXRlZERhdGE+IHsKLSAgICBDb2xvciBmaXJzdENvbG9yOwogICAgIGZsb2F0
IGZpcnN0RmxvYXQ7Ci0gICAgQ29sb3IgY29sb3JzWzVdOworICAgIFJHQkEzMiBjb2xvcnNbNl07
CiAgICAgdm9pZCogb3duUHRyc1sxXTsKICAgICBBdG9taWNTdHJpbmcgYXRvbWljU3RyaW5nc1s1
XTsKICAgICB2b2lkKiByZWZQdHJzWzJdOwpAQCAtNTAsNyArNTAsNyBAQCBzdHJ1Y3QgU2FtZVNp
emVBc1N0eWxlUmFyZUluaGVyaXRlZERhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTYW1lU2l6ZUFz
U3R5bGVSYXJlSQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIENvbG9y
IHRvdWNoQ29sb3JzOworICAgIFJHQkEzMiB0b3VjaENvbG9yczsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENTU19WQVJJQUJMRVMpCkBAIC02Niw2ICs2NiwxMiBAQCBTdHlsZVJhcmVJbmhlcml0ZWRE
YXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICAsIG1fZWZmZWN0aXZlWm9vbShSZW5k
ZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKICAgICAsIHdpZG93cyhSZW5kZXJTdHlsZTo6aW5pdGlh
bFdpZG93cygpKQogICAgICwgb3JwaGFucyhSZW5kZXJTdHlsZTo6aW5pdGlhbE9ycGhhbnMoKSkK
KyAgICAsIG1faGFzVGV4dFN0cm9rZUNvbG9yKGZhbHNlKQorICAgICwgbV9oYXNUZXh0RmlsbENv
bG9yKGZhbHNlKQorICAgICwgbV9oYXNUZXh0RW1waGFzaXNDb2xvcihmYWxzZSkKKyAgICAsIG1f
aGFzVmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1Zpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvcihmYWxzZSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtUZXh0RW1waGFz
aXNDb2xvcihmYWxzZSkKICAgICAsIHRleHRTZWN1cml0eShSZW5kZXJTdHlsZTo6aW5pdGlhbFRl
eHRTZWN1cml0eSgpKQogICAgICwgdXNlck1vZGlmeShSRUFEX09OTFkpCiAgICAgLCB3b3JkQnJl
YWsoUmVuZGVyU3R5bGU6OmluaXRpYWxXb3JkQnJlYWsoKSkKQEAgLTEwNCw4ICsxMTAsMTQgQEAg
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAgICAgLCBt
X2ltYWdlUmVzb2x1dGlvbihSZW5kZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVzb2x1dGlvbigpKQog
I2VuZGlmCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICAsIHRhcEhpZ2hsaWdodENvbG9y
KFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKSkKLSNlbmRpZiAgICAKKyAg
ICAsIHRhcEhpZ2hsaWdodENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29s
b3IoKS5yZ2IoKSkKKyNlbmRpZgorICAgICwgbV90ZXh0U3Ryb2tlQ29sb3IoQ29sb3I6OnRyYW5z
cGFyZW50KQorICAgICwgbV90ZXh0RmlsbENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAs
IG1fdGV4dEVtcGhhc2lzQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNpdGVk
TGlua1RleHRTdHJva2VDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCisgICAgLCBtX3Zpc2l0ZWRM
aW5rVGV4dEZpbGxDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCisgICAgLCBtX3Zpc2l0ZWRMaW5r
VGV4dEVtcGhhc2lzQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQogewogI2lmIEVOQUJMRShDU1Nf
VkFSSUFCTEVTKQogICAgIG1fdmFyaWFibGVzLmluaXQoKTsKQEAgLTExNCwxMyArMTI2LDcgQEAg
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpCiAKIFN0eWxl
UmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSYgbykKICAgICA6IFJlZkNvdW50ZWQ8U3R5bGVSYXJlSW5oZXJpdGVkRGF0
YT4oKQotICAgICwgdGV4dFN0cm9rZUNvbG9yKG8udGV4dFN0cm9rZUNvbG9yKQogICAgICwgdGV4
dFN0cm9rZVdpZHRoKG8udGV4dFN0cm9rZVdpZHRoKQotICAgICwgdGV4dEZpbGxDb2xvcihvLnRl
eHRGaWxsQ29sb3IpCi0gICAgLCB0ZXh0RW1waGFzaXNDb2xvcihvLnRleHRFbXBoYXNpc0NvbG9y
KQotICAgICwgdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Ioby52aXNpdGVkTGlua1RleHRTdHJv
a2VDb2xvcikKLSAgICAsIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcihvLnZpc2l0ZWRMaW5rVGV4
dEZpbGxDb2xvcikKLSAgICAsIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Ioby52aXNpdGVk
TGlua1RleHRFbXBoYXNpc0NvbG9yKQogICAgICwgdGV4dFNoYWRvdyhvLnRleHRTaGFkb3cgPyBh
ZG9wdFB0cihuZXcgU2hhZG93RGF0YSgqby50ZXh0U2hhZG93KSkgOiBudWxscHRyKQogICAgICwg
aGlnaGxpZ2h0KG8uaGlnaGxpZ2h0KQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCkBA
IC0xMjgsNiArMTM0LDEyIEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykKICAgICAsIG1fZWZmZWN0
aXZlWm9vbShvLm1fZWZmZWN0aXZlWm9vbSkKICAgICAsIHdpZG93cyhvLndpZG93cykKICAgICAs
IG9ycGhhbnMoby5vcnBoYW5zKQorICAgICwgbV9oYXNUZXh0U3Ryb2tlQ29sb3Ioby5tX2hhc1Rl
eHRTdHJva2VDb2xvcikKKyAgICAsIG1faGFzVGV4dEZpbGxDb2xvcihvLm1faGFzVGV4dEZpbGxD
b2xvcikKKyAgICAsIG1faGFzVGV4dEVtcGhhc2lzQ29sb3Ioby5tX2hhc1RleHRFbXBoYXNpc0Nv
bG9yKQorICAgICwgbV9oYXNWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihvLm1faGFzVmlzaXRl
ZExpbmtUZXh0U3Ryb2tlQ29sb3IpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEZpbGxDb2xv
cihvLm1faGFzVmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKQorICAgICwgbV9oYXNWaXNpdGVkTGlu
a1RleHRFbXBoYXNpc0NvbG9yKG8ubV9oYXNWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKQog
ICAgICwgdGV4dFNlY3VyaXR5KG8udGV4dFNlY3VyaXR5KQogICAgICwgdXNlck1vZGlmeShvLnVz
ZXJNb2RpZnkpCiAgICAgLCB3b3JkQnJlYWsoby53b3JkQnJlYWspCkBAIC0xNzQsNiArMTg2LDEy
IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3Qg
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykKICAg
ICAsIG1fdmFyaWFibGVzKG8ubV92YXJpYWJsZXMpCiAjZW5kaWYKKyAgICAsIG1fdGV4dFN0cm9r
ZUNvbG9yKG8ubV90ZXh0U3Ryb2tlQ29sb3IpCisgICAgLCBtX3RleHRGaWxsQ29sb3Ioby5tX3Rl
eHRGaWxsQ29sb3IpCisgICAgLCBtX3RleHRFbXBoYXNpc0NvbG9yKG8ubV90ZXh0RW1waGFzaXND
b2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3Ioby5tX3Zpc2l0ZWRMaW5r
VGV4dFN0cm9rZUNvbG9yKQorICAgICwgbV92aXNpdGVkTGlua1RleHRGaWxsQ29sb3Ioby5tX3Zp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtUZXh0RW1waGFzaXND
b2xvcihvLm1fdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcikKIHsKIH0KIApAQCAtMTkyLDEz
ICsyMTAsMTMgQEAgc3RhdGljIGJvb2wgY3Vyc29yRGF0YUVxdWl2YWxlbnQoY29uc3QgQ3Vyc29y
TGlzdCogYzEsIGNvbnN0IEN1cnNvckxpc3QqIGMyKQogCiBib29sIFN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSYgbykgY29uc3QK
IHsKLSAgICByZXR1cm4gdGV4dFN0cm9rZUNvbG9yID09IG8udGV4dFN0cm9rZUNvbG9yCisgICAg
cmV0dXJuIHRleHRTdHJva2VDb2xvcigpID09IG8udGV4dFN0cm9rZUNvbG9yKCkKICAgICAgICAg
JiYgdGV4dFN0cm9rZVdpZHRoID09IG8udGV4dFN0cm9rZVdpZHRoCi0gICAgICAgICYmIHRleHRG
aWxsQ29sb3IgPT0gby50ZXh0RmlsbENvbG9yCi0gICAgICAgICYmIHRleHRFbXBoYXNpc0NvbG9y
ID09IG8udGV4dEVtcGhhc2lzQ29sb3IKLSAgICAgICAgJiYgdmlzaXRlZExpbmtUZXh0U3Ryb2tl
Q29sb3IgPT0gby52aXNpdGVkTGlua1RleHRTdHJva2VDb2xvcgotICAgICAgICAmJiB2aXNpdGVk
TGlua1RleHRGaWxsQ29sb3IgPT0gby52aXNpdGVkTGlua1RleHRGaWxsQ29sb3IKLSAgICAgICAg
JiYgdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciA9PSBvLnZpc2l0ZWRMaW5rVGV4dEVtcGhh
c2lzQ29sb3IKKyAgICAgICAgJiYgdGV4dEZpbGxDb2xvcigpID09IG8udGV4dEZpbGxDb2xvcigp
CisgICAgICAgICYmIHRleHRFbXBoYXNpc0NvbG9yKCkgPT0gby50ZXh0RW1waGFzaXNDb2xvcigp
CisgICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yKCkgPT0gby52aXNpdGVkTGlu
a1RleHRTdHJva2VDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcigp
ID09IG8udmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKCkKKyAgICAgICAgJiYgdmlzaXRlZExpbmtU
ZXh0RW1waGFzaXNDb2xvcigpID09IG8udmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcigpCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAgICAgJiYgdGFwSGlnaGxpZ2h0Q29sb3IgPT0g
by50YXBIaWdobGlnaHRDb2xvcgogI2VuZGlmCkBAIC0yNjIsNiArMjgwLDQyIEBAIGJvb2wgU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6c2hhZG93RGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IG1faGFzVGV4dFN0cm9rZUNvbG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdGV4dFN0cm9r
ZUNvbG9yID0gY29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
c2V0VGV4dEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNUZXh0Rmls
bENvbG9yID0gY29sb3IuaXNWYWxpZCgpOworICAgIG1fdGV4dEZpbGxDb2xvciA9IGNvbG9yLnJn
YigpOworfQorCit2b2lkIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OnNldFRleHRFbXBoYXNpc0Nv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1RleHRFbXBoYXNpc0NvbG9yID0g
Y29sb3IuaXNWYWxpZCgpOworICAgIG1fdGV4dEVtcGhhc2lzQ29sb3IgPSBjb2xvci5yZ2IoKTsK
K30KKwordm9pZCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua1RleHRTdHJv
a2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCit7CisgICAgbV9oYXNWaXNpdGVkTGlua1RleHRT
dHJva2VDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rVGV4dFN0cm9r
ZUNvbG9yID0gY29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
c2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBt
X2hhc1Zpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zp
c2l0ZWRMaW5rVGV4dEZpbGxDb2xvciA9IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQoreworICAgIG1faGFzVmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvciA9IGNv
bG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IgPSBjb2xv
ci5yZ2IoKTsKK30KKwogdm9pZCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IGEzNGRmYjIuLmI1ZDhhZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuaApAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDdXJz
b3JMaXN0OwogY2xhc3MgUXVvdGVzRGF0YTsKIGNsYXNzIFNoYWRvd0RhdGE7CitjbGFzcyBTdHls
ZUltYWdlOwogCiAvLyBUaGlzIHN0cnVjdCBpcyBmb3IgcmFyZWx5IHVzZWQgaW5oZXJpdGVkIENT
UzMsIENTUzIsIGFuZCBXZWJLaXQtc3BlY2lmaWMgcHJvcGVydGllcy4KIC8vIEJ5IGdyb3VwaW5n
IHRoZW0gdG9nZXRoZXIsIHdlIHNhdmUgc3BhY2UsIGFuZCBvbmx5IGFsbG9jYXRlIHRoaXMgb2Jq
ZWN0IHdoZW4gc29tZW9uZQpAQCAtNjAsMTggKzYxLDI1IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCi0gICAgQ29sb3Ig
dGV4dFN0cm9rZUNvbG9yOwogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aDsKLSAgICBDb2xvciB0
ZXh0RmlsbENvbG9yOwotICAgIENvbG9yIHRleHRFbXBoYXNpc0NvbG9yOwotICAgIAotICAgIENv
bG9yIHZpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yOwotICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4
dEZpbGxDb2xvcjsKLSAgICBDb2xvciB2aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yOyAgICAK
KworICAgIENvbG9yIHRleHRTdHJva2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGV4dFN0
cm9rZUNvbG9yID8gQ29sb3IobV90ZXh0U3Ryb2tlQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIENv
bG9yIHRleHRGaWxsQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2hhc1RleHRGaWxsQ29sb3IgPyBD
b2xvcihtX3RleHRGaWxsQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHRleHRFbXBoYXNp
c0NvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUZXh0RW1waGFzaXNDb2xvciA/IENvbG9yKG1f
dGV4dEVtcGhhc2lzQ29sb3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4
dFN0cm9rZUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlua1RleHRTdHJva2VD
b2xvciA/IENvbG9yKG1fdmlzaXRlZExpbmtUZXh0U3Ryb2tlQ29sb3IpIDogQ29sb3IoKTsgfQor
ICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFz
VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yID8gQ29sb3IobV92aXNpdGVkTGlua1RleHRGaWxsQ29s
b3IpIDogQ29sb3IoKTsgfQorICAgIENvbG9yIHZpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3Io
KSBjb25zdCB7IHJldHVybiBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IgPyBDb2xv
cihtX3Zpc2l0ZWRMaW5rVGV4dEVtcGhhc2lzQ29sb3IpIDogQ29sb3IoKTsgfQorCisgICAgdm9p
ZCBzZXRUZXh0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFRleHRGaWxs
Q29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFRleHRFbXBoYXNpc0NvbG9yKGNvbnN0
IENvbG9yJik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRTdHJva2VDb2xvcihjb25zdCBD
b2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtUZXh0RmlsbENvbG9yKGNvbnN0IENvbG9y
Jik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yKGNvbnN0IENvbG9y
Jik7CiAKICAgICBPd25QdHI8U2hhZG93RGF0YT4gdGV4dFNoYWRvdzsgLy8gT3VyIHRleHQgc2hh
ZG93IGluZm9ybWF0aW9uIGZvciBzaGFkb3dlZCB0ZXh0IGRyYXdpbmcuCiAgICAgQXRvbWljU3Ry
aW5nIGhpZ2hsaWdodDsgLy8gQXBwbGUtc3BlY2lmaWMgZXh0ZW5zaW9uIGZvciBjdXN0b20gaGln
aGxpZ2h0IHJlbmRlcmluZy4KLSAgICAKKwogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JE
YXRhOwogICAgIExlbmd0aCBpbmRlbnQ7CiAgICAgZmxvYXQgbV9lZmZlY3RpdmVab29tOwpAQCAt
NzksNyArODcsMTMgQEAgcHVibGljOgogICAgIC8vIFBhZ2VkIG1lZGlhIHByb3BlcnRpZXMuCiAg
ICAgc2hvcnQgd2lkb3dzOwogICAgIHNob3J0IG9ycGhhbnM7Ci0gICAgCisKKyAgICB1bnNpZ25l
ZCBtX2hhc1RleHRTdHJva2VDb2xvciA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNUZXh0RmlsbENv
bG9yIDogMTsKKyAgICB1bnNpZ25lZCBtX2hhc1RleHRFbXBoYXNpc0NvbG9yIDogMTsKKyAgICB1
bnNpZ25lZCBtX2hhc1Zpc2l0ZWRMaW5rVGV4dFN0cm9rZUNvbG9yIDogMTsKKyAgICB1bnNpZ25l
ZCBtX2hhc1Zpc2l0ZWRMaW5rVGV4dEZpbGxDb2xvciA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNW
aXNpdGVkTGlua1RleHRFbXBoYXNpc0NvbG9yIDogMTsKICAgICB1bnNpZ25lZCB0ZXh0U2VjdXJp
dHkgOiAyOyAvLyBFVGV4dFNlY3VyaXR5CiAgICAgdW5zaWduZWQgdXNlck1vZGlmeSA6IDI7IC8v
IEVVc2VyTW9kaWZ5IChlZGl0aW5nKQogICAgIHVuc2lnbmVkIHdvcmRCcmVhayA6IDI7IC8vIEVX
b3JkQnJlYWsKQEAgLTEyOSw3ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCi0gICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CisgICAgUkdCQTMy
IHRhcEhpZ2hsaWdodENvbG9yOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1ZBUklBQkxFUykK
QEAgLTEzNyw2ICsxNTEsMTQgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgUkdC
QTMyIG1fdGV4dFN0cm9rZUNvbG9yOworICAgIFJHQkEzMiBtX3RleHRGaWxsQ29sb3I7CisgICAg
UkdCQTMyIG1fdGV4dEVtcGhhc2lzQ29sb3I7CisKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua1Rl
eHRTdHJva2VDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua1RleHRGaWxsQ29sb3I7Cisg
ICAgUkdCQTMyIG1fdmlzaXRlZExpbmtUZXh0RW1waGFzaXNDb2xvcjsKKwogICAgIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEoKTsKICAgICBTdHlsZVJhcmVJbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxl
UmFyZUluaGVyaXRlZERhdGEmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggNmM4
OTg5Ni4uZGUxN2MyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcApAQCAtNTQsNyArNTQsNiBA
QCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKCkK
ICAgICAsIG1fd3JhcE1hcmdpbihSZW5kZXJTdHlsZTo6aW5pdGlhbFdyYXBNYXJnaW4oKSkKICAg
ICAsIG1fd3JhcFBhZGRpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxXcmFwUGFkZGluZygpKQogICAg
ICwgbV9jbGlwUGF0aChSZW5kZXJTdHlsZTo6aW5pdGlhbENsaXBQYXRoKCkpCi0gICAgLCBtX3Zp
c2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENv
bG9yKCkpCiAgICAgLCBtX29yZGVyKFJlbmRlclN0eWxlOjppbml0aWFsT3JkZXIoKSkKICAgICAs
IG1fZmxvd1RocmVhZChSZW5kZXJTdHlsZTo6aW5pdGlhbEZsb3dUaHJlYWQoKSkKICAgICAsIG1f
cmVnaW9uVGhyZWFkKFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uVGhyZWFkKCkpCkBAIC04OCw2
ICs4NywxOSBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhKCkKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICwgbV9lZmZlY3RpdmVC
bGVuZE1vZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkKICNlbmRpZgorICAgICwg
bV9oYXNWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlhbEJhY2tn
cm91bmRDb2xvcigpLmlzVmFsaWQoKSkKKyAgICAsIG1faGFzVmlzaXRlZExpbmtPdXRsaW5lQ29s
b3IoZmFsc2UpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKGZhbHNlKQor
ICAgICwgbV9oYXNWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoZmFsc2UpCisgICAgLCBtX2hh
c1Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoZmFsc2UpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5r
Qm9yZGVyQm90dG9tQ29sb3IoZmFsc2UpCisgICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENv
bG9yKFJlbmRlclN0eWxlOjppbml0aWFsQmFja2dyb3VuZENvbG9yKCkucmdiKCkpCisgICAgLCBt
X3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAsIG1fdmlz
aXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNp
dGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KQorICAgICwgbV92aXNp
dGVkTGlua0JvcmRlclRvcENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCkKKyAgICAsIG1fdmlzaXRl
ZExpbmtCb3JkZXJCb3R0b21Db2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCisKIHsKICAgICBtX21h
c2tCb3hJbWFnZS5zZXRNYXNrRGVmYXVsdHMoKTsKIH0KQEAgLTEyOCwxMiArMTQwLDYgQEAgU3R5
bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWQKICAgICAsIG1fd3JhcE1hcmdpbihvLm1fd3JhcE1hcmdpbikK
ICAgICAsIG1fd3JhcFBhZGRpbmcoby5tX3dyYXBQYWRkaW5nKQogICAgICwgbV9jbGlwUGF0aChv
Lm1fY2xpcFBhdGgpCi0gICAgLCBtX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKG8ubV92aXNp
dGVkTGlua0JhY2tncm91bmRDb2xvcikKLSAgICAsIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3Io
by5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKQotICAgICwgbV92aXNpdGVkTGlua0JvcmRlckxl
ZnRDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IpCi0gICAgLCBtX3Zpc2l0ZWRM
aW5rQm9yZGVyUmlnaHRDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKQotICAg
ICwgbV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKG8ubV92aXNpdGVkTGlua0JvcmRlclRvcENv
bG9yKQotICAgICwgbV92aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8ubV92aXNpdGVkTGlu
a0JvcmRlckJvdHRvbUNvbG9yKQogICAgICwgbV9vcmRlcihvLm1fb3JkZXIpCiAgICAgLCBtX2Zs
b3dUaHJlYWQoby5tX2Zsb3dUaHJlYWQpCiAgICAgLCBtX3JlZ2lvblRocmVhZChvLm1fcmVnaW9u
VGhyZWFkKQpAQCAtMTY3LDYgKzE3MywxOCBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhKGNvbnN0IFN0eWxlUmFyZU5vbkluaGVyaXRlZAogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgLCBtX2VmZmVjdGl2ZUJsZW5kTW9kZShvLm1f
ZWZmZWN0aXZlQmxlbmRNb2RlKQogI2VuZGlmCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yKG8ubV9oYXNWaXNpdGVkTGlua0JhY2tncm91bmRDb2xvcikKKyAgICAsIG1faGFz
VmlzaXRlZExpbmtPdXRsaW5lQ29sb3Ioby5tX2hhc1Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKQor
ICAgICwgbV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihvLm1faGFzVmlzaXRlZExpbmtC
b3JkZXJMZWZ0Q29sb3IpCisgICAgLCBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcihv
Lm1faGFzVmlzaXRlZExpbmtCb3JkZXJSaWdodENvbG9yKQorICAgICwgbV9oYXNWaXNpdGVkTGlu
a0JvcmRlclRvcENvbG9yKG8ubV9oYXNWaXNpdGVkTGlua0JvcmRlclRvcENvbG9yKQorICAgICwg
bV9oYXNWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKG8ubV9oYXNWaXNpdGVkTGlua0JvcmRl
ckJvdHRvbUNvbG9yKQorICAgICwgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcihvLm1fdmlz
aXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IpCisgICAgLCBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9y
KG8ubV92aXNpdGVkTGlua091dGxpbmVDb2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJM
ZWZ0Q29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKQorICAgICwgbV92aXNpdGVk
TGlua0JvcmRlclJpZ2h0Q29sb3Ioby5tX3Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcikKKyAg
ICAsIG1fdmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcihvLm1fdmlzaXRlZExpbmtCb3JkZXJUb3BD
b2xvcikKKyAgICAsIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcihvLm1fdmlzaXRlZExp
bmtCb3JkZXJCb3R0b21Db2xvcikKIHsKIH0KIApAQCAtMjEzLDEyICsyMzEsMTIgQEAgYm9vbCBT
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGEmIG8pIGMKICAgICAgICAgJiYgbV93cmFwTWFyZ2luID09IG8ubV93cmFwTWFy
Z2luCiAgICAgICAgICYmIG1fd3JhcFBhZGRpbmcgPT0gby5tX3dyYXBQYWRkaW5nCiAgICAgICAg
ICYmIG1fY2xpcFBhdGggPT0gby5tX2NsaXBQYXRoCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtC
YWNrZ3JvdW5kQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yCi0gICAgICAg
ICYmIG1fdmlzaXRlZExpbmtPdXRsaW5lQ29sb3IgPT0gby5tX3Zpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3IgPT0gby5tX3Zpc2l0
ZWRMaW5rQm9yZGVyTGVmdENvbG9yCi0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJSaWdo
dENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IKLSAgICAgICAgJiYgbV92
aXNpdGVkTGlua0JvcmRlclRvcENvbG9yID09IG8ubV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9y
Ci0gICAgICAgICYmIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvciA9PSBvLm1fdmlzaXRl
ZExpbmtCb3JkZXJCb3R0b21Db2xvcgorICAgICAgICAmJiB2aXNpdGVkTGlua0JhY2tncm91bmRD
b2xvcigpID09IG8udmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IoKQorICAgICAgICAmJiB2aXNp
dGVkTGlua091dGxpbmVDb2xvcigpID09IG8udmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoKQorICAg
ICAgICAmJiB2aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcigpID09IG8udmlzaXRlZExpbmtCb3Jk
ZXJMZWZ0Q29sb3IoKQorICAgICAgICAmJiB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSA9
PSBvLnZpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvcigpCisgICAgICAgICYmIHZpc2l0ZWRMaW5r
Qm9yZGVyVG9wQ29sb3IoKSA9PSBvLnZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoKQorICAgICAg
ICAmJiB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgPT0gby52aXNpdGVkTGlua0JvcmRl
ckJvdHRvbUNvbG9yKCkKICAgICAgICAgJiYgbV9vcmRlciA9PSBvLm1fb3JkZXIKICAgICAgICAg
JiYgbV9mbG93VGhyZWFkID09IG8ubV9mbG93VGhyZWFkCiAgICAgICAgICYmIG1fcmVnaW9uVGhy
ZWFkID09IG8ubV9yZWdpb25UaHJlYWQKQEAgLTMxNSw2ICszMzMsNDIgQEAgYm9vbCBTdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhOjp0cmFuc2l0aW9uRGF0YUVxdWl2YWxlbnQoY29uc3QgU3R5bGVS
YXJlTm9uSW5oZXIKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBTdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCit7CisgICAgbV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciA9IGNvbG9yLmlzVmFs
aWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yID0gY29sb3IucmdiKCk7Cit9
CisKK3ZvaWQgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6c2V0VmlzaXRlZExpbmtCb3JkZXJS
aWdodENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1Zpc2l0ZWRMaW5rQm9y
ZGVyUmlnaHRDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICBtX3Zpc2l0ZWRMaW5rQm9yZGVy
UmlnaHRDb2xvciA9IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6OnNldFZpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQor
eworICAgIG1faGFzVmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciA9IGNvbG9yLmlzVmFsaWQoKTsK
KyAgICBtX3Zpc2l0ZWRMaW5rQm9yZGVyVG9wQ29sb3IgPSBjb2xvci5yZ2IoKTsKK30KKwordm9p
ZCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpzZXRWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyQm90
dG9tQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92aXNpdGVkTGlua0JvcmRlckJvdHRv
bUNvbG9yID0gY29sb3IucmdiKCk7Cit9CisKK3ZvaWQgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0
YTo6c2V0VmlzaXRlZExpbmtPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAg
IG1faGFzVmlzaXRlZExpbmtPdXRsaW5lQ29sb3IgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgbV92
aXNpdGVkTGlua091dGxpbmVDb2xvciA9IGNvbG9yLnJnYigpOworfQorCit2b2lkIFN0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGE6OnNldFZpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKK3sKKyAgICBtX2hhc1Zpc2l0ZWRMaW5rQmFja2dyb3VuZENvbG9yID0gY29s
b3IuaXNWYWxpZCgpOworICAgIG1fdmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPSBjb2xvci5y
Z2IoKTsKK30KKwogdm9pZCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogewogICAgIE1l
bW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlU
eXBlczo6Q1NTKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCmluZGV4IGUzNzg0ZDQuLmE3ZGQ0YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhl
cml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZU5vbkluaGVyaXRlZERhdGEuaApAQCAtMTQ0LDEyICsxNDQsMTkgQEAgcHVibGljOgogCiAgICAg
UmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBtX2NsaXBQYXRoOwogCi0gICAgQ29sb3IgbV92aXNp
dGVkTGlua0JhY2tncm91bmRDb2xvcjsKLSAgICBDb2xvciBtX3Zpc2l0ZWRMaW5rT3V0bGluZUNv
bG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJMZWZ0Q29sb3I7Ci0gICAgQ29sb3Ig
bV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7Ci0gICAgQ29sb3IgbV92aXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yOwotICAgIENvbG9yIG1fdmlzaXRlZExpbmtCb3JkZXJCb3R0b21Db2xvcjsK
KyAgICBDb2xvciB2aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
aGFzVmlzaXRlZExpbmtCYWNrZ3JvdW5kQ29sb3IgPyBDb2xvcihtX3Zpc2l0ZWRMaW5rQmFja2dy
b3VuZENvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua091dGxpbmVDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmlzaXRlZExpbmtPdXRsaW5lQ29sb3IgPyBDb2xvciht
X3Zpc2l0ZWRMaW5rT3V0bGluZUNvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVk
TGlua0JvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzVmlzaXRlZExpbmtCb3Jk
ZXJMZWZ0Q29sb3IgPyBDb2xvcihtX3Zpc2l0ZWRMaW5rQm9yZGVyTGVmdENvbG9yKSA6IENvbG9y
KCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2hhc1Zpc2l0ZWRMaW5rQm9yZGVyUmlnaHRDb2xvciA/IENvbG9yKG1fdmlzaXRlZExp
bmtCb3JkZXJSaWdodENvbG9yKSA6IENvbG9yKCk7IH0KKyAgICBDb2xvciB2aXNpdGVkTGlua0Jv
cmRlclRvcENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaXNpdGVkTGlua0JvcmRlclRvcENv
bG9yID8gQ29sb3IobV92aXNpdGVkTGlua0JvcmRlclRvcENvbG9yKSA6IENvbG9yKCk7IH0KKyAg
ICBDb2xvciB2aXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yID8gQ29sb3IobV92aXNpdGVkTGlua0JvcmRl
ckJvdHRvbUNvbG9yKSA6IENvbG9yKCk7IH0KKworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICB2b2lkIHNldFZpc2l0ZWRMaW5rT3V0bGlu
ZUNvbG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckxlZnRD
b2xvcihjb25zdCBDb2xvciYpOworICAgIHZvaWQgc2V0VmlzaXRlZExpbmtCb3JkZXJSaWdodENv
bG9yKGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlclRvcENvbG9y
KGNvbnN0IENvbG9yJik7CisgICAgdm9pZCBzZXRWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9y
KGNvbnN0IENvbG9yJik7CiAKICAgICBpbnQgbV9vcmRlcjsKIApAQCAtMTk0LDcgKzIwMSwyMSBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbV9lZmZlY3RpdmVCbGVuZE1vZGU6IDU7IC8vIEVCbGVu
ZE1vZGUKICNlbmRpZgogCisgICAgdW5zaWduZWQgbV9oYXNWaXNpdGVkTGlua0JhY2tncm91bmRD
b2xvciA6IDE7CisgICAgdW5zaWduZWQgbV9oYXNWaXNpdGVkTGlua091dGxpbmVDb2xvciA6IDE7
CisgICAgdW5zaWduZWQgbV9oYXNWaXNpdGVkTGlua0JvcmRlckxlZnRDb2xvciA6IDE7CisgICAg
dW5zaWduZWQgbV9oYXNWaXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3IgOiAxOworICAgIHVuc2ln
bmVkIG1faGFzVmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvciA6IDE7CisgICAgdW5zaWduZWQgbV9o
YXNWaXNpdGVkTGlua0JvcmRlckJvdHRvbUNvbG9yIDogMTsKKwogcHJpdmF0ZToKKyAgICBSR0JB
MzIgbV92aXNpdGVkTGlua0JhY2tncm91bmRDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlu
a091dGxpbmVDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua0JvcmRlckxlZnRDb2xvcjsK
KyAgICBSR0JBMzIgbV92aXNpdGVkTGlua0JvcmRlclJpZ2h0Q29sb3I7CisgICAgUkdCQTMyIG1f
dmlzaXRlZExpbmtCb3JkZXJUb3BDb2xvcjsKKyAgICBSR0JBMzIgbV92aXNpdGVkTGlua0JvcmRl
ckJvdHRvbUNvbG9yOworCiAgICAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSgpOwogICAgIFN0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YSYp
OwogfTsK
</data>
<flag name="review"
          id="188228"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>