<?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>144928</bug_id>
          
          <creation_ts>2015-05-12 14:08:14 -0700</creation_ts>
          <short_desc>Need SPI to set the overlay scroll bar style</short_desc>
          <delta_ts>2015-05-13 13:01:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1094264</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-12 14:08:14 -0700</bug_when>
    <thetext>Need SPI to set the overlay scroll bar style

rdar://problem/20143614</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094270</commentid>
    <comment_count>1</comment_count>
      <attachid>252984</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-12 14:25:34 -0700</bug_when>
    <thetext>Created attachment 252984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094273</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-12 14:27:47 -0700</bug_when>
    <thetext>Attachment 252984 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/mac/WKView.mm:4472:  Missing space before ( in switch(  [whitespace/parens] [5]
Total errors found: 1 in 20 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>1094295</commentid>
    <comment_count>3</comment_count>
      <attachid>252984</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-05-12 15:21:56 -0700</bug_when>
    <thetext>Comment on attachment 252984
Patch

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

&gt; Source/WebCore/platform/ScrollTypes.h:167
&gt;      enum ScrollbarOverlayStyle {
&gt;          ScrollbarOverlayStyleDefault,
&gt;          ScrollbarOverlayStyleDark,
&gt; -        ScrollbarOverlayStyleLight
&gt; +        ScrollbarOverlayStyleLight,
&gt; +        ScrollbarOverlayStyleNone

I&apos;m surprised this isn&apos;t OverlayScrollbarStyle? It&apos;s the style of the overlay scrollbar, not the overlay style of the scrollbar.

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKOverlayScrollbarStyle.h:37
&gt; +    _WKOverlayScrollbarStyleNone

Automatic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094316</commentid>
    <comment_count>4</comment_count>
      <attachid>252997</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-12 16:30:54 -0700</bug_when>
    <thetext>Created attachment 252997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094519</commentid>
    <comment_count>5</comment_count>
      <attachid>252997</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-05-13 12:19:14 -0700</bug_when>
    <thetext>Comment on attachment 252997
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:5006
&gt; +        parameters.scrollbarOverlayStyle = WTF::Optional&lt;uint32_t&gt;();

= Nullopt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094536</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-13 12:30:07 -0700</bug_when>
    <thetext>Thank you! http://trac.webkit.org/changeset/184297</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1094557</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-05-13 13:01:48 -0700</bug_when>
    <thetext>Follow-up build fix: http://trac.webkit.org/changeset/184299</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252984</attachid>
            <date>2015-05-12 14:25:34 -0700</date>
            <delta_ts>2015-05-12 16:30:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>25355</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE1LTA1LTEyICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIFNQSSB0byBzZXQgdGhlIG92
ZXJsYXkgc2Nyb2xsIGJhciBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0OTI4CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMjAxNDM2MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZXcgQ2hyb21lQ2xpZW50IGZ1bmN0aW9uIHByZWZlcnJlZFNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIHdpbGwgZmV0Y2ggdGhlIGNyb3NzYmFyIAorICAgICAgICBz
dHlsZSB0aGF0IHdhcyBzZXQgdmlhIHRoZSBuZXcgU1BJLgorICAgICAgICAqIHBhZ2UvQ2hyb21l
Q2xpZW50Lmg6CisKKyAgICAgICAgSWYgdGhlIHByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpIGlzIGFueXRoaW5nIGJ1dCBOb25lLCB0aGVuIHVzZSBpdC4gTm9uZSBpcyAKKyAgICAgICAg
dXNlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBub3JtYWwgaGV1cmlzdGljIHNob3VsZCBjb21wdXRl
IHRoZSBhcHByb3ByaWF0ZSBjb2xvci4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorCisgICAgICAgIEFkZCBTY3JvbGxi
YXJPdmVybGF5U3R5bGVOb25lLgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFR5cGVzLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisK
IDIwMTUtMDUtMTIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgQnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lv
biAxODQyMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zODUsNiArMzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IEludFJlY3QmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShTY3JvbGxiYXJT
dHlsZSkgeyB9CiAKKyAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBwcmVmZXJyZWRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVybiBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZh
dWx0OyB9CisKICAgICBlbnVtIERpYWxvZ1R5cGUgewogICAgICAgICBBbGVydERpYWxvZyA9IDAs
CiAgICAgICAgIENvbmZpcm1EaWFsb2cgPSAxLApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkocmV2aXNpb24gMTg0MjE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyArMzc4LDE0IEBAIHZvaWQgRnJhbWVWaWV3Ojpk
ZXRhY2hDdXN0b21TY3JvbGxiYXJzKCkKIHZvaWQgRnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSgpCiB7CiAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG9sZE92ZXJs
YXlTdHlsZSA9IHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOwotICAgIFNjcm9sbGJhck92ZXJsYXlT
dHlsZSBvdmVybGF5U3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OworICAgIFNj
cm9sbGJhck92ZXJsYXlTdHlsZSBjbGllbnRPdmVybGF5U3R5bGUgPSBmcmFtZSgpLnBhZ2UoKSA/
IGZyYW1lKCkucGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS5wcmVmZXJyZWRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoKSA6IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CisgICAgaWYgKGNsaWVu
dE92ZXJsYXlTdHlsZSAhPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVOb25lKSB7CisgICAgICAgIGlm
IChjbGllbnRPdmVybGF5U3R5bGUgIT0gb2xkT3ZlcmxheVN0eWxlKQorICAgICAgICAgICAgc2V0
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKGNsaWVudE92ZXJsYXlTdHlsZSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBTY3JvbGxiYXJPdmVybGF5U3R5bGUgY29tcHV0ZWRPdmVybGF5U3R5
bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OwogCiAgICAgQ29sb3IgYmFja2dyb3Vu
ZENvbG9yID0gZG9jdW1lbnRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoYmFja2dyb3VuZENv
bG9yLmlzVmFsaWQoKSkgewpAQCAtMzg4LDExICszOTUsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnJl
Y2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcgogICAgICAgICBkb3VibGUgaHVlLCBzYXR1cmF0aW9uLCBs
aWdodG5lc3M7CiAgICAgICAgIGJhY2tncm91bmRDb2xvci5nZXRIU0woaHVlLCBzYXR1cmF0aW9u
LCBsaWdodG5lc3MpOwogICAgICAgICBpZiAobGlnaHRuZXNzIDw9IC41ICYmIGJhY2tncm91bmRD
b2xvci5hbHBoYSgpID4gMCkKLSAgICAgICAgICAgIG92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92
ZXJsYXlTdHlsZUxpZ2h0OworICAgICAgICAgICAgY29tcHV0ZWRPdmVybGF5U3R5bGUgPSBTY3Jv
bGxiYXJPdmVybGF5U3R5bGVMaWdodDsKICAgICB9CiAKLSAgICBpZiAob2xkT3ZlcmxheVN0eWxl
ICE9IG92ZXJsYXlTdHlsZSkKLSAgICAgICAgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKG92ZXJs
YXlTdHlsZSk7CisgICAgaWYgKG9sZE92ZXJsYXlTdHlsZSAhPSBjb21wdXRlZE92ZXJsYXlTdHls
ZSkKKyAgICAgICAgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKGNvbXB1dGVkT3ZlcmxheVN0eWxl
KTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmNsZWFyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAkocmV2aXNpb24gMTg0MjE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAkod29ya2luZyBjb3B5KQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
c2V0U2Nyb2xsYmFyc0FuZENsZWFyQ29udGVudHNTaXplKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9y
RGV0YWNoKCk7CiAgICAgdm9pZCBkZXRhY2hDdXN0b21TY3JvbGxiYXJzKCk7Ci0gICAgdm9pZCBy
ZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKIAogICAgIHZvaWQgY2xlYXIo
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVHlwZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCShyZXZpc2lvbiAx
ODQyMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxUeXBlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjMsNyArMTYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGVudW0g
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHsKICAgICAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVm
YXVsdCwKICAgICAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGFyaywKLSAgICAgICAgU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlTGlnaHQKKyAgICAgICAgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQs
CisgICAgICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZU5vbmUKICAgICB9OwogCiAgICAgZW51bSBT
Y3JvbGxiYXJPdmVybGF5U3RhdGUgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMTg0MjE4KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDYsNiArMjQ2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlU2Nyb2xs
YmFyTwogICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHBhaW50ZXJGb3JTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsKICAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCkpIHsKICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ6CisgICAgY2FzZSBT
Y3JvbGxiYXJPdmVybGF5U3R5bGVOb25lOgogICAgICAgICBbcGFpbnRlciBzZXRLbm9iU3R5bGU6
TlNTY3JvbGxlcktub2JTdHlsZURlZmF1bHRdOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFNj
cm9sbGJhck92ZXJsYXlTdHlsZURhcms6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODQyMTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
NyBAQAorMjAxNS0wNS0xMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTmVlZCBTUEkgdG8gc2V0IHRoZSBvdmVybGF5IHNjcm9sbCBiYXIgc3R5bGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDkyOAorICAgICAgICAt
YW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIwMTQzNjE0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBzY3JvbGxi
YXJPdmVybGF5U3R5bGUgYSBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBwYXJhbWV0ZXJzLiAKKyAgICAg
ICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICBOZXcgU1BJLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9zZXRPdmVy
bGF5U2Nyb2xsYmFyU3R5bGU6XSk6CisgICAgICAgICgtW1dLVmlldyBfb3ZlcmxheVNjcm9sbGJh
clN0eWxlXSk6CisKKyAgICAgICAgU3RvcmUgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgb24gV2Vi
UGFnZVByb3h5LCBhbmQgc2V0IGl0IHRvIHRoZSBXZWJQcm9jZXNzLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xs
YmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpvdmVybGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAq
IFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBSZXR1cm4gV2Vi
UGFnZeKAmXMgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
aHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKworICAgICAgICBD
YWNoZSB0aGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgaGVyZSBmb3IgdGhlIFdlYlByb2Nlc3Mu
IAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldFNj
cm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
NS0wNS0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFByb2R1Y3Rpb24gYnVpbGRzIHNob3VsZCBsaW5rIGFnYWluc3QgdGhlIHNoaW1zIGRpcmVjdGx5
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuY3BwCShyZXZpc2lvbiAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2
LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSQogICAgIGVuY29k
ZXIgPDwgbWluaW11bUxheW91dFNpemU7CiAgICAgZW5jb2RlciA8PCBhdXRvU2l6aW5nU2hvdWxk
RXhwYW5kVG9WaWV3SGVpZ2h0OwogICAgIGVuY29kZXIuZW5jb2RlRW51bShzY3JvbGxQaW5uaW5n
QmVoYXZpb3IpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShzY3JvbGxiYXJPdmVybGF5U3R5bGUp
OwogICAgIGVuY29kZXIgPDwgYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShsYXllckhvc3RpbmdNb2RlKTsKICAgICBlbmNvZGVyIDw8IG1pbWVUeXBl
c1dpdGhDdXN0b21Db250ZW50UHJvdmlkZXJzOwpAQCAtMTUyLDYgKzE1Myw4IEBAIGJvb2wgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKEkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFtZXRlcnMuc2Nyb2xsUGlubmluZ0JlaGF2
aW9yKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVt
KHBhcmFtZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0Jl
eW9uZFBhZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0ocGFyYW1ldGVycy5sYXllckhvc3RpbmdNb2RlKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAkocmV2aXNpb24gMTg0
MjE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzIHsKICAgICBib29sIGF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWln
aHQ7CiAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5p
bmdCZWhhdmlvcjsKKyAgICBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlOwogCiAgICAgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lv
biAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDA2LDYgKzQwNiw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHAKICAgICAsIG1fc2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlv
bkVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKERv
Tm90UGluKQorICAgICwgbV9zY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlRGVmYXVsdCkKICAgICAsIG1fbmF2aWdhdGlvbklEKDApCiAgICAgLCBtX2NvbmZpZ3VyYXRp
b25QcmVmZXJlbmNlVmFsdWVzKGNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZVZhbHVlcykKICAgICAs
IG1fcG90ZW50aWFsbHlDaGFuZ2VkVmlld1N0YXRlRmxhZ3MoVmlld1N0YXRlOjpOb0ZsYWdzKQpA
QCAtNTAwMCw2ICs1MDAxLDcgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJv
eHk6OgogICAgIHBhcmFtZXRlcnMubWluaW11bUxheW91dFNpemUgPSBtX21pbmltdW1MYXlvdXRT
aXplOwogICAgIHBhcmFtZXRlcnMuYXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodCA9
IG1fYXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodDsKICAgICBwYXJhbWV0ZXJzLnNj
cm9sbFBpbm5pbmdCZWhhdmlvciA9IG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOworICAgIHBhcmFt
ZXRlcnMuc2Nyb2xsYmFyT3ZlcmxheVN0eWxlID0gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAg
ICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgPSBtX2JhY2tncm91bmRF
eHRlbmRzQmV5b25kUGFnZTsKICAgICBwYXJhbWV0ZXJzLmxheWVySG9zdGluZ01vZGUgPSBtX2xh
eWVySG9zdGluZ01vZGU7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCkBAIC01NTUwLDYg
KzU1NTIsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdCZWhhdgogICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3Jv
bGxiYXJTdHlsZSkKK3sKKyAgICBpZiAobV9zY3JvbGxiYXJPdmVybGF5U3R5bGUgPT0gc2Nyb2xs
YmFyU3R5bGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxl
ID0gc2Nyb2xsYmFyU3R5bGU7CisKKyAgICBpZiAoaXNWYWxpZCgpKQorICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3Jv
bGxiYXJTdHlsZSksIG1fcGFnZUlEKTsKK30KKwogI2lmIEVOQUJMRShTVUJUTEVfQ1JZUFRPKQog
dm9pZCBXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXksIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KQogewpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTg0MjE4
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NzIsNiArOTcyLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Nyb2xsUGlubmlu
Z0JlaGF2aW9yKFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAgICAgV2ViQ29yZTo6
U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsgcmV0dXJuIG1f
c2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAKKyAgICB2b2lkIHNldE92ZXJsYXlTY3JvbGxiYXJT
dHlsZShXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUpOworICAgIFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U2Nyb2xsYmFyU3R5bGUoKSB7IHJldHVybiBtX3Njcm9s
bGJhck92ZXJsYXlTdHlsZTsgfQorCiAgICAgYm9vbCBzaG91bGRSZWNvcmROYXZpZ2F0aW9uU25h
cHNob3RzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3Rz
OyB9CiAgICAgdm9pZCBzZXRTaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKGJvb2wgc2hv
dWxkUmVjb3JkU25hcHNob3RzKSB7IG1fc2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyA9
IHNob3VsZFJlY29yZFNuYXBzaG90czsgfQogICAgIHZvaWQgcmVjb3JkTmF2aWdhdGlvblNuYXBz
aG90KCk7CkBAIC0xNzE5LDYgKzE3MjIsNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NTdXBwcmVz
c2lvbkRpc2FibGVkVG9rZW4gbV9wcmV2ZW50UHJvY2Vzc1N1cHByZXNzaW9uQ291bnQ7CiAgICAg
ICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdC
ZWhhdmlvcjsKKyAgICBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgbV9zY3JvbGxiYXJP
dmVybGF5U3R5bGU7CiAKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKIApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJ
KHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0
IDxXZWJLaXQvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTGF5
b3V0TW9kZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L19X
S092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkK
IApAQCAtODksNiArOTAsOCBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VG9w
Q29udGVudEluc2V0OikgQ0dGbG9hdCBfdG9wQ29udGVudEluc2V0OwogQHByb3BlcnR5IChub25h
dG9taWMsIHNldHRlcj1fc2V0VG90YWxIZWlnaHRPZkJhbm5lcnM6KSBDR0Zsb2F0IF90b3RhbEhl
aWdodE9mQmFubmVyczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0T3Zlcmxh
eVNjcm9sbGJhclN0eWxlOikgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIF9vdmVybGF5U2Nyb2xs
YmFyU3R5bGU7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExheW91dE1vZGU6
KSBXS0xheW91dE1vZGUgX2xheW91dE1vZGU7CiAvLyBGb3IgdXNlIHdpdGggX2xheW91dE1vZGUg
PSBrV0tMYXlvdXRNb2RlRml4ZWRTaXplOgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1f
c2V0Rml4ZWRMYXlvdXRTaXplOikgQ0dTaXplIF9maXhlZExheW91dFNpemU7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdl
ciwgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKSB7CisgICAgX1dLT3ZlcmxheVNjcm9sbGJhclN0
eWxlRGVmYXVsdCwKKyAgICBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEYXJrLAorICAgIF9XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZUxpZ2h0LAorCisgICAgLy8gU2V0dGluZyB0aGUgb3ZlcmxheSBz
Y3JvbGxiYXIgc3R5bGUgdG8gbm9uZSB3aWxsIGNhdXNlIFdlYktpdCB0byB1c2UgaXRzIG5vcm1h
bAorICAgIC8vIGhldXJpc3RpYyB0byBjaG9vc2UgYW4gYXBwcm9wcmlhdGUgY29sb3IuCisgICAg
X1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlTm9uZQorCit9IFdLX0VOVU1fQVZBSUxBQkxFKFdLX01B
Q19UQkEsIFdLX0lPU19UQkEpOworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQ0Miw2
ICs0NDQyLDQ2IEBAIC0gKENHRmxvYXQpX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzCiAgICAgcmV0dXJu
IF9kYXRhLT5fdG90YWxIZWlnaHRPZkJhbm5lcnM7CiB9CiAKKy0gKHZvaWQpX3NldE92ZXJsYXlT
Y3JvbGxiYXJTdHlsZTooX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKXNjcm9sbGJhclN0eWxlCit7
CisgICAgV2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlIGNvcmVTY3JvbGxiYXJTdHlsZSA9
IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CisKKyAgICBzd2l0Y2ggKHNjcm9sbGJhclN0
eWxlKSB7CisgICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEYXJrOgorICAgICAgICBj
b3JlU2Nyb2xsYmFyU3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZUxpZ2h0OgorICAgICAgICBj
b3JlU2Nyb2xsYmFyU3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVOb25lOgorICAgICAgICBj
b3JlU2Nyb2xsYmFyU3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVOb25lOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZURlZmF1bHQ6CisgICAgZGVm
YXVsdDoKKyAgICAgICAgY29yZVNjcm9sbGJhclN0eWxlID0gU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
RGVmYXVsdDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgX2RhdGEtPl9wYWdlLT5zZXRP
dmVybGF5U2Nyb2xsYmFyU3R5bGUoY29yZVNjcm9sbGJhclN0eWxlKTsKK30KKworLSAoX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlKV9vdmVybGF5U2Nyb2xsYmFyU3R5bGUKK3sKKyAgICBXZWJDb3Jl
OjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgY29yZVNjcm9sbGJhclN0eWxlID0gX2RhdGEtPl9wYWdl
LT5vdmVybGF5U2Nyb2xsYmFyU3R5bGUoKTsKKworICAgIHN3aXRjaChjb3JlU2Nyb2xsYmFyU3R5
bGUpIHsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURhcms6CisgICAgICAgIHJldHVy
biBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEYXJrOworICAgIGNhc2UgU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlTGlnaHQ6CisgICAgICAgIHJldHVybiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVMaWdo
dDsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZU5vbmU6CisgICAgICAgIHJldHVybiBf
V0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVOb25lOworICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlRGVmYXVsdDoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gX1dLT3ZlcmxheVNjcm9s
bGJhclN0eWxlTm9uZTsKKyAgICB9Cit9CisKIC0gKE5TQ29sb3IgKilfcGFnZUV4dGVuZGVkQmFj
a2dyb3VuZENvbG9yCiB7CiAgICAgV2ViQ29yZTo6Q29sb3IgY29sb3IgPSBfZGF0YS0+X3BhZ2Ut
PnBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvcigpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTg0MjE4KQor
KysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjExLDYgKzEyMTEsNyBAQAogCQk5MzIxRDU4NjFBMzhFRTNDMDA4MDUy
QkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIxRDU4NTFBMzhFRTNDMDA4MDUyQkUgLyogV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmggKi87IH07CiAJCTkzMjFENTg4MUEzOEVFNzQwMDgw
NTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIxRDU4NzFBMzhFRTc0MDA4MDUyQkUgLyog
V0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tICovOyB9OwogCQk5MzIxRDU4QTFBMzhGMTk2
MDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyMUQ1ODkxQTM4RjE5NjAwODA1MkJFIC8qIFdL
SW1tZWRpYXRlQWN0aW9uVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk5MzIzNjExRTFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNj
cm9sbGJhclN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzIzNjExRDFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0
QjcyNDQxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0QjcyNDMxOUY1QjlCRTAw
QUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlCMTI3NzYxN0MwMDMzMjJCOCAvKiBX
S0J1bmRsZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzNUVFQjk4MTI3NzYxNkQwMDMzMjJCOCAvKiBXS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzVFRUI5RTEyNzc2MUFDMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9y
d2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTM1RUVCOTUxMjc3NjE2RDAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cCAqLzsgfTsKQEAgLTM0MzQsNiArMzQzNSw3IEBACiAJCTkzMjFENTg1MUEzOEVFM0MwMDgwNTJC
RSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzMjFENTg3MUEzOEVFNzQwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkzMjFENTg5MUEzOEYxOTYwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvblR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW1tZWRpYXRlQWN0aW9uVHlw
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTMyMzYxMUQxQjAxNURBODAwRkE5
MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM0QjcyNDMxOUY1QjlCRTAwQUU5NkQ2IC8qIFdLQWN0aW9uTWVudUl0ZW1U
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0FjdGlvbk1lbnVJdGVt
VHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOEYxMjc3NjE1RDAw
MzMyMkI4IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM1RUVCOTAxMjc3NjE1RDAwMzMyMkI4
IC8qIEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlQmFja0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01MzYwLDYgKzUzNjIsNyBAQAogCQkJCTM3QTY0RTU0MThGMzhF
M0MwMEVCMzBGMSAvKiBfV0tGb3JtRGVsZWdhdGUuaCAqLywKIAkJCQkzN0E2NEU1NjE4RjM4RjQ2
MDBFQjMwRjEgLyogX1dLRm9ybUlucHV0U2Vzc2lvbi5oICovLAogCQkJCTJENzkwQTlDMUFENzA1
MEQwMEFCOTBCMyAvKiBfV0tMYXlvdXRNb2RlLmggKi8sCisJCQkJOTMyMzYxMUQxQjAxNURBODAw
RkE5MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICovLAogCQkJCTFBNDNFODI4MTg4
RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkx
QTQzRTgyNzE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1t
ICovLAogCQkJCTdDODlEMkQ2MUE2QzZCRTYwMDNBNUZERSAvKiBfV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oICovLApAQCAtNzg3OSw2ICs3ODgyLDcgQEAKIAkJCQk3QzNGOEM5
MTE3M0FGNTJEMDA3QjdGMzkgLyogUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRUZDQzEyMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBM0Q2MTAyMTNBN0NDMkEwMEY5NUQ0RSAvKiBQbHVnaW5Nb2R1bGVJbmZv
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzIzNjExRTFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3Zl
cmxheVNjcm9sbGJhclN0eWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA0Mzk3NjEyNEQwMzQ4
MDBGRkJGQjUgLyogUGx1Z2luUHJvY2Vzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNUZGQzIx
NzRCRkQxQjAwMDE0ODNEIC8qIFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTBFQzkwNjEyNEMwQUI4MDA3RUY0QTUgLyogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNp
b24gMTg0MjE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODAsNiArOTgwLDExIEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpyZWNvbW1lbmRlZFNjcm9sbGIKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZShzdGF0aWNfY2FzdDxpbnQzMl90PihuZXdTdHlsZSkpKTsKIH0KIAorU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlIFdlYkNocm9tZUNsaWVudDo6cHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkK
K3sKKyAgICByZXR1cm4gbV9wYWdlLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsgCit9CisKIENv
bG9yIFdlYkNocm9tZUNsaWVudDo6dW5kZXJsYXlDb2xvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFnZS0+dW5kZXJsYXlDb2xvcigpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZp
c2lvbiAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzYsNiArMjc2LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVj
dChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJl
Y29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UoV2ViQ29yZTo6U2Nyb2xsYmFyU3R5bGUg
bmV3U3R5bGUpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXJPdmVy
bGF5U3R5bGUgcHJlZmVycmVkU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgb3ZlcnJpZGU7CisKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkNvbG9yIHVuZGVybGF5Q29sb3IoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3JEaWRDaGFuZ2Uo
V2ViQ29yZTo6Q29sb3IpIGNvbnN0IG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTg0MjE4KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzMsNiArMzMzLDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IAogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9tYXhp
bXVtUmVuZGVyaW5nU3VwcHJlc3Npb25Ub2tlbigwKQogICAgICwgbV9zY3JvbGxQaW5uaW5nQmVo
YXZpb3IoRG9Ob3RQaW4pCisgICAgLCBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJP
dmVybGF5U3R5bGVEZWZhdWx0KQogICAgICwgbV91c2VBc3luY1Njcm9sbGluZyhmYWxzZSkKICAg
ICAsIG1fdmlld1N0YXRlKHBhcmFtZXRlcnMudmlld1N0YXRlKQogICAgICwgbV9wcm9jZXNzU3Vw
cHJlc3Npb25FbmFibGVkKHRydWUpCkBAIC00NTEsNiArNDUyLDcgQEAgV2ViUGFnZTo6V2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIHNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRU
b1ZpZXdIZWlnaHQocGFyYW1ldGVycy5hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0
KTsKICAgICAKICAgICBzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGFyYW1ldGVycy5zY3JvbGxQ
aW5uaW5nQmVoYXZpb3IpOworICAgIHNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShwYXJhbWV0ZXJz
LnNjcm9sbGJhck92ZXJsYXlTdHlsZSk7CiAgICAgc2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQ
YWdlKHBhcmFtZXRlcnMuYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKTsKIAogICAgIHNldFRv
cENvbnRlbnRJbnNldChwYXJhbWV0ZXJzLnRvcENvbnRlbnRJbnNldCk7CkBAIC00ODQ0LDYgKzQ4
NDYsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IodQogICAgIG1f
cGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5zZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IobV9zY3Jv
bGxQaW5uaW5nQmVoYXZpb3IpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZSh1aW50MzJfdCBzY3JvbGxiYXJTdHlsZSkKK3sKKyAgICBtX3Njcm9sbGJhck92ZXJs
YXlTdHlsZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oc2Nyb2xsYmFyU3R5
bGUpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpOworfQorCiBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJQYWdl
OjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAg
IFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTg0MjE4KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtODYwLDYgKzg2MCw5IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5n
QmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5n
QmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCAv
KiBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgKi8gcGlubmluZyk7CiAKKyAgICBXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgeyByZXR1
cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAgICB2b2lkIHNldFNjcm9sbGJhck92ZXJs
YXlTdHlsZSh1aW50MzJfdCAvKiBXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGUgKi8gc2Ny
b2xsYmFyU3R5bGUpOworCiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4g
Y3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29yZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogCiAgICAgdm9p
ZCBnZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCk7CkBAIC0xMzQ4LDYgKzEz
NTEsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNz
aW9uVG9rZW47CiAgICAgCiAgICAgV2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIG1fc2Ny
b2xsUGlubmluZ0JlaGF2aW9yOworICAgIFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZSBt
X3Njcm9sbGJhck92ZXJsYXlTdHlsZTsKIAogICAgIGJvb2wgbV91c2VBc3luY1Njcm9sbGluZzsK
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00
MDcsNiArNDA3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjZW5k
aWYKIAogICAgIFNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQorICAg
IFNldFNjcm9sbGJhck92ZXJsYXlTdHlsZSh1aW50MzJfdCBzY3JvbGxiYXJTdHlsZSkKIAogICAg
IEdldEJ5dGVjb2RlUHJvZmlsZSh1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252997</attachid>
            <date>2015-05-12 16:30:54 -0700</date>
            <delta_ts>2015-05-13 12:19:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>25353</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4NDIyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA1LTEyICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIFNQSSB0byBzZXQgdGhlIG92
ZXJsYXkgc2Nyb2xsIGJhciBzdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0OTI4CisgICAgICAgIC1hbmQgY29ycmVzcG9uZGluZy0KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMjAxNDM2MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZXcgQ2hyb21lQ2xpZW50IGZ1bmN0aW9uIHByZWZlcnJlZFNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIHdpbGwgZmV0Y2ggdGhlIAorICAgICAgICBzY3JvbGxiYXIg
c3R5bGUgdGhhdCB3YXMgc2V0IHZpYSB0aGUgbmV3IFNQSS4KKyAgICAgICAgKiBwYWdlL0Nocm9t
ZUNsaWVudC5oOgorCisgICAgICAgIElmIHRoZSBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5
bGUoKSBpcyBhbnl0aGluZyBidXQgTm9uZSwgdGhlbiB1c2UgaXQuIE5vbmUgaXMgCisgICAgICAg
IHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbm9ybWFsIGhldXJpc3RpYyBzaG91bGQgY29tcHV0
ZSB0aGUgYXBwcm9wcmlhdGUgY29sb3IuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoKKwogMjAxNS0wNS0xMiAgTWF0dCBC
YWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVH
UkVTU0lPTiAocjE4MTYyNSk6IFRpbWVsaW5lIHJlY29yZGluZyBzdGFydGVkIGZyb20gY29uc29s
ZS5wcm9maWxlIGlzIGFsd2F5cyBlbXB0eQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAxODQyMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsNiArMzg1LDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IEludFJlY3Qm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURpZENoYW5n
ZShTY3JvbGxiYXJTdHlsZSkgeyB9CiAKKyAgICB2aXJ0dWFsIFdURjo6T3B0aW9uYWw8U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlPiBwcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSB7IHJldHVy
biBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OyB9CisKICAgICBlbnVtIERpYWxvZ1R5cGUg
ewogICAgICAgICBBbGVydERpYWxvZyA9IDAsCiAgICAgICAgIENvbmZpcm1EaWFsb2cgPSAxLApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTg0MjE4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzgsNyAr
Mzc4LDE0IEBAIHZvaWQgRnJhbWVWaWV3OjpkZXRhY2hDdXN0b21TY3JvbGxiYXJzKCkKIHZvaWQg
RnJhbWVWaWV3OjpyZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSgpCiB7CiAgICAgU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlIG9sZE92ZXJsYXlTdHlsZSA9IHNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpOwotICAgIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUgPSBTY3JvbGxiYXJP
dmVybGF5U3R5bGVEZWZhdWx0OworICAgIFdURjo6T3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0
eWxlPiBjbGllbnRPdmVybGF5U3R5bGUgPSBmcmFtZSgpLnBhZ2UoKSA/IGZyYW1lKCkucGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS5wcmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSA6IFNj
cm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ7CisgICAgaWYgKGNsaWVudE92ZXJsYXlTdHlsZSkg
eworICAgICAgICBpZiAoY2xpZW50T3ZlcmxheVN0eWxlLnZhbHVlKCkgIT0gb2xkT3ZlcmxheVN0
eWxlKQorICAgICAgICAgICAgc2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKGNsaWVudE92ZXJsYXlT
dHlsZS52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFNjcm9sbGJhck92
ZXJsYXlTdHlsZSBjb21wdXRlZE92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJsYXlTdHlsZURl
ZmF1bHQ7CiAKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IgPSBkb2N1bWVudEJhY2tncm91bmRD
b2xvcigpOwogICAgIGlmIChiYWNrZ3JvdW5kQ29sb3IuaXNWYWxpZCgpKSB7CkBAIC0zODgsMTEg
KzM5NSwxMSBAQCB2b2lkIEZyYW1lVmlldzo6cmVjYWxjdWxhdGVTY3JvbGxiYXJPdmVyCiAgICAg
ICAgIGRvdWJsZSBodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzczsKICAgICAgICAgYmFja2dyb3Vu
ZENvbG9yLmdldEhTTChodWUsIHNhdHVyYXRpb24sIGxpZ2h0bmVzcyk7CiAgICAgICAgIGlmIChs
aWdodG5lc3MgPD0gLjUgJiYgYmFja2dyb3VuZENvbG9yLmFscGhhKCkgPiAwKQotICAgICAgICAg
ICAgb3ZlcmxheVN0eWxlID0gU2Nyb2xsYmFyT3ZlcmxheVN0eWxlTGlnaHQ7CisgICAgICAgICAg
ICBjb21wdXRlZE92ZXJsYXlTdHlsZSA9IFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0OwogICAg
IH0KIAotICAgIGlmIChvbGRPdmVybGF5U3R5bGUgIT0gb3ZlcmxheVN0eWxlKQotICAgICAgICBz
ZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUob3ZlcmxheVN0eWxlKTsKKyAgICBpZiAob2xkT3Zlcmxh
eVN0eWxlICE9IGNvbXB1dGVkT3ZlcmxheVN0eWxlKQorICAgICAgICBzZXRTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoY29tcHV0ZWRPdmVybGF5U3R5bGUpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6Y2xl
YXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCShyZXZpc2lvbiAxODQyMTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyAr
MTg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRTY3JvbGxiYXJzQW5kQ2xlYXJDb250ZW50
c1NpemUoKTsKICAgICB2b2lkIHByZXBhcmVGb3JEZXRhY2goKTsKICAgICB2b2lkIGRldGFjaEN1
c3RvbVNjcm9sbGJhcnMoKTsKLSAgICB2b2lkIHJlY2FsY3VsYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWNhbGN1bGF0ZVNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpOwogCiAgICAgdm9pZCBjbGVhcigpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw0NyBAQAorMjAxNS0wNS0xMiAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+
CisKKyAgICAgICAgTmVlZCBTUEkgdG8gc2V0IHRoZSBvdmVybGF5IHNjcm9sbCBiYXIgc3R5bGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDkyOAor
ICAgICAgICAtYW5kIGNvcnJlc3BvbmRpbmctCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzIwMTQz
NjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFr
ZSBzY3JvbGxiYXJPdmVybGF5U3R5bGUgYSBwYXJ0IG9mIHRoZSBjcmVhdGlvbiBwYXJhbWV0ZXJz
LiAKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICog
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaDoKKworICAgICAgICBOZXcgU1BJLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3
IF9zZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGU6XSk6CisgICAgICAgICgtW1dLVmlldyBfb3Zlcmxh
eVNjcm9sbGJhclN0eWxlXSk6CisKKyAgICAgICAgU3RvcmUgbV9zY3JvbGxiYXJPdmVybGF5U3R5
bGUgb24gV2ViUGFnZVByb3h5LCBhbmQgc2V0IGl0IHRvIHRoZSBXZWJQcm9jZXNzLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3Jl
YXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRPdmVy
bGF5U2Nyb2xsYmFyU3R5bGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpvdmVybGF5U2Nyb2xsYmFyU3R5bGUpOgor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICBS
ZXR1cm4gV2ViUGFnZeKAmXMgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6OnByZWZlcnJlZFNjcm9sbGJhck92ZXJsYXlTdHlsZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKwor
ICAgICAgICBDYWNoZSB0aGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgaGVyZSBmb3IgdGhlIFdl
YlByb2Nlc3MuIAorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjoKKwogMjAxNS0wNS0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFByb2R1Y3Rpb24gYnVpbGRzIHNob3VsZCBsaW5rIGFnYWluc3QgdGhlIHNoaW1z
IGRpcmVjdGx5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQkocmV2aXNpb24gMTg0MjE4KQorKysgU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTI5NCw4ICsyOTQsOSBAQCBkZWYgY2xhc3NfdGVt
cGxhdGVfaGVhZGVycyh0ZW1wbGF0ZV9zdHJpCiAgICAgdGVtcGxhdGVfc3RyaW5nID0gdGVtcGxh
dGVfc3RyaW5nLnN0cmlwKCkKIAogICAgIGNsYXNzX3RlbXBsYXRlX3R5cGVzID0gewotICAgICAg
ICAnVmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3RmL1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29k
ZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJzLmgiJ119LAogICAgICAgICAnSGFzaE1hcCc6
IHsnaGVhZGVycyc6IFsnPHd0Zi9IYXNoTWFwLmg+J10sICdhcmd1bWVudF9jb2Rlcl9oZWFkZXJz
JzogWyciQXJndW1lbnRDb2RlcnMuaCInXX0sCisgICAgICAgICdPcHRpb25hbCc6IHsnaGVhZGVy
cyc6IFsnPHd0Zi9PcHRpb25hbC5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFy
Z3VtZW50Q29kZXJzLmgiJ119LAorICAgICAgICAnVmVjdG9yJzogeydoZWFkZXJzJzogWyc8d3Rm
L1ZlY3Rvci5oPiddLCAnYXJndW1lbnRfY29kZXJfaGVhZGVycyc6IFsnIkFyZ3VtZW50Q29kZXJz
LmgiJ119LAogICAgICAgICAnc3RkOjpwYWlyJzogeydoZWFkZXJzJzogWyc8dXRpbGl0eT4nXSwg
J2FyZ3VtZW50X2NvZGVyX2hlYWRlcnMnOiBbJyJBcmd1bWVudENvZGVycy5oIiddfSwKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAJKHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiAr
NjYsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJCiAgICAgZW5j
b2RlciA8PCBtaW5pbXVtTGF5b3V0U2l6ZTsKICAgICBlbmNvZGVyIDw8IGF1dG9TaXppbmdTaG91
bGRFeHBhbmRUb1ZpZXdIZWlnaHQ7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHNjcm9sbFBpbm5p
bmdCZWhhdmlvcik7CisgICAgZW5jb2RlciA8PCBzY3JvbGxiYXJPdmVybGF5U3R5bGU7CiAgICAg
ZW5jb2RlciA8PCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAgICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKGxheWVySG9zdGluZ01vZGUpOwogICAgIGVuY29kZXIgPDwgbWltZVR5cGVzV2l0aEN1
c3RvbUNvbnRlbnRQcm92aWRlcnM7CkBAIC0xNTIsNiArMTUzLDggQEAgYm9vbCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy5zY3JvbGxQaW5uaW5nQmVoYXZpb3IpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJz
LnNjcm9sbGJhck92ZXJsYXlTdHlsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHBhcmFt
ZXRlcnMubGF5ZXJIb3N0aW5nTW9kZSkpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDE4NDIxOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNiw2ICsxMDYsMTAgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIAogICAgIFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBzY3JvbGxQaW5u
aW5nQmVoYXZpb3I7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgV1RGOjpPcHRpb25h
bDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+LCBidXQgd2Ugd291bGQgbmVlZCB0bwor
ICAgIC8vIGNvcnJlY3RseSBoYW5kbGUgZW51bXMgaW5zaWRlIE9wdGlvbmFscyB3aGVuIGVuY29k
aW5nIGFuZCBkZWNvZGluZy4gCisgICAgV1RGOjpPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFy
T3ZlcmxheVN0eWxlOworCiAgICAgYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2U7CiAK
ICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTg0MjE4KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUwMDAsNiArNTAwMCwxMCBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94
eTo6CiAgICAgcGFyYW1ldGVycy5taW5pbXVtTGF5b3V0U2l6ZSA9IG1fbWluaW11bUxheW91dFNp
emU7CiAgICAgcGFyYW1ldGVycy5hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0ID0g
bV9hdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0OwogICAgIHBhcmFtZXRlcnMuc2Ny
b2xsUGlubmluZ0JlaGF2aW9yID0gbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3I7CisgICAgaWYgKG1f
c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKQorICAgICAgICBwYXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJs
YXlTdHlsZSA9IG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlLnZhbHVlKCk7CisgICAgZWxzZQorICAg
ICAgICBwYXJhbWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSA9IFdURjo6T3B0aW9uYWw8dWlu
dDMyX3Q+KCk7CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UgPSBt
X2JhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZTsKICAgICBwYXJhbWV0ZXJzLmxheWVySG9zdGlu
Z01vZGUgPSBtX2xheWVySG9zdGluZ01vZGU7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CkBAIC01NTUwLDYgKzU1NTQsMjQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5p
bmdCZWhhdgogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNj
cm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKK3sKKyAgICBpZiAoIW1fc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlICYmICFzY3JvbGxiYXJTdHlsZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKChtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSAmJiBzY3JvbGxiYXJTdHlsZSkgJiYg
bV9zY3JvbGxiYXJPdmVybGF5U3R5bGUudmFsdWUoKSA9PSBzY3JvbGxiYXJTdHlsZS52YWx1ZSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHNjcm9s
bGJhclN0eWxlOworCisgICAgV1RGOjpPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGVG
b3JNZXNzYWdlOworICAgIGlmIChzY3JvbGxiYXJTdHlsZSkKKyAgICAgICAgc2Nyb2xsYmFyU3R5
bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxi
YXJTdHlsZS52YWx1ZSgpKTsKKworICAgIGlmIChpc1ZhbGlkKCkpCisgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9s
bGJhclN0eWxlRm9yTWVzc2FnZSksIG1fcGFnZUlEKTsKK30KKwogI2lmIEVOQUJMRShTVUJUTEVf
Q1JZUFRPKQogdm9pZCBXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXksIGJvb2wmIHN1Y2NlZWRlZCwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5
KQogewpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMTg0MjE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05NzIsNiArOTcyLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Ny
b2xsUGlubmluZ0JlaGF2aW9yKFdlYkNvcmU6OlNjcm9sbFBpbm5pbmdCZWhhdmlvcik7CiAgICAg
V2ViQ29yZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIHNjcm9sbFBpbm5pbmdCZWhhdmlvcigpIHsg
cmV0dXJuIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOyB9CiAKKyAgICB2b2lkIHNldE92ZXJsYXlT
Y3JvbGxiYXJTdHlsZShXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHls
ZT4pOworICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBv
dmVybGF5U2Nyb2xsYmFyU3R5bGUoKSB7IHJldHVybiBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZTsg
fQorCiAgICAgYm9vbCBzaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zaG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzOyB9CiAgICAgdm9pZCBzZXRT
aG91bGRSZWNvcmROYXZpZ2F0aW9uU25hcHNob3RzKGJvb2wgc2hvdWxkUmVjb3JkU25hcHNob3Rz
KSB7IG1fc2hvdWxkUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90cyA9IHNob3VsZFJlY29yZFNuYXBz
aG90czsgfQogICAgIHZvaWQgcmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KCk7CkBAIC0xNzE5LDYg
KzE3MjIsNyBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW4g
bV9wcmV2ZW50UHJvY2Vzc1N1cHByZXNzaW9uQ291bnQ7CiAgICAgICAgIAogICAgIFdlYkNvcmU6
OlNjcm9sbFBpbm5pbmdCZWhhdmlvciBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvcjsKKyAgICBXVEY6
Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gbV9zY3JvbGxiYXJPdmVy
bGF5U3R5bGU7CiAKICAgICB1aW50NjRfdCBtX25hdmlnYXRpb25JRDsKIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ZpZXdQcml2YXRlLmgJKHJl
dmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tW
aWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTGF5b3V0
TW9kZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0L19XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZS5oPgogCiBAaW50ZXJmYWNlIFdLVmlldyAoUHJpdmF0ZSkKIApA
QCAtODksNiArOTAsOCBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0VG9wQ29u
dGVudEluc2V0OikgQ0dGbG9hdCBfdG9wQ29udGVudEluc2V0OwogQHByb3BlcnR5IChub25hdG9t
aWMsIHNldHRlcj1fc2V0VG90YWxIZWlnaHRPZkJhbm5lcnM6KSBDR0Zsb2F0IF90b3RhbEhlaWdo
dE9mQmFubmVyczsKIAorQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0T3ZlcmxheVNj
cm9sbGJhclN0eWxlOikgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlIF9vdmVybGF5U2Nyb2xsYmFy
U3R5bGU7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldExheW91dE1vZGU6KSBX
S0xheW91dE1vZGUgX2xheW91dE1vZGU7CiAvLyBGb3IgdXNlIHdpdGggX2xheW91dE1vZGUgPSBr
V0tMYXlvdXRNb2RlRml4ZWRTaXplOgogQHByb3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0
Rml4ZWRMYXlvdXRTaXplOikgQ0dTaXplIF9maXhlZExheW91dFNpemU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLT3Zlcmxh
eVNjcm9sbGJhclN0eWxlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9u
Lmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCit0eXBlZGVmIE5TX0VOVU0oTlNVSW50ZWdlciwg
X1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlKSB7CisgICAgX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxl
RGVmYXVsdCwKKyAgICBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEYXJrLAorICAgIF9XS092ZXJs
YXlTY3JvbGxiYXJTdHlsZUxpZ2h0LAorCisgICAgLy8gU2V0dGluZyB0aGUgb3ZlcmxheSBzY3Jv
bGxiYXIgc3R5bGUgdG8gYXV0b21hdGljIHdpbGwgY2F1c2UgV2ViS2l0IHRvIHVzZSBpdHMgbm9y
bWFsCisgICAgLy8gaGV1cmlzdGljIHRvIGNob29zZSBhbiBhcHByb3ByaWF0ZSBjb2xvci4KKyAg
ICBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVBdXRvbWF0aWMKKworfSBXS19FTlVNX0FWQUlMQUJM
RShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCShyZXZpc2lvbiAxODQyMTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ0NDIsNiArNDQ0Miw0NyBAQCAtIChDR0Zsb2F0KV90b3RhbEhlaWdodE9mQmFubmVycwogICAg
IHJldHVybiBfZGF0YS0+X3RvdGFsSGVpZ2h0T2ZCYW5uZXJzOwogfQogCistICh2b2lkKV9zZXRP
dmVybGF5U2Nyb2xsYmFyU3R5bGU6KF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZSlzY3JvbGxiYXJT
dHlsZQoreworICAgIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PiBjb3JlU2Nyb2xsYmFyU3R5bGU7CisKKyAgICBzd2l0Y2ggKHNjcm9sbGJhclN0eWxlKSB7Cisg
ICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEYXJrOgorICAgICAgICBjb3JlU2Nyb2xs
YmFyU3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZUxpZ2h0OgorICAgICAgICBjb3JlU2Nyb2xs
YmFyU3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVMaWdodDsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVEZWZhdWx0OgorICAgICAgICBjb3JlU2Ny
b2xsYmFyU3R5bGUgPSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZUF1dG9tYXRpYzoKKyAgICBkZWZh
dWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBfZGF0YS0+X3BhZ2UtPnNldE92ZXJs
YXlTY3JvbGxiYXJTdHlsZShjb3JlU2Nyb2xsYmFyU3R5bGUpOworfQorCistIChfV0tPdmVybGF5
U2Nyb2xsYmFyU3R5bGUpX292ZXJsYXlTY3JvbGxiYXJTdHlsZQoreworICAgIFdURjo6T3B0aW9u
YWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBjb3JlU2Nyb2xsYmFyU3R5bGUgPSBf
ZGF0YS0+X3BhZ2UtPm92ZXJsYXlTY3JvbGxiYXJTdHlsZSgpOworCisgICAgaWYgKCFjb3JlU2Ny
b2xsYmFyU3R5bGUpCisgICAgICAgIHJldHVybiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGVBdXRv
bWF0aWM7CisKKyAgICBzd2l0Y2ggKGNvcmVTY3JvbGxiYXJTdHlsZS52YWx1ZSgpKSB7CisgICAg
Y2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEYXJrOgorICAgICAgICByZXR1cm4gX1dLT3Zlcmxh
eVNjcm9sbGJhclN0eWxlRGFyazsKKyAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZUxpZ2h0
OgorICAgICAgICByZXR1cm4gX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlTGlnaHQ7CisgICAgY2Fz
ZSBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OgorICAgICAgICByZXR1cm4gX1dLT3Zlcmxh
eVNjcm9sbGJhclN0eWxlRGVmYXVsdDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gX1dL
T3ZlcmxheVNjcm9sbGJhclN0eWxlQXV0b21hdGljOworICAgIH0KK30KKwogLSAoTlNDb2xvciAq
KV9wYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IKIHsKICAgICBXZWJDb3JlOjpDb2xvciBjb2xv
ciA9IF9kYXRhLT5fcGFnZS0+cGFnZUV4dGVuZGVkQmFja2dyb3VuZENvbG9yKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyMTEsNiArMTIxMSw3IEBACiAJCTkzMjFE
NTg2MUEzOEVFM0MwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjFENTg1MUEzOEVF
M0MwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTMy
MUQ1ODgxQTM4RUU3NDAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjFENTg3MUEz
OEVFNzQwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gKi87IH07CiAJ
CTkzMjFENThBMUEzOEYxOTYwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvblR5cGVzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIxRDU4OTFBMzhG
MTk2MDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTkzMjM2MTFFMUIwMTVEQTgwMEZBOTIz
MiAvKiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjM2MTFEMUIwMTVEQTgwMEZBOTIzMiAvKiBfV0tPdmVy
bGF5U2Nyb2xsYmFyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5MzRCNzI0NDE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRl
bVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzRCNzI0MzE5RjVCOUJFMDBBRTk2RDYgLyogV0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM1RUVCOUIxMjc3
NjE3QzAwMzMyMkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM1RUVCOTgxMjc3NjE2RDAwMzMy
MkI4IC8qIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzNUVFQjlFMTI3NzYxQUMwMDMzMjJCOCAv
KiBXS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzVFRUI5NTEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVC
YWNrRm9yd2FyZExpc3QuY3BwICovOyB9OwpAQCAtMzQzNCw2ICszNDM1LDcgQEAKIAkJOTMyMUQ1
ODUxQTM4RUUzQzAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyMUQ1ODcxQTM4RUU3NDAwODA1MkJF
IC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyMUQ1ODkxQTM4RjE5NjAwODA1MkJFIC8qIFdLSW1t
ZWRpYXRlQWN0aW9uVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJ
bW1lZGlhdGVBY3Rpb25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MzIz
NjExRDFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzRCNzI0MzE5RjVCOUJFMDBBRTk2RDYgLyog
V0tBY3Rpb25NZW51SXRlbVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLQWN0aW9uTWVudUl0ZW1UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzVFRUI4RjEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3Qu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzVFRUI5
MDEyNzc2MTVEMDAzMzIyQjggLyogSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVCYWNrRm9yd2FyZExp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNjAsNiArNTM2Miw3IEBACiAJ
CQkJMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0Zvcm1EZWxlZ2F0ZS5oICovLAogCQkJ
CTM3QTY0RTU2MThGMzhGNDYwMEVCMzBGMSAvKiBfV0tGb3JtSW5wdXRTZXNzaW9uLmggKi8sCiAJ
CQkJMkQ3OTBBOUMxQUQ3MDUwRDAwQUI5MEIzIC8qIF9XS0xheW91dE1vZGUuaCAqLywKKwkJCQk5
MzIzNjExRDFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmggKi8s
CiAJCQkJMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oICovLAogCQkJCTFBNDNFODI3MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24ubW0gKi8sCiAJCQkJN0M4OUQyRDYxQTZDNkJFNjAwM0E1RkRFIC8qIF9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCkBAIC03ODc5LDYgKzc4ODIs
NyBAQAogCQkJCTdDM0Y4QzkxMTczQUY1MkQwMDdCN0YzOSAvKiBQbHVnaW5JbmZvcm1hdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFRkNDMTIxMUQwMUY5NjAwODIxOUQzIC8qIFBsdWdpbklu
Zm9TdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRDYxMDIxM0E3Q0MyQTAwRjk1RDRFIC8q
IFBsdWdpbk1vZHVsZUluZm8uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzMjM2MTFFMUIwMTVEQTgw
MEZBOTIzMiAvKiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMDQzOTc2MTI0RDAzNDgwMEZGQkZCNSAvKiBQbHVnaW5Qcm9jZXNzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUM1RkZDMjE3NEJGRDFCMDAwMTQ4M0QgLyogUGx1Z2luUHJvY2Vzc0F0dHJpYnV0
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMEVDOTA2MTI0QzBBQjgwMDdFRjRBNSAvKiBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCShyZXZpc2lvbiAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4
MCw2ICs5ODAsMTEgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlY29tbWVuZGVkU2Nyb2xsYgog
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWNvbW1lbmRlZFNjcm9s
bGJhclN0eWxlRGlkQ2hhbmdlKHN0YXRpY19jYXN0PGludDMyX3Q+KG5ld1N0eWxlKSkpOwogfQog
CitXVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4gV2ViQ2hyb21lQ2xpZW50Ojpw
cmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKQoreworICAgIHJldHVybiBtX3BhZ2UtPnNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpOyAKK30KKwogQ29sb3IgV2ViQ2hyb21lQ2xpZW50Ojp1bmRl
cmxheUNvbG9yKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlLT51bmRlcmxheUNvbG9yKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3Niw2ICsyNzYsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlTY3JvbGxlclRodW1iSXNWaXNpYmxlSW5SZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21tZW5kZWRTY3JvbGxiYXJTdHlsZURp
ZENoYW5nZShXZWJDb3JlOjpTY3JvbGxiYXJTdHlsZSBuZXdTdHlsZSkgb3ZlcnJpZGU7CiAKKyAg
ICB2aXJ0dWFsIFdURjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBw
cmVmZXJyZWRTY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6Q29sb3IgdW5kZXJsYXlDb2xvcigpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIHBhZ2VFeHRlbmRlZEJhY2tncm91bmRDb2xvckRpZENoYW5nZShXZWJDb3JlOjpD
b2xvcikgY29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxODQyMTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1MSw2
ICs0NTEsMTEgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAg
IHNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQocGFyYW1ldGVycy5hdXRvU2l6
aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KTsKICAgICAKICAgICBzZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IocGFyYW1ldGVycy5zY3JvbGxQaW5uaW5nQmVoYXZpb3IpOworICAgIGlmIChwYXJh
bWV0ZXJzLnNjcm9sbGJhck92ZXJsYXlTdHlsZSkKKyAgICAgICAgbV9zY3JvbGxiYXJPdmVybGF5
U3R5bGUgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHBhcmFtZXRlcnMuc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlLnZhbHVlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9zY3JvbGxi
YXJPdmVybGF5U3R5bGUgPSBXVEY6Ok9wdGlvbmFsPFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oKTsK
KwogICAgIHNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShwYXJhbWV0ZXJzLmJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZSk7CiAKICAgICBzZXRUb3BDb250ZW50SW5zZXQocGFyYW1ldGVy
cy50b3BDb250ZW50SW5zZXQpOwpAQCAtNDg0NCw2ICs0ODQ5LDE1IEBAIHZvaWQgV2ViUGFnZTo6
c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHUKICAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLnZpZXco
KS0+c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoV1RGOjpPcHRpb25hbDx1
aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCit7CisgICAgaWYgKHNjcm9sbGJhclN0eWxlKQorICAg
ICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck92ZXJs
YXlTdHlsZT4oc2Nyb2xsYmFyU3R5bGUudmFsdWUoKSk7CisgICAgZWxzZQorICAgICAgICBtX3Nj
cm9sbGJhck92ZXJsYXlTdHlsZSA9IFdURjo6T3B0aW9uYWw8U2Nyb2xsYmFyT3ZlcmxheVN0eWxl
PigpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCkudmlldygpLT5yZWNhbGN1bGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZSgpOworfQorCiBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBXZWJQYWdl
OjpjcmVhdGVEb2N1bWVudExvYWRlcihGcmFtZSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAg
IFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gZG9jdW1lbnRMb2FkZXIgPSBXZWJEb2N1bWVudExv
YWRlcjo6Y3JlYXRlKHJlcXVlc3QsIHN1YnN0aXR1dGVEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTg0MjE4KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtODYwLDYgKzg2MCw5IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpTY3JvbGxQaW5uaW5n
QmVoYXZpb3Igc2Nyb2xsUGlubmluZ0JlaGF2aW9yKCkgeyByZXR1cm4gbV9zY3JvbGxQaW5uaW5n
QmVoYXZpb3I7IH0KICAgICB2b2lkIHNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCAv
KiBXZWJDb3JlOjpTY3JvbGxQaW5uaW5nQmVoYXZpb3IgKi8gcGlubmluZyk7CiAKKyAgICBXVEY6
Ok9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCkgeyByZXR1cm4gbV9zY3JvbGxiYXJPdmVybGF5U3R5bGU7IH0KKyAgICB2b2lkIHNl
dFNjcm9sbGJhck92ZXJsYXlTdHlsZShXVEY6Ok9wdGlvbmFsPHVpbnQzMl90IC8qIFdlYkNvcmU6
OlNjcm9sbGJhck92ZXJsYXlTdHlsZSAqLz4gc2Nyb2xsYmFyU3R5bGUpOworCiAgICAgUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoV2ViQ29y
ZTo6RnJhbWUmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpTdWJzdGl0dXRlRGF0YSYpOwogCiAgICAgdm9pZCBnZXRCeXRlY29kZVByb2ZpbGUodWludDY0
X3QgY2FsbGJhY2tJRCk7CkBAIC0xMzQ4LDYgKzEzNTEsNyBAQCBwcml2YXRlOgogICAgIHVuc2ln
bmVkIG1fbWF4aW11bVJlbmRlcmluZ1N1cHByZXNzaW9uVG9rZW47CiAgICAgCiAgICAgV2ViQ29y
ZTo6U2Nyb2xsUGlubmluZ0JlaGF2aW9yIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yOworICAgIFdU
Rjo6T3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPiBtX3Njcm9sbGJhck92
ZXJsYXlTdHlsZTsKIAogICAgIGJvb2wgbV91c2VBc3luY1Njcm9sbGluZzsKIApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDE4NDIxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNiArNDA3LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogICAgIFNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcih1aW50MzJfdCBwaW5uaW5nKQorICAgIFNldFNjcm9sbGJh
ck92ZXJsYXlTdHlsZShPcHRpb25hbDx1aW50MzJfdD4gc2Nyb2xsYmFyU3R5bGUpCiAKICAgICBH
ZXRCeXRlY29kZVByb2ZpbGUodWludDY0X3QgY2FsbGJhY2tJRCkKICAgICAK
</data>
<flag name="review"
          id="277850"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>