<?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>121146</bug_id>
          
          <creation_ts>2013-09-11 01:11:33 -0700</creation_ts>
          <short_desc>Rename BackForwardListImpl =&gt; BackForwardList.</short_desc>
          <delta_ts>2013-09-11 01:37:18 -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>History</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="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>927678</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-11 01:11:33 -0700</bug_when>
    <thetext>Another old FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927681</commentid>
    <comment_count>1</comment_count>
      <attachid>211287</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-11 01:15:02 -0700</bug_when>
    <thetext>Created attachment 211287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927682</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-11 01:16:56 -0700</bug_when>
    <thetext>Attachment 211287 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/history/BackForwardController.cpp&apos;, u&apos;Source/WebCore/history/BackForwardListImpl.cpp&apos;, u&apos;Source/WebCore/history/BackForwardListImpl.h&apos;, u&apos;Source/WebKit/efl/ewk/ewk_history.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_history_private.h&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/History/WebBackForwardList.mm&apos;, u&apos;Source/WebKit/mac/History/WebBackForwardListInternal.h&apos;, u&apos;Source/WebKit/mac/WebView/WebFrameView.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebView.mm&apos;, u&apos;Source/WebKit/qt/Api/qwebhistory.cpp&apos;, u&apos;Source/WebKit/qt/Api/qwebhistory_p.h&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp&apos;, u&apos;Source/WebKit/win/WebBackForwardList.cpp&apos;, u&apos;Source/WebKit/win/WebBackForwardList.h&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;]&quot; exit_code: 1
Source/WebKit/win/WebBackForwardList.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/history/BackForwardListImpl.h:28:  #ifndef header guard has wrong style, please use: BackForwardListImpl_h  [build/header_guard] [5]
Source/WebKit/qt/Api/qwebhistory.cpp:260:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebKit/mac/History/WebBackForwardListInternal.h:33:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 4 in 21 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>927686</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-11 01:37:18 -0700</bug_when>
    <thetext>Committed r155510: &lt;http://trac.webkit.org/changeset/155510&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211287</attachid>
            <date>2013-09-11 01:15:02 -0700</date>
            <delta_ts>2013-09-11 01:15:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121146.diff</filename>
            <type>text/plain</type>
            <size>40920</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiNGY4ODk4Li5jMmY4YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTMtMDktMTEgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFJlbmFtZSBCYWNrRm9yd2FyZExpc3RJbXBsID0+IEJhY2tGb3J3YXJkTGlzdC4KKyAgICAg
ICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzEyMTE0Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOdWtlIGFub3RoZXIgb2xkIEZJWE1FLgorCiAyMDEz
LTA5LTExICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAg
QVg6IE1hYyBwbGF0Zm9ybSBpcyBub3QgdXNpbmcgYWNjZXNzaWJpbGl0eVRpdGxlIGZyb20gdGhl
IEJhc2UgaW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYWM0NGZiYS4uNTZh
OTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTYyMiwyMiArNjIyLDIyIEBAIF9fWk43V2Vi
Q29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEyUmVu
ZGVyT2JqZWN0RVJLTjNXCiBfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMXBhdXNl
VHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOM1dURjZTdHJpbmdFZAogX19a
TjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hp
bGVTdXNwZW5kZWRFYgogX19aTks3V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjMzYWxsb3dz
TmV3QW5pbWF0aW9uc1doaWxlU3VzcGVuZGVkRXYKLV9fWk43V2ViQ29yZTE5QmFja0ZvcndhcmRM
aXN0SW1wbDEwcmVtb3ZlSXRlbUVQTlNfMTFIaXN0b3J5SXRlbUUKLV9fWk43V2ViQ29yZTE5QmFj
a0ZvcndhcmRMaXN0SW1wbDEwc2V0RW5hYmxlZEViCi1fX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJk
TGlzdEltcGwxMWN1cnJlbnRJdGVtRXYKLV9fWk43V2ViQ29yZTE5QmFja0ZvcndhcmRMaXN0SW1w
bDExZm9yd2FyZEl0ZW1FdgotX19aTjdXZWJDb3JlMTlCYWNrRm9yd2FyZExpc3RJbXBsMTFzZXRD
YXBhY2l0eUVpCi1fX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJkTGlzdEltcGwxMmNvbnRhaW5zSXRl
bUVQTlNfMTFIaXN0b3J5SXRlbUUKLV9fWk43V2ViQ29yZTE5QmFja0ZvcndhcmRMaXN0SW1wbDE3
YmFja0xpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5
SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9fWk43V2ViQ29yZTE5QmFja0Zv
cndhcmRMaXN0SW1wbDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dURjZWZWN0b3JJTlMxXzZS
ZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9uT3ZlcmZsb3dFRUUKLV9f
Wk43V2ViQ29yZTE5QmFja0ZvcndhcmRMaXN0SW1wbDZjbG9zZWRFdgotX19aTjdXZWJDb3JlMTlC
YWNrRm9yd2FyZExpc3RJbXBsNmdvQmFja0V2Ci1fX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJkTGlz
dEltcGw3ZW5hYmxlZEV2Ci1fX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJkTGlzdEltcGw3ZW50cmll
c0V2Ci1fX1pON1dlYkNvcmUxOUJhY2tGb3J3YXJkTGlzdEltcGw4YmFja0l0ZW1FdgotX19aTjdX
ZWJDb3JlMTlCYWNrRm9yd2FyZExpc3RJbXBsOGNhcGFjaXR5RXYKLV9fWk43V2ViQ29yZTE5QmFj
a0ZvcndhcmRMaXN0SW1wbDlnb0ZvcndhcmRFdgotX19aTjdXZWJDb3JlMTlCYWNrRm9yd2FyZExp
c3RJbXBsQzFFUE5TXzRQYWdlRQorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMHJlbW92
ZUl0ZW1FUE5TXzExSGlzdG9yeUl0ZW1FCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDEw
c2V0RW5hYmxlZEViCitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDExY3VycmVudEl0ZW1F
dgorX19aTjdXZWJDb3JlMTVCYWNrRm9yd2FyZExpc3QxMWZvcndhcmRJdGVtRXYKK19fWk43V2Vi
Q29yZTE1QmFja0ZvcndhcmRMaXN0MTFzZXRDYXBhY2l0eUVpCitfX1pON1dlYkNvcmUxNUJhY2tG
b3J3YXJkTGlzdDEyY29udGFpbnNJdGVtRVBOU18xMUhpc3RvcnlJdGVtRQorX19aTjdXZWJDb3Jl
MTVCYWNrRm9yd2FyZExpc3QxN2JhY2tMaXN0V2l0aExpbWl0RWlSTjNXVEY2VmVjdG9ySU5TMV82
UmVmUHRySU5TXzExSGlzdG9yeUl0ZW1FRUVMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCitf
X1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDIwZm9yd2FyZExpc3RXaXRoTGltaXRFaVJOM1dU
RjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTFIaXN0b3J5SXRlbUVFRUxtMEVOUzFfMTVDcmFzaE9u
T3ZlcmZsb3dFRUUKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0NmNsb3NlZEV2CitfX1pO
N1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDZnb0JhY2tFdgorX19aTjdXZWJDb3JlMTVCYWNrRm9y
d2FyZExpc3Q3ZW5hYmxlZEV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdDdlbnRyaWVz
RXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRMaXN0OGJhY2tJdGVtRXYKK19fWk43V2ViQ29y
ZTE1QmFja0ZvcndhcmRMaXN0OGNhcGFjaXR5RXYKK19fWk43V2ViQ29yZTE1QmFja0ZvcndhcmRM
aXN0OWdvRm9yd2FyZEV2CitfX1pON1dlYkNvcmUxNUJhY2tGb3J3YXJkTGlzdEMxRVBOU180UGFn
ZUUKIF9fWk43V2ViQ29yZTE5SFRNTFRleHRBcmVhRWxlbWVudDhzZXRWYWx1ZUVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE5TGF5ZXJGbHVzaFNjaGVkdWxlcjEwaW52YWxpZGF0ZUV2CiBf
X1pON1dlYkNvcmUxOUxheWVyRmx1c2hTY2hlZHVsZXI2cmVzdW1lRXYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAppbmRleCAzZjY4YzQwLi5h
ZWVhZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRy
b2xsZXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIEJhY2tGb3J3YXJkQ29udHJvbGxlcjo6QmFja0Zv
cndhcmRDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIFBhc3NSZWZQdHI8QmFja0ZvcndhcmRDCiAgICAg
LCBtX2NsaWVudChjbGllbnQpCiB7CiAgICAgaWYgKCFtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQgPSBCYWNrRm9yd2FyZExpc3RJbXBsOjpjcmVhdGUocGFnZSk7CisgICAgICAgIG1fY2xpZW50
ID0gQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUocGFnZSk7CiB9CiAKIEJhY2tGb3J3YXJkQ29udHJv
bGxlcjo6fkJhY2tGb3J3YXJkQ29udHJvbGxlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvaGlzdG9y
eS9CYWNrRm9yd2FyZExpc3RJbXBsLmNwcAppbmRleCAwNWIyYTBlLi44NGZjMjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0SW1wbC5jcHAKQEAgLTQzLDcg
KzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IHVuc2lnbmVkIERlZmF1
bHRDYXBhY2l0eSA9IDEwMDsKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBOb0N1cnJlbnRJdGVtSW5k
ZXggPSBVSU5UX01BWDsKIAotQmFja0ZvcndhcmRMaXN0SW1wbDo6QmFja0ZvcndhcmRMaXN0SW1w
bChQYWdlKiBwYWdlKQorQmFja0ZvcndhcmRMaXN0OjpCYWNrRm9yd2FyZExpc3QoUGFnZSogcGFn
ZSkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jdXJyZW50KE5vQ3VycmVudEl0ZW1JbmRl
eCkKICAgICAsIG1fY2FwYWNpdHkoRGVmYXVsdENhcGFjaXR5KQpAQCAtNTIsMTIgKzUyLDEyIEBA
IEJhY2tGb3J3YXJkTGlzdEltcGw6OkJhY2tGb3J3YXJkTGlzdEltcGwoUGFnZSogcGFnZSkKIHsK
IH0KIAotQmFja0ZvcndhcmRMaXN0SW1wbDo6fkJhY2tGb3J3YXJkTGlzdEltcGwoKQorQmFja0Zv
cndhcmRMaXN0Ojp+QmFja0ZvcndhcmRMaXN0KCkKIHsKICAgICBBU1NFUlQobV9jbG9zZWQpOwog
fQogCi12b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OmFkZEl0ZW0oUGFzc1JlZlB0cjxIaXN0b3J5
SXRlbT4gcHJwSXRlbSkKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjphZGRJdGVtKFBhc3NSZWZQdHI8
SGlzdG9yeUl0ZW0+IHBycEl0ZW0pCiB7CiAgICAgQVNTRVJUKHBycEl0ZW0pOwogICAgIGlmICht
X2NhcGFjaXR5ID09IDAgfHwgIW1fZW5hYmxlZCkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBCYWNr
Rm9yd2FyZExpc3RJbXBsOjphZGRJdGVtKFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IHBycEl0ZW0p
CiAgICAgbV9jdXJyZW50Kys7CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6Z29CYWNr
KCkKK3ZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2soKQogewogICAgIEFTU0VSVChtX2N1cnJl
bnQgPiAwKTsKICAgICBpZiAobV9jdXJyZW50ID4gMCkgewpAQCAtOTcsNyArOTcsNyBAQCB2b2lk
IEJhY2tGb3J3YXJkTGlzdEltcGw6OmdvQmFjaygpCiAgICAgfQogfQogCi12b2lkIEJhY2tGb3J3
YXJkTGlzdEltcGw6OmdvRm9yd2FyZCgpCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Gb3J3YXJk
KCkKIHsKICAgICBBU1NFUlQobV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpOwogICAg
IGlmIChtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkgewpAQCAtMTA1LDcgKzEwNSw3
IEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6Z29Gb3J3YXJkKCkKICAgICB9CiB9CiAKLXZv
aWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgaWYg
KCFtX2VudHJpZXMuc2l6ZSgpIHx8ICFpdGVtKQogICAgICAgICByZXR1cm47CkBAIC0xMTksMjgg
KzExOSwyOCBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OmdvVG9JdGVtKEhpc3RvcnlJdGVt
KiBpdGVtKQogICAgIH0KIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdEltcGw6OmJh
Y2tJdGVtKCkKK0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKCkKIHsKICAg
ICBpZiAobV9jdXJyZW50ICYmIG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCiAgICAg
ICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50IC0gMV0uZ2V0KCk7CiAgICAgcmV0dXJuIDA7
CiB9CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3RJbXBsOjpjdXJyZW50SXRlbSgpCitI
aXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRlbSgpCiB7CiAgICAgaWYgKG1f
Y3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBtX2VudHJpZXNb
bV9jdXJyZW50XS5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdEltcGw6OmZvcndhcmRJdGVtKCkKK0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExp
c3Q6OmZvcndhcmRJdGVtKCkKIHsKICAgICBpZiAobV9lbnRyaWVzLnNpemUoKSAmJiBtX2N1cnJl
bnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKICAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1
cnJlbnQgKyAxXS5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBCYWNrRm9yd2FyZExp
c3RJbXBsOjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9yJiBs
aXN0KQordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0V2l0aExpbWl0KGludCBsaW1pdCwg
SGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiB7CiAgICAgbGlzdC5jbGVhcigpOwogICAgIGlmICht
X2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CkBAIC0xNTAsNyArMTUwLDcgQEAgdm9p
ZCBCYWNrRm9yd2FyZExpc3RJbXBsOjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3Rv
cnlJdGVtVmVjdG9yJiBsaXN0KQogICAgIH0KIH0KIAotdm9pZCBCYWNrRm9yd2FyZExpc3RJbXBs
Ojpmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIEhpc3RvcnlJdGVtVmVjdG9yJiBsaXN0
KQordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0V2l0aExpbWl0KGludCBsaW1pdCwg
SGlzdG9yeUl0ZW1WZWN0b3ImIGxpc3QpCiB7CiAgICAgQVNTRVJUKGxpbWl0ID4gLTEpOwogICAg
IGxpc3QuY2xlYXIoKTsKQEAgLTE2NiwxMiArMTY2LDEyIEBAIHZvaWQgQmFja0ZvcndhcmRMaXN0
SW1wbDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBIaXN0b3J5SXRlbVZlY3RvciYg
bGlzCiAgICAgfQogfQogCi1pbnQgQmFja0ZvcndhcmRMaXN0SW1wbDo6Y2FwYWNpdHkoKQoraW50
IEJhY2tGb3J3YXJkTGlzdDo6Y2FwYWNpdHkoKQogewogICAgIHJldHVybiBtX2NhcGFjaXR5Owog
fQogCi12b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OnNldENhcGFjaXR5KGludCBzaXplKQordm9p
ZCBCYWNrRm9yd2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaXplKQogeyAgICAKICAgICB3aGls
ZSAoc2l6ZSA8IChpbnQpbV9lbnRyaWVzLnNpemUoKSkgewogICAgICAgICBSZWZQdHI8SGlzdG9y
eUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMubGFzdCgpOwpAQCAtMTg4LDEyICsxODgsMTIgQEAgdm9p
ZCBCYWNrRm9yd2FyZExpc3RJbXBsOjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKICAgICBtX2NhcGFj
aXR5ID0gc2l6ZTsKIH0KIAotYm9vbCBCYWNrRm9yd2FyZExpc3RJbXBsOjplbmFibGVkKCkKK2Jv
b2wgQmFja0ZvcndhcmRMaXN0OjplbmFibGVkKCkKIHsKICAgICByZXR1cm4gbV9lbmFibGVkOwog
fQogCi12b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQor
dm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1f
ZW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgaWYgKCFlbmFibGVkKSB7CkBAIC0yMDMsMTcgKzIwMywx
NyBAQCB2b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQog
ICAgIH0KIH0KIAotaW50IEJhY2tGb3J3YXJkTGlzdEltcGw6OmJhY2tMaXN0Q291bnQoKQoraW50
IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpCiB7CiAgICAgcmV0dXJuIG1fY3VycmVu
dCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggPyAwIDogbV9jdXJyZW50OwogfQogCi1pbnQgQmFja0Zv
cndhcmRMaXN0SW1wbDo6Zm9yd2FyZExpc3RDb3VudCgpCitpbnQgQmFja0ZvcndhcmRMaXN0Ojpm
b3J3YXJkTGlzdENvdW50KCkKIHsKICAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0
ZW1JbmRleCA/IDAgOiAoaW50KW1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7CiB9
CiAKLUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3RJbXBsOjppdGVtQXRJbmRleChpbnQgaW5k
ZXgpCitIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleChpbnQgaW5kZXgp
CiB7CiAgICAgLy8gRG8gcmFuZ2UgY2hlY2tzIHdpdGhvdXQgZG9pbmcgbWF0aCBvbiBpbmRleCB0
byBhdm9pZCBvdmVyZmxvdy4KICAgICBpZiAoaW5kZXggPCAtKGludCltX2N1cnJlbnQpCkBAIC0y
MjUsMTIgKzIyNSwxMiBAQCBIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0SW1wbDo6aXRlbUF0
SW5kZXgoaW50IGluZGV4KQogICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRd
LmdldCgpOwogfQogCi1IaXN0b3J5SXRlbVZlY3RvciYgQmFja0ZvcndhcmRMaXN0SW1wbDo6ZW50
cmllcygpCitIaXN0b3J5SXRlbVZlY3RvciYgQmFja0ZvcndhcmRMaXN0OjplbnRyaWVzKCkKIHsK
ICAgICByZXR1cm4gbV9lbnRyaWVzOwogfQogCi12b2lkIEJhY2tGb3J3YXJkTGlzdEltcGw6OmNs
b3NlKCkKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpjbG9zZSgpCiB7CiAgICAgaW50IHNpemUgPSBt
X2VudHJpZXMuc2l6ZSgpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpAQCAt
MjQxLDEyICsyNDEsMTIgQEAgdm9pZCBCYWNrRm9yd2FyZExpc3RJbXBsOjpjbG9zZSgpCiAgICAg
bV9jbG9zZWQgPSB0cnVlOwogfQogCi1ib29sIEJhY2tGb3J3YXJkTGlzdEltcGw6OmNsb3NlZCgp
Citib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2VkKCkKIHsKICAgICByZXR1cm4gbV9jbG9zZWQ7
CiB9CiAKLXZvaWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSog
aXRlbSkKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpyZW1vdmVJdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KQogewogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjY4LDcgKzI2OCw3IEBA
IHZvaWQgQmFja0ZvcndhcmRMaXN0SW1wbDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkK
ICAgICAgICAgfQogfQogCi1ib29sIEJhY2tGb3J3YXJkTGlzdEltcGw6OmNvbnRhaW5zSXRlbShI
aXN0b3J5SXRlbSogZW50cnkpCitib29sIEJhY2tGb3J3YXJkTGlzdDo6Y29udGFpbnNJdGVtKEhp
c3RvcnlJdGVtKiBlbnRyeSkKIHsKICAgICByZXR1cm4gbV9lbnRyeUhhc2guY29udGFpbnMoZW50
cnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExp
c3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdEltcGwuaApp
bmRleCBlYjMwNTg0Li43MmQ4ZWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0JhY2tGb3J3YXJkTGlzdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tG
b3J3YXJkTGlzdEltcGwuaApAQCAtMjUsOCArMjUsOCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8K
IAotI2lmbmRlZiBCYWNrRm9yd2FyZExpc3RJbXBsX2gKLSNkZWZpbmUgQmFja0ZvcndhcmRMaXN0
SW1wbF9oCisjaWZuZGVmIEJhY2tGb3J3YXJkTGlzdF9oCisjZGVmaW5lIEJhY2tGb3J3YXJkTGlz
dF9oCiAKICNpbmNsdWRlICJCYWNrRm9yd2FyZENsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CkBAIC0zOSwxMiArMzksMTAgQEAgY2xhc3MgUGFnZTsKIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxIaXN0b3J5SXRlbT4gPiBIaXN0b3J5SXRlbVZlY3RvcjsKIHR5cGVkZWYgSGFzaFNldDxS
ZWZQdHI8SGlzdG9yeUl0ZW0+ID4gSGlzdG9yeUl0ZW1IYXNoU2V0OwogCi0vLyBGSVhNRTogQWZ0
ZXIgcmVuYW1pbmcgQmFja0ZvcndhcmRMaXN0IHRvIEJhY2tGb3J3YXJkQ2xpZW50LAotLy8gcmVu
YW1lIHRoaXMgdG8gQmFja0ZvcndhcmRMaXN0LgotY2xhc3MgQmFja0ZvcndhcmRMaXN0SW1wbCA6
IHB1YmxpYyBCYWNrRm9yd2FyZENsaWVudCB7CitjbGFzcyBCYWNrRm9yd2FyZExpc3QgOiBwdWJs
aWMgQmFja0ZvcndhcmRDbGllbnQgewogcHVibGljOiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
YWNrRm9yd2FyZExpc3RJbXBsPiBjcmVhdGUoUGFnZSogcGFnZSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEJhY2tGb3J3YXJkTGlzdEltcGwocGFnZSkpOyB9Ci0gICAgdmlydHVhbCB+QmFja0Zvcndh
cmRMaXN0SW1wbCgpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdD4gY3Jl
YXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBCYWNrRm9yd2FyZExpc3QocGFn
ZSkpOyB9CisgICAgdmlydHVhbCB+QmFja0ZvcndhcmRMaXN0KCk7CiAKICAgICBQYWdlKiBwYWdl
KCkgeyByZXR1cm4gbV9wYWdlOyB9CiAgICAgCkBAIC03Niw3ICs3NCw3IEBAIHB1YmxpYzoKICAg
ICBIaXN0b3J5SXRlbVZlY3RvciYgZW50cmllcygpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IEJhY2tGb3J3YXJkTGlzdEltcGwoUGFnZSopOworICAgIGV4cGxpY2l0IEJhY2tGb3J3YXJkTGlz
dChQYWdlKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSB7IHJldHVybiBlbmFibGVk
KCkgJiYgY2FwYWNpdHkoKTsgfQogCkBAIC05MSw0ICs4OSw0IEBAIHByaXZhdGU6CiAgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBCYWNrRm9yd2FyZExpc3RJbXBsX2gK
KyNlbmRpZiAvLyBCYWNrRm9yd2FyZExpc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19oaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9y
eS5jcHAKaW5kZXggOTE3Mjk5Ny4uNTA3ZGUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19oaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hp
c3RvcnkuY3BwCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBzdHJ1Y3QgX0V3a19IaXN0b3J5IHsKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJ
bXBsKiBjb3JlOworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29yZTsKIH07CiAKICNk
ZWZpbmUgRVdLX0hJU1RPUllfQ09SRV9HRVRfT1JfUkVUVVJOKGhpc3RvcnksIGNvcmVfLCAuLi4p
ICAgICAgXApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgX0V3a19IaXN0b3J5IHsKICAgICAgICAg
RVJSKCJoaXN0b3J5LT5jb3JlIGlzIGRpc2FibGVkIS4iKTsgICAgICAgICAgICAgICAgICAgICAg
XAogICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBs
KiBjb3JlXyA9IChoaXN0b3J5KS0+Y29yZQorICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCog
Y29yZV8gPSAoaGlzdG9yeSktPmNvcmUKIAogCiBzdHJ1Y3QgX0V3a19IaXN0b3J5X0l0ZW0gewpA
QCAtMzgzLDExICszODMsMTEgQEAgRWluYV9Cb29sIGV3a19oaXN0b3J5X2l0ZW1fdmlzaXRfbGFz
dF9mYWlsZWQoY29uc3QgRXdrX0hpc3RvcnlfSXRlbSogaXRlbSkKICAqIENyZWF0ZXMgaGlzdG9y
eSBmb3IgZ2l2ZW4gdmlldy4gQ2FsbGVkIGludGVybmFsbHkgYnkgZXdrX3ZpZXcgYW5kCiAgKiBz
aG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZyb20gb3V0c2lkZS4KICAqCi0gKiBAcGFyYW0gY29yZSBX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsIGluc3RhbmNlIHRvIHVzZSBpbnRlcm5hbGx5Lgor
ICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0IGluc3RhbmNlIHRvIHVzZSBp
bnRlcm5hbGx5LgogICoKICAqIEByZXR1cm4gbmV3bHkgYWxsb2NhdGVkIGhpc3RvcnkgaW5zdGFu
Y2Ugb3IgQGMgTlVMTCBvbiBlcnJvcnMuCiAgKi8KLUV3a19IaXN0b3J5KiBld2tfaGlzdG9yeV9u
ZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogY29yZSkKK0V3a19IaXN0b3J5KiBld2tf
aGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKQogewogICAgIEV3a19I
aXN0b3J5KiBoaXN0b3J5OwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChjb3Jl
LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeV9wcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnlfcHJpdmF0ZS5oCmluZGV4
IDQ0NTQ3YmUuLjk5N2EyOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
aGlzdG9yeV9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5
X3ByaXZhdGUuaApAQCAtMjUsMTEgKzI1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIEhpc3RvcnlJdGVtOwotY2xhc3MgQmFja0ZvcndhcmRMaXN0SW1wbDsKK2NsYXNzIEJhY2tG
b3J3YXJkTGlzdDsKIH0KIAogRXdrX0hpc3RvcnlfSXRlbSAqZXdrX2hpc3RvcnlfaXRlbV9uZXdf
ZnJvbV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVtICpjb3JlKTsKLUV3a19IaXN0b3J5KiBld2tf
aGlzdG9yeV9uZXcoV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogaGlzdG9yeSk7CitFd2tf
SGlzdG9yeSogZXdrX2hpc3RvcnlfbmV3KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogaGlzdG9y
eSk7CiB2b2lkIGV3a19oaXN0b3J5X2ZyZWUoRXdrX0hpc3RvcnkqIGhpc3RvcnkpOwogCiBuYW1l
c3BhY2UgRVdLUHJpdmF0ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA1NDBm
NzVjLi45MjgwZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTgzOCw3ICs4
MzgsNyBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXco
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQogCiAgICAgcHJpdi0+bWFpbkZyYW1lID0g
JnByaXYtPnBhZ2UtPm1haW5GcmFtZSgpOwogCi0gICAgcHJpdi0+aGlzdG9yeSA9IGV3a19oaXN0
b3J5X25ldyhzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+
cGFnZS0+YmFja0ZvcndhcmRDbGllbnQoKSkpOworICAgIHByaXYtPmhpc3RvcnkgPSBld2tfaGlz
dG9yeV9uZXcoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Kj4ocHJpdi0+cGFn
ZS0+YmFja0ZvcndhcmRDbGllbnQoKSkpOwogCiAgICAgcHJpdi0+c3RvcmFnZVNlc3Npb24gPSAm
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
IApAQCAtMTY5NywxNCArMTY5NywxNCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfaGlzdG9yeV9lbmFi
bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX1NEX0dF
VF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfUFJJ
Vl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0Zv
cndhcmRDbGllbnQoKSktPmVuYWJsZWQoKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViQ29y
ZTo6QmFja0ZvcndhcmRMaXN0Kj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRDbGllbnQoKSktPmVu
YWJsZWQoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2hpc3RvcnlfZW5hYmxlX3NldChFdmFz
X09iamVjdCogZXdrVmlldywgRWluYV9Cb29sIGVuYWJsZSkKIHsKICAgICBFV0tfVklFV19TRF9H
RVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX1BS
SVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKLSAgICBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRD
bGllbnQoKSktPnNldEVuYWJsZWQoZW5hYmxlKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJDb3JlOjpC
YWNrRm9yd2FyZExpc3QqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZENsaWVudCgpKS0+c2V0RW5h
YmxlZChlbmFibGUpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xNzEyLDcgKzE3MTIsNyBA
QCBFd2tfSGlzdG9yeSogZXdrX3ZpZXdfaGlzdG9yeV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IDApOwotICAgIGlmICghc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCo+
KHByaXYtPnBhZ2UtPmJhY2tGb3J3YXJkQ2xpZW50KCkpLT5lbmFibGVkKCkpIHsKKyAgICBpZiAo
IXN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KHByaXYtPnBhZ2UtPmJhY2tG
b3J3YXJkQ2xpZW50KCkpLT5lbmFibGVkKCkpIHsKICAgICAgICAgRVJSKCJhc2tlZCBoaXN0b3J5
LCBidXQgaXQncyBkaXNhYmxlZCEgUmV0dXJuaW5nIDAhIik7CiAgICAgICAgIHJldHVybiAwOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNr
Zm9yd2FyZGxpc3QuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tm
b3J3YXJkbGlzdC5jcHAKaW5kZXggNDlkZjY4MC4uYTkxYzEyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAKQEAgLTU2
LDcgKzU2LDcgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIHN0cnVjdCBfV2ViS2l0V2Vi
QmFja0ZvcndhcmRMaXN0UHJpdmF0ZSB7Ci0gICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1w
bCogYmFja0ZvcndhcmRMaXN0OworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogYmFja0Zv
cndhcmRMaXN0OwogICAgIGdib29sZWFuIGRpc3Bvc2VkOwogfTsKIApAQCAtNjUsNyArNjUsNyBA
QCBHX0RFRklORV9UWVBFKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCwgd2Via2l0X3dlYl9iYWNr
X2ZvcndhcmRfbGlzdCwgR19UWVBFX09CSgogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9iYWNrX2Zv
cndhcmRfbGlzdF9kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRXZWJCYWNr
Rm9yd2FyZExpc3QqIGxpc3QgPSBXRUJLSVRfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKG9iamVjdCk7
Ci0gICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0ID0gY29y
ZShsaXN0KTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9
IGNvcmUobGlzdCk7CiAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZSogcHJpdiA9
IGxpc3QtPnByaXY7CiAKICAgICBpZiAoIXByaXYtPmRpc3Bvc2VkKSB7CkBAIC0xMTYsNyArMTE2
LDcgQEAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9s
aXN0X25ld193aXRoX3dlYl92aWV3KFdlYktpdFcKICAgICB3ZWJCYWNrRm9yd2FyZExpc3QgPSBX
RUJLSVRfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJf
QkFDS19GT1JXQVJEX0xJU1QsIE5VTEwpKTsKICAgICBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RQ
cml2YXRlKiBwcml2ID0gd2ViQmFja0ZvcndhcmRMaXN0LT5wcml2OwogCi0gICAgcHJpdi0+YmFj
a0ZvcndhcmRMaXN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCo+
KGNvcmUod2ViVmlldyktPmJhY2tGb3J3YXJkQ2xpZW50KCkpOworICAgIHByaXYtPmJhY2tGb3J3
YXJkTGlzdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KGNvcmUod2Vi
VmlldyktPmJhY2tGb3J3YXJkQ2xpZW50KCkpOwogICAgIHByaXYtPmJhY2tGb3J3YXJkTGlzdC0+
c2V0RW5hYmxlZChUUlVFKTsKIAogICAgIHJldHVybiB3ZWJCYWNrRm9yd2FyZExpc3Q7CkBAIC0x
MzIsNyArMTMyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dvX2Zvcndh
cmQoV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3ZWJCYWNrRm8KIHsKICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0
KSk7CiAKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNrRm9yd2FyZExpc3Qg
PSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0
KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CiAgICAgaWYgKGJh
Y2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpKQogICAgICAgICBiYWNrRm9yd2FyZExpc3QtPmdvRm9y
d2FyZCgpOwogfQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgd2Via2l0X3dlYl9iYWNrX2Zvcndh
cmRfbGlzdF9nb19iYWNrKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFja0ZvcndhCiB7
CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdl
YkJhY2tGb3J3YXJkTGlzdCkpOwogCi0gICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCog
YmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOworICAgIFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExp
c3QpOwogICAgIGlmIChiYWNrRm9yd2FyZExpc3QtPmVuYWJsZWQoKSkKICAgICAgICAgYmFja0Zv
cndhcmRMaXN0LT5nb0JhY2soKTsKIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCBnYm9vbGVhbiB3ZWJr
aXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2NvbnRhaW5zX2l0ZW0oV2ViS2l0V2ViQmFja0Zvcndh
cmRMaXN0KiB3ZQogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVM
TCwgRkFMU0UpOwogCi0gICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0Zvcndh
cmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOworICAgIFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOwogCiAg
ICAgcmV0dXJuIChiYWNrRm9yd2FyZExpc3QtPmVuYWJsZWQoKSA/IGJhY2tGb3J3YXJkTGlzdC0+
Y29udGFpbnNJdGVtKGhpc3RvcnlJdGVtKSA6IEZBTFNFKTsKIH0KQEAgLTE4OCw3ICsxODgsNyBA
QCB2b2lkIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ29fdG9faXRlbShXZWJLaXRXZWJC
YWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGbwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKIAogICAgIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwotICAgIFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0Zvcndh
cmRMaXN0KTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9
IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKIAogICAgIGlmIChiYWNrRm9yd2FyZExpc3QtPmVu
YWJsZWQoKSAmJiBoaXN0b3J5SXRlbSkKICAgICAgICAgYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRl
bShoaXN0b3J5SXRlbSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgR0xpc3QqIHdlYmtpdF93ZWJfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdF93aXRoX2xpbWl0KFdlYktpdFdlYkJhY2tG
b3IKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FS
RF9MSVNUKHdlYkJhY2tGb3J3YXJkTGlzdCksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6QmFja0Zv
cndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3Qp
OworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3
ZWJCYWNrRm9yd2FyZExpc3QpOwogICAgIGlmICghYmFja0ZvcndhcmRMaXN0IHx8ICFiYWNrRm9y
d2FyZExpc3QtPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTIzNyw3ICsy
MzcsNyBAQCBHTGlzdCogd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfYmFja19saXN0
X3dpdGhfbGltaXQoV2ViS2l0V2ViQmFja0ZvcndhcgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0KSwg
TlVMTCk7CiAKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNrRm9yd2FyZExp
c3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRM
aXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CiAgICAgaWYg
KCFiYWNrRm9yd2FyZExpc3QgfHwgIWJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gTlVMTDsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIFdlYktpdFdlYkhpc3RvcnlJdGVt
KiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2l0ZW0oV2ViS2l0V2ViQmFj
a0ZvCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldB
UkRfTElTVCh3ZWJCYWNrRm9yd2FyZExpc3QpLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0
KTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUo
d2ViQmFja0ZvcndhcmRMaXN0KTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdCB8fCAhYmFja0Zv
cndhcmRMaXN0LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yODksNyAr
Mjg5LDcgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xp
c3RfZ2V0X2N1cnJlbnRfaXRlbShXZWJLaXRXZWJCYWMKIHsKICAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdlYkJhY2tGb3J3YXJkTGlzdCks
IE5VTEwpOwogCi0gICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRM
aXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOwogICAgIGlm
ICghYmFja0ZvcndhcmRMaXN0IHx8ICFiYWNrRm9yd2FyZExpc3QtPmVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIE5VTEw7CiAKQEAgLTMxMiw3ICszMTIsNyBAQCBXZWJLaXRXZWJIaXN0b3J5SXRl
bSogd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9pdGVtKFdlYktpdFdl
YkJhYwogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JX
QVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0KSwgTlVMTCk7CiAKLSAgICBXZWJDb3JlOjpCYWNr
Rm9yd2FyZExpc3RJbXBsKiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlz
dCk7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3Jl
KHdlYkJhY2tGb3J3YXJkTGlzdCk7CiAgICAgaWYgKCFiYWNrRm9yd2FyZExpc3QgfHwgIWJhY2tG
b3J3YXJkTGlzdC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzM0LDcg
KzMzNCw3IEBAIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9s
aXN0X2dldF9udGhfaXRlbShXZWJLaXRXZWJCYWNrRm9yCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldBUkRfTElTVCh3ZWJCYWNrRm9yd2FyZExpc3Qp
LCBOVUxMKTsKIAotICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJk
TGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKICAgICBp
ZiAoIWJhY2tGb3J3YXJkTGlzdCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM1NSw3ICsz
NTUsNyBAQCBnaW50IHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGVuZ3Ro
KFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQgogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0KSwg
MCk7CiAKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNrRm9yd2FyZExpc3Qg
PSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CisgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0
KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CiAgICAgaWYgKCFi
YWNrRm9yd2FyZExpc3QgfHwgIWJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIApAQCAtMzc0LDcgKzM3NCw3IEBAIGdpbnQgd2Via2l0X3dlYl9iYWNrX2Zvcndh
cmRfbGlzdF9nZXRfZm9yd2FyZF9sZW5ndGgoV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3CiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldBUkRfTElT
VCh3ZWJCYWNrRm9yd2FyZExpc3QpLCAwKTsKIAotICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlz
dEltcGwqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKKyAgICBX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0Zv
cndhcmRMaXN0KTsKICAgICBpZiAoIWJhY2tGb3J3YXJkTGlzdCB8fCAhYmFja0ZvcndhcmRMaXN0
LT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0zOTMsNyArMzkzLDcgQEAgZ2lu
dCB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9saW1pdChXZWJLaXRXZWJCYWNrRm9y
d2FyZExpc3QqIHdlYkJhY2tGb3IKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdlYkJhY2tGb3J3YXJkTGlzdCksIDApOwogCi0gICAg
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJC
YWNrRm9yd2FyZExpc3QpOworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogYmFja0Zvcndh
cmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOwogICAgIGlmICghYmFja0ZvcndhcmRM
aXN0IHx8ICFiYWNrRm9yd2FyZExpc3QtPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
QEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3Rfc2V0
X2xpbWl0KFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFja0ZvcgogewogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldBUkRfTElTVCh3ZWJCYWNrRm9yd2Fy
ZExpc3QpKTsKIAotICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJk
TGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKICAgICBp
ZiAoYmFja0ZvcndhcmRMaXN0KQogICAgICAgICBiYWNrRm9yd2FyZExpc3QtPnNldENhcGFjaXR5
KGxpbWl0KTsKIH0KQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIHdlYmtpdF93ZWJfYmFja19mb3J3
YXJkX2xpc3RfYWRkX2l0ZW0oV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0ICp3ZWJCYWNrRm9ydwog
CiAgICAgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJdGVtKTsKIAotICAgIFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0
KTsKKyAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUo
d2ViQmFja0ZvcndhcmRMaXN0KTsKICAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0
ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKIAogICAgIGJhY2tGb3J3YXJkTGlzdC0+YWRkSXRl
bShoaXN0b3J5SXRlbSk7CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX2JhY2tf
Zm9yd2FyZF9saXN0X2NsZWFyKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFja0Zvcndh
cmQKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJ
U1Qod2ViQmFja0ZvcndhcmRMaXN0KSk7CiAKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJ
bXBsKiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7CisgICAgV2Vi
Q29yZTo6QmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3
YXJkTGlzdCk7CiAgICAgaWYgKCFiYWNrRm9yd2FyZExpc3QpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDc0LDcgKzQ3NCw3IEBAIHZvaWQgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jbGVh
cihXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlYkJhY2tGb3J3YXJkCiAgICAgYmFja0Zvcndh
cmRMaXN0LT5zZXRDYXBhY2l0eShjYXBhY2l0eSk7CiB9CiAKLVdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdEltcGwqIFdlYktpdDo6Y29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlYkJhY2tG
b3J3YXJkTGlzdCkKK1dlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogV2ViS2l0Ojpjb3JlKFdlYktp
dFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFja0ZvcndhcmRMaXN0KQogewogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0Zvcndh
cmRMaXN0KSwgTlVMTCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3Rwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0cHJpdmF0ZS5oCmluZGV4IDc5NDI0YzAuLmI1MGRm
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3Rwcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YmJhY2tmb3J3YXJkbGlzdHByaXZhdGUuaApAQCAtMjcsNyArMjcsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogY29yZShXZWJLaXRXZWJC
YWNrRm9yd2FyZExpc3QqKTsKK1dlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29yZShXZWJLaXRX
ZWJCYWNrRm9yd2FyZExpc3QqKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5jcHAKaW5kZXggZWE5YmJlMS4uNzlkNTFiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNDA0Nyw3ICs0MDQ3LDcgQEAgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50YWluc19iYWNrX2ZvcndhcmRfbGlzdChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3LCBnYm8KIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJf
VklFVyh3ZWJWaWV3KSk7CiAKLSAgICBzdGF0aWNfY2FzdDxCYWNrRm9yd2FyZExpc3RJbXBsKj4o
Y29yZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRDbGllbnQoKSktPnNldEVuYWJsZWQoZmxhZyk7Cisg
ICAgc3RhdGljX2Nhc3Q8QmFja0ZvcndhcmRMaXN0Kj4oY29yZSh3ZWJWaWV3KS0+YmFja0Zvcndh
cmRDbGllbnQoKSktPnNldEVuYWJsZWQoZmxhZyk7CiB9CiAKIC8qKgpAQCAtNDA2Miw3ICs0MDYy
LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X21haW50YWluc19iYWNrX2ZvcndhcmRfbGlz
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBnYm8KIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCog
d2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdChXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSwgMCk7Ci0gICAgaWYgKCFjb3JlKHdlYlZpZXcpIHx8ICFzdGF0aWNfY2FzdDxCYWNrRm9y
d2FyZExpc3RJbXBsKj4oY29yZSh3ZWJWaWV3KS0+YmFja0ZvcndhcmRDbGllbnQoKSktPmVuYWJs
ZWQoKSkKKyAgICBpZiAoIWNvcmUod2ViVmlldykgfHwgIXN0YXRpY19jYXN0PEJhY2tGb3J3YXJk
TGlzdCo+KGNvcmUod2ViVmlldyktPmJhY2tGb3J3YXJkQ2xpZW50KCkpLT5lbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5iYWNrRm9yd2FyZExp
c3QuZ2V0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0Zvcndh
cmRMaXN0Lm1tCmluZGV4IDY4M2I5YTguLjdlM2U3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCkBAIC01NCw5ICs1NCw5IEBACiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi10eXBlZGVmIEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0
SW1wbCosIFdlYkJhY2tGb3J3YXJkTGlzdCo+IEJhY2tGb3J3YXJkTGlzdE1hcDsKK3R5cGVkZWYg
SGFzaE1hcDxCYWNrRm9yd2FyZExpc3QqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiBCYWNrRm9yd2Fy
ZExpc3RNYXA7CiAKLS8vIEZJWE1FOiBJbnN0ZWFkIG9mIHRoaXMgd2UgY291bGQganVzdCBjcmVh
dGUgYSBjbGFzcyBkZXJpdmVkIGZyb20gQmFja0ZvcndhcmRMaXN0SW1wbAorLy8gRklYTUU6IElu
c3RlYWQgb2YgdGhpcyB3ZSBjb3VsZCBqdXN0IGNyZWF0ZSBhIGNsYXNzIGRlcml2ZWQgZnJvbSBC
YWNrRm9yd2FyZExpc3QKIC8vIHdpdGggYSBwb2ludGVyIHRvIGEgV2ViQmFja0ZvcndhcmRMaXN0
IGluIGl0Lgogc3RhdGljIEJhY2tGb3J3YXJkTGlzdE1hcCYgYmFja0ZvcndhcmRMaXN0cygpCiB7
CkBAIC02NiwxNSArNjYsMTUgQEAgc3RhdGljIEJhY2tGb3J3YXJkTGlzdE1hcCYgYmFja0Zvcndh
cmRMaXN0cygpCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJCYWNrRm9yd2FyZExpc3QgKFdlYkJhY2tG
b3J3YXJkTGlzdEludGVybmFsKQogCi1CYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKFdlYkJhY2tG
b3J3YXJkTGlzdCAqd2ViQmFja0ZvcndhcmRMaXN0KQorQmFja0ZvcndhcmRMaXN0KiBjb3JlKFdl
YkJhY2tGb3J3YXJkTGlzdCAqd2ViQmFja0ZvcndhcmRMaXN0KQogewogICAgIGlmICghd2ViQmFj
a0ZvcndhcmRMaXN0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwqPih3ZWJCYWNrRm9yd2FyZExpc3QtPl9wcml2YXRl
KTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCYWNrRm9yd2FyZExpc3QqPih3ZWJCYWNr
Rm9yd2FyZExpc3QtPl9wcml2YXRlKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0ICpraXQoQmFj
a0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0KQorV2ViQmFja0ZvcndhcmRMaXN0ICpr
aXQoQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QpCiB7CiAgICAgaWYgKCFiYWNrRm9y
d2FyZExpc3QpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC04NSw3ICs4NSw3IEBAIFdlYkJhY2tG
b3J3YXJkTGlzdCAqa2l0KEJhY2tGb3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJkTGlzdCkKICAg
ICByZXR1cm4gW1tbV2ViQmFja0ZvcndhcmRMaXN0IGFsbG9jXSBpbml0V2l0aEJhY2tGb3J3YXJk
TGlzdDpiYWNrRm9yd2FyZExpc3RdIGF1dG9yZWxlYXNlXTsKIH0KIAotLSAoaWQpaW5pdFdpdGhC
YWNrRm9yd2FyZExpc3Q6KFBhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0SW1wbD4pYmFja0Zvcndh
cmRMaXN0CistIChpZClpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDooUGFzc1JlZlB0cjxCYWNrRm9y
d2FyZExpc3Q+KWJhY2tGb3J3YXJkTGlzdAogeyAgIAogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRp
b25DaGVja1JvdW5kT25lKCk7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTExMSw3ICsx
MTEsNyBAQCBXZWJCYWNrRm9yd2FyZExpc3QgKmtpdChCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNr
Rm9yd2FyZExpc3QpCiAKIC0gKGlkKWluaXQKIHsKLSAgICByZXR1cm4gW3NlbGYgaW5pdFdpdGhC
YWNrRm9yd2FyZExpc3Q6QmFja0ZvcndhcmRMaXN0SW1wbDo6Y3JlYXRlKDApXTsKKyAgICByZXR1
cm4gW3NlbGYgaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6QmFja0ZvcndhcmRMaXN0OjpjcmVhdGUo
MCldOwogfQogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTExOSw3ICsxMTksNyBAQCBXZWJCYWNrRm9y
d2FyZExpc3QgKmtpdChCYWNrRm9yd2FyZExpc3RJbXBsKiBiYWNrRm9yd2FyZExpc3QpCiAgICAg
aWYgKFdlYkNvcmVPYmpDU2NoZWR1bGVEZWFsbG9jYXRlT25NYWluVGhyZWFkKFtXZWJCYWNrRm9y
d2FyZExpc3QgY2xhc3NdLCBzZWxmKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQmFja0Zvcndh
cmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0ID0gY29yZShzZWxmKTsKKyAgICBCYWNrRm9yd2Fy
ZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUoc2VsZik7CiAgICAgQVNTRVJUKGJhY2tGb3J3
YXJkTGlzdCk7CiAgICAgaWYgKGJhY2tGb3J3YXJkTGlzdCkgewogICAgICAgICBBU1NFUlQoYmFj
a0ZvcndhcmRMaXN0LT5jbG9zZWQoKSk7CkBAIC0xMzMsNyArMTMzLDcgQEAgV2ViQmFja0Zvcndh
cmRMaXN0ICpraXQoQmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0KQogLSAodm9p
ZClmaW5hbGl6ZQogewogICAgIFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25lKCk7
Ci0gICAgQmFja0ZvcndhcmRMaXN0SW1wbCogYmFja0ZvcndhcmRMaXN0ID0gY29yZShzZWxmKTsK
KyAgICBCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9IGNvcmUoc2VsZik7CiAgICAg
QVNTRVJUKGJhY2tGb3J3YXJkTGlzdCk7CiAgICAgaWYgKGJhY2tGb3J3YXJkTGlzdCkgewogICAg
ICAgICBBU1NFUlQoYmFja0ZvcndhcmRMaXN0LT5jbG9zZWQoKSk7CkBAIC0yNjcsNyArMjY3LDcg
QEAgc3RhdGljIGJvb2wgYnVtcGVyQ2FyQmFja0ZvcndhcmRIYWNrTmVlZGVkKCkKICAgICBbcmVz
dWx0IGFwcGVuZFN0cmluZzpAIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS1cbiJdOyAgICAKICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIldlYkJhY2tGb3J3
YXJkTGlzdDpcbiJdOwogICAgIAotICAgIEJhY2tGb3J3YXJkTGlzdEltcGwqIGJhY2tGb3J3YXJk
TGlzdCA9IGNvcmUoc2VsZik7CisgICAgQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3Qg
PSBjb3JlKHNlbGYpOwogICAgIEhpc3RvcnlJdGVtVmVjdG9yJiBlbnRyaWVzID0gYmFja0Zvcndh
cmRMaXN0LT5lbnRyaWVzKCk7CiAgICAgCiAgICAgdW5zaWduZWQgc2l6ZSA9IGVudHJpZXMuc2l6
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2Fy
ZExpc3RJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2Fy
ZExpc3RJbnRlcm5hbC5oCmluZGV4IDFhZmI4MzMuLjM0NDg2NDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdEludGVybmFsLmgKQEAg
LTMwLDEyICszMCwxMiBAQAogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIEJhY2tGb3J3YXJkTGlzdEltcGw7CisgICAgY2xhc3MgQmFj
a0ZvcndhcmRMaXN0OwogfQogCi1XZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKFdl
YkJhY2tGb3J3YXJkTGlzdCAqKTsKLVdlYkJhY2tGb3J3YXJkTGlzdCAqa2l0KFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdEltcGwqKTsKK1dlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29yZShXZWJC
YWNrRm9yd2FyZExpc3QgKik7CitXZWJCYWNrRm9yd2FyZExpc3QgKmtpdChXZWJDb3JlOjpCYWNr
Rm9yd2FyZExpc3QqKTsKIAogQGludGVyZmFjZSBXZWJCYWNrRm9yd2FyZExpc3QgKFdlYkJhY2tG
b3J3YXJkTGlzdEludGVybmFsKQotLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFBhc3NS
ZWZQdHI8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbD4pYmFja0ZvcndhcmRMaXN0OworLSAo
aWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFBhc3NSZWZQdHI8V2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0PiliYWNrRm9yd2FyZExpc3Q7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVWaWV3Lm1tCmluZGV4IDk5YTBlYmMuLmM1Y2ZkYTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC04MTEsNyArODExLDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTXV0YWJsZURpY3Rpb25hcnkgKmFsbFR5cGVz
LCBDbGFzcyBvYmpDQ2wKICAgICBpbnQgaW5kZXgsIGNvdW50OwogICAgIEJPT0wgY2FsbFN1cGVy
ID0gWUVTOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBbc2VsZiBfd2ViX2ZyYW1lXTsKLSAgICBC
T09MIG1haW50YWluc0JhY2tGb3J3YXJkTGlzdCA9IGNvcmVGcmFtZSAmJiBzdGF0aWNfY2FzdDxC
YWNrRm9yd2FyZExpc3RJbXBsKj4oY29yZUZyYW1lLT5wYWdlKCktPmJhY2tGb3J3YXJkQ2xpZW50
KCkpLT5lbmFibGVkKCkgPyBZRVMgOiBOTzsKKyAgICBCT09MIG1haW50YWluc0JhY2tGb3J3YXJk
TGlzdCA9IGNvcmVGcmFtZSAmJiBzdGF0aWNfY2FzdDxCYWNrRm9yd2FyZExpc3QqPihjb3JlRnJh
bWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRDbGllbnQoKSktPmVuYWJsZWQoKSA/IFlFUyA6IE5POwog
ICAgIAogICAgIGNvdW50ID0gW2NoYXJhY3RlcnMgbGVuZ3RoXTsKICAgICBmb3IgKGluZGV4ID0g
MDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IDU0MzAwNjYuLjQyYTI3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KQEAgLTM1NDEsNyArMzU0MSw3IEBAIHN0YXRpYyBib29sIG5lZWRzV2ViVmlld0luaXRU
aHJlYWRXb3JrYXJvdW5kKCkKIAogICAgICAgICBMT0coRW5jb2RpbmcsICJGcmFtZU5hbWUgPSAl
QCwgR3JvdXBOYW1lID0gJUAsIHVzZUJhY2tGb3J3YXJkTGlzdCA9ICVkXG4iLCBmcmFtZU5hbWUs
IGdyb3VwTmFtZSwgKGludCl1c2VCYWNrRm9yd2FyZExpc3QpOwogICAgICAgICBbcmVzdWx0IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6ZnJhbWVOYW1lIGdyb3VwTmFtZTpncm91
cE5hbWVdOwotICAgICAgICBzdGF0aWNfY2FzdDxCYWNrRm9yd2FyZExpc3RJbXBsKj4oW3Jlc3Vs
dCBwYWdlXS0+YmFja0ZvcndhcmRDbGllbnQoKSktPnNldEVuYWJsZWQodXNlQmFja0ZvcndhcmRM
aXN0KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8QmFja0ZvcndhcmRMaXN0Kj4oW3Jlc3VsdCBwYWdl
XS0+YmFja0ZvcndhcmRDbGllbnQoKSktPnNldEVuYWJsZWQodXNlQmFja0ZvcndhcmRMaXN0KTsK
ICAgICAgICAgcmVzdWx0LT5fcHJpdmF0ZS0+YWxsb3dzVW5kbyA9IGFsbG93c1VuZG87CiAgICAg
ICAgIGlmIChwcmVmZXJlbmNlcykKICAgICAgICAgICAgIFtyZXN1bHQgc2V0UHJlZmVyZW5jZXM6
cHJlZmVyZW5jZXNdOwpAQCAtMzU2NSw3ICszNTY1LDcgQEAgc3RhdGljIGJvb2wgbmVlZHNXZWJW
aWV3SW5pdFRocmVhZFdvcmthcm91bmQoKQogICAgIC8vIFJlc3RvcmUgdGhlIHN1YnZpZXdzIHdl
IHNldCBhc2lkZS4KICAgICBfc3Vidmlld3MgPSBvcmlnaW5hbFN1YnZpZXdzOwogCi0gICAgQk9P
TCB1c2VCYWNrRm9yd2FyZExpc3QgPSBfcHJpdmF0ZS0+cGFnZSAmJiBzdGF0aWNfY2FzdDxCYWNr
Rm9yd2FyZExpc3RJbXBsKj4oX3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkQ2xpZW50KCkpLT5l
bmFibGVkKCk7CisgICAgQk9PTCB1c2VCYWNrRm9yd2FyZExpc3QgPSBfcHJpdmF0ZS0+cGFnZSAm
JiBzdGF0aWNfY2FzdDxCYWNrRm9yd2FyZExpc3QqPihfcHJpdmF0ZS0+cGFnZS0+YmFja0Zvcndh
cmRDbGllbnQoKSktPmVuYWJsZWQoKTsKICAgICBpZiAoW2VuY29kZXIgYWxsb3dzS2V5ZWRDb2Rp
bmddKSB7CiAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpbW3NlbGYgbWFpbkZyYW1lXSBu
YW1lXSBmb3JLZXk6QCJGcmFtZU5hbWUiXTsKICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OltzZWxmIGdyb3VwTmFtZV0gZm9yS2V5OkAiR3JvdXBOYW1lIl07CkBAIC0zOTM3LDcgKzM5Mzcs
NyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBiYWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3Rv
cktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAogewogICAgIGlmICghX3ByaXZhdGUtPnBhZ2Up
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgQmFja0ZvcndhcmRMaXN0SW1wbCogbGlzdCA9IHN0
YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlzdEltcGwqPihfcHJpdmF0ZS0+cGFnZS0+YmFja0Zvcndh
cmRDbGllbnQoKSk7CisgICAgQmFja0ZvcndhcmRMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8QmFj
a0ZvcndhcmRMaXN0Kj4oX3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkQ2xpZW50KCkpOwogICAg
IGlmICghbGlzdC0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBr
aXQobGlzdCk7CkBAIC0zOTQ3LDcgKzM5NDcsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBi
YWNraW5nUHJvcGVydHlPbGRTY2FsZUZhY3RvcktleSA9IEAiTlNCYWNraW5nUHJvcGVydHlPbAog
ewogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBzdGF0aWNf
Y2FzdDxCYWNrRm9yd2FyZExpc3RJbXBsKj4oX3ByaXZhdGUtPnBhZ2UtPmJhY2tGb3J3YXJkQ2xp
ZW50KCkpLT5zZXRFbmFibGVkKGZsYWcpOworICAgIHN0YXRpY19jYXN0PEJhY2tGb3J3YXJkTGlz
dCo+KF9wcml2YXRlLT5wYWdlLT5iYWNrRm9yd2FyZENsaWVudCgpKS0+c2V0RW5hYmxlZChmbGFn
KTsKIH0KIAogLSAoQk9PTClnb0JhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJoaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5LmNwcApp
bmRleCBiZTA5MDVlLi4xNDU2NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2ViaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3RvcnkuY3Bw
CkBAIC0yNTcsMTEgKzI1NywxMSBAQCBRV2ViSGlzdG9yeTo6flFXZWJIaXN0b3J5KCkKICovCiB2
b2lkIFFXZWJIaXN0b3J5OjpjbGVhcigpCiB7Ci0gICAgLy9zaG9ydGN1dCB0byBwcml2YXRlIEJh
Y2tGb3J3YXJkTGlzdEltcGwKLSAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBsc3Qg
PSBkLT5sc3Q7CisgICAgLy9zaG9ydGN1dCB0byBwcml2YXRlIEJhY2tGb3J3YXJkTGlzdAorICAg
IFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogbHN0ID0gZC0+bHN0OwogCiAgICAgLy9jbGVhciB2
aXNpdGVkIGxpbmtzCi0gICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqPihsc3QpLT5wYWdlKCk7CisgICAgV2ViQ29yZTo6UGFn
ZSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KGxzdCktPnBh
Z2UoKTsKICAgICBpZiAocGFnZSAmJiBwYWdlLT5ncm91cFB0cigpKQogICAgICAgICBwYWdlLT5n
cm91cFB0cigpLT5yZW1vdmVWaXNpdGVkTGlua3MoKTsKIApAQCAtMzY1LDcgKzM2NSw3IEBAIGJv
b2wgUVdlYkhpc3Rvcnk6OmNhbkdvRm9yd2FyZCgpIGNvbnN0CiB2b2lkIFFXZWJIaXN0b3J5Ojpi
YWNrKCkKIHsKICAgICBpZiAoY2FuR29CYWNrKCkpIHsKLSAgICAgICAgV2ViQ29yZTo6UGFnZSog
cGFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwqPihkLT5sc3Qp
LT5wYWdlKCk7CisgICAgICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJD
b3JlOjpCYWNrRm9yd2FyZExpc3QqPihkLT5sc3QpLT5wYWdlKCk7CiAgICAgICAgIHBhZ2UtPmdv
VG9JdGVtKGQtPmxzdC0+YmFja0l0ZW0oKSwgV2ViQ29yZTo6RnJhbWVMb2FkVHlwZUluZGV4ZWRC
YWNrRm9yd2FyZCk7CiAgICAgfQogfQpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgUVdlYkhpc3Rv
cnk6OmJhY2soKQogdm9pZCBRV2ViSGlzdG9yeTo6Zm9yd2FyZCgpCiB7CiAgICAgaWYgKGNhbkdv
Rm9yd2FyZCgpKSB7Ci0gICAgICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4oZC0+bHN0KS0+cGFnZSgpOworICAgICAgICBX
ZWJDb3JlOjpQYWdlKiBwYWdlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0
Kj4oZC0+bHN0KS0+cGFnZSgpOwogICAgICAgICBwYWdlLT5nb1RvSXRlbShkLT5sc3QtPmZvcndh
cmRJdGVtKCksIFdlYkNvcmU6OkZyYW1lTG9hZFR5cGVJbmRleGVkQmFja0ZvcndhcmQpOwogICAg
IH0KIH0KQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIFFXZWJIaXN0b3J5Ojpmb3J3YXJkKCkKICov
CiB2b2lkIFFXZWJIaXN0b3J5Ojpnb1RvSXRlbShjb25zdCBRV2ViSGlzdG9yeUl0ZW0gJml0ZW0p
CiB7Ci0gICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdEltcGwqPihkLT5sc3QpLT5wYWdlKCk7CisgICAgV2ViQ29yZTo6UGFnZSogcGFn
ZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KGQtPmxzdCktPnBhZ2Uo
KTsKICAgICBwYWdlLT5nb1RvSXRlbShpdGVtLmQtPml0ZW0sIFdlYkNvcmU6OkZyYW1lTG9hZFR5
cGVJbmRleGVkQmFja0ZvcndhcmQpOwogfQogCkBAIC01NjMsNyArNTYzLDcgQEAgUURhdGFTdHJl
YW0mIG9wZXJhdG9yPj4oUURhdGFTdHJlYW0mIHNvdXJjZSwgUVdlYkhpc3RvcnkmIGhpc3Rvcnkp
CiAKIFFXZWJQYWdlQWRhcHRlciogUVdlYkhpc3RvcnlQcml2YXRlOjpwYWdlKCkKIHsKLSAgICBy
ZXR1cm4gUVdlYlBhZ2VBZGFwdGVyOjpraXQoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0Zvcndh
cmRMaXN0SW1wbCo+KGxzdCktPnBhZ2UoKSk7CisgICAgcmV0dXJuIFFXZWJQYWdlQWRhcHRlcjo6
a2l0KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCo+KGxzdCktPnBhZ2UoKSk7
CiB9CiAKIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjpjb3Jl
KGNvbnN0IFFXZWJIaXN0b3J5SXRlbSogcSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJoaXN0b3J5X3AuaCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJoaXN0b3J5X3Au
aAppbmRleCAxNzYzNGViLi5jNjJiN2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2ViaGlzdG9yeV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmhpc3Rvcnlf
cC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKIAogY2xhc3MgUVdlYkhpc3RvcnlQcml2YXRl
IDogcHVibGljIFFTaGFyZWREYXRhIHsKIHB1YmxpYzoKLSAgICBRV2ViSGlzdG9yeVByaXZhdGUo
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogbCkKKyAgICBRV2ViSGlzdG9yeVByaXZhdGUo
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBsKQogICAgIHsKICAgICAgICAgbC0+cmVmKCk7CiAg
ICAgICAgIGxzdCA9IGw7CkBAIC02NSw3ICs2NSw3IEBAIHB1YmxpYzoKIAogICAgIFFXZWJQYWdl
QWRhcHRlciogcGFnZSgpOwogCi0gICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCogbHN0
OworICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogbHN0OwogfTsKIAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5kZXgg
NjA1OTZiNC4uZGQxZmIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgUVdlYlBh
Z2VBZGFwdGVyOjppbml0aWFsaXplV2ViQ29yZVBhZ2UoKQogICAgIFdlYkNvcmU6OnByb3ZpZGVO
b3RpZmljYXRpb24ocGFnZSwgTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQ6Om5vdGlmaWNh
dGlvblByZXNlbnRlcigpKTsKICNlbmRpZgogCi0gICAgaGlzdG9yeS5kID0gbmV3IFFXZWJIaXN0
b3J5UHJpdmF0ZShzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocGFn
ZS0+YmFja0ZvcndhcmRDbGllbnQoKSkpOworICAgIGhpc3RvcnkuZCA9IG5ldyBRV2ViSGlzdG9y
eVByaXZhdGUoc3RhdGljX2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0Kj4ocGFnZS0+YmFj
a0ZvcndhcmRDbGllbnQoKSkpOwogCiAgICAgUGFnZUdyb3VwOjpzZXRTaG91bGRUcmFja1Zpc2l0
ZWRMaW5rcyh0cnVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tG
b3J3YXJkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJCYWNrRm9yd2FyZExpc3QuY3Bw
CmluZGV4IGJkMjNkMjYuLmY0NGFlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkJhY2tGb3J3YXJkTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0Zvcndh
cmRMaXN0LmNwcApAQCAtNDAsMTUgKzQwLDE1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiAvLyBXZWJCYWNrRm9yd2FyZExpc3QgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBGSVhNRTogSW5zdGVhZCBvZiB0
aGlzIHdlIGNvdWxkIGp1c3QgY3JlYXRlIGEgY2xhc3MgZGVyaXZlZCBmcm9tIEJhY2tGb3J3YXJk
TGlzdEltcGwKKy8vIEZJWE1FOiBJbnN0ZWFkIG9mIHRoaXMgd2UgY291bGQganVzdCBjcmVhdGUg
YSBjbGFzcyBkZXJpdmVkIGZyb20gQmFja0ZvcndhcmRMaXN0CiAvLyB3aXRoIGEgcG9pbnRlciB0
byBhIFdlYkJhY2tGb3J3YXJkTGlzdCBpbiBpdC4KLXN0YXRpYyBIYXNoTWFwPEJhY2tGb3J3YXJk
TGlzdEltcGwqLCBXZWJCYWNrRm9yd2FyZExpc3QqPiYgYmFja0ZvcndhcmRMaXN0V3JhcHBlcnMo
KQorc3RhdGljIEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4m
IGJhY2tGb3J3YXJkTGlzdFdyYXBwZXJzKCkKIHsKLSAgICBzdGF0aWMgSGFzaE1hcDxCYWNrRm9y
d2FyZExpc3RJbXBsKiwgV2ViQmFja0ZvcndhcmRMaXN0Kj4gc3RhdGljQmFja0ZvcndhcmRMaXN0
V3JhcHBlcnM7CisgICAgc3RhdGljIEhhc2hNYXA8QmFja0ZvcndhcmRMaXN0KiwgV2ViQmFja0Zv
cndhcmRMaXN0Kj4gc3RhdGljQmFja0ZvcndhcmRMaXN0V3JhcHBlcnM7CiAgICAgcmV0dXJuIHN0
YXRpY0JhY2tGb3J3YXJkTGlzdFdyYXBwZXJzOwogfQogCi1XZWJCYWNrRm9yd2FyZExpc3Q6Oldl
YkJhY2tGb3J3YXJkTGlzdChQYXNzUmVmUHRyPEJhY2tGb3J3YXJkTGlzdEltcGw+IGJhY2tGb3J3
YXJkTGlzdCkKK1dlYkJhY2tGb3J3YXJkTGlzdDo6V2ViQmFja0ZvcndhcmRMaXN0KFBhc3NSZWZQ
dHI8QmFja0ZvcndhcmRMaXN0PiBiYWNrRm9yd2FyZExpc3QpCiAgICAgOiBtX3JlZkNvdW50KDAp
CiAgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChiYWNrRm9yd2FyZExpc3QpCiB7CkBAIC03MCw3ICs3
MCw3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdDo6fldlYkJhY2tGb3J3YXJkTGlzdCgpCiAgICAgZ0Ns
YXNzTmFtZUNvdW50LnJlbW92ZSgiV2ViQmFja0ZvcndhcmRMaXN0Iik7CiB9CiAKLVdlYkJhY2tG
b3J3YXJkTGlzdCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRy
PEJhY2tGb3J3YXJkTGlzdEltcGw+IGJhY2tGb3J3YXJkTGlzdCkKK1dlYkJhY2tGb3J3YXJkTGlz
dCogV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPEJhY2tGb3J3
YXJkTGlzdD4gYmFja0ZvcndhcmRMaXN0KQogewogICAgIFdlYkJhY2tGb3J3YXJkTGlzdCogaW5z
dGFuY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkJhY2tGb3J3YXJkTGlz
dC5oIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKaW5kZXggYWViZmEx
NS4uOTM3NTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRM
aXN0LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQmFja0ZvcndhcmRMaXN0LmgKQEAgLTM0
LDE1ICszNCwxNSBAQAogI2luY2x1ZGUgPFdURi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIGNsYXNzIEJhY2tGb3J3YXJkTGlzdEltcGw7CisgICAgY2xhc3MgQmFja0Zvcndh
cmRMaXN0OwogfQogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3QgOiBwdWJsaWMgSVdlYkJhY2tG
b3J3YXJkTGlzdCwgSVdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUKIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNv
cmU6OkJhY2tGb3J3YXJkTGlzdEltcGw+KTsKKyAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0
KiBjcmVhdGVJbnN0YW5jZShQYXNzUmVmUHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdD4pOwog
cHJvdGVjdGVkOgotICAgIFdlYkJhY2tGb3J3YXJkTGlzdChQYXNzUmVmUHRyPFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdEltcGw+KTsKKyAgICBXZWJCYWNrRm9yd2FyZExpc3QoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpCYWNrRm9yd2FyZExpc3Q+KTsKICAgICB+V2ViQmFja0ZvcndhcmRMaXN0KCk7CiAK
IHB1YmxpYzoKQEAgLTEwOSw3ICsxMDksNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBV
TE9ORyBtX3JlZkNvdW50OwotICAgIFJlZlB0cjxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBs
PiBtX2JhY2tGb3J3YXJkTGlzdDsKKyAgICBSZWZQdHI8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0
PiBtX2JhY2tGb3J3YXJkTGlzdDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAppbmRl
eCA0YWRkYmZhLi4yZjFkZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcApAQCAtMzA0OSw3ICszMDQ5
LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpiYWNrRm9yd2FyZExpc3Qo
CiAgICAgaWYgKCFtX3VzZUJhY2tGb3J3YXJkTGlzdCkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsK
ICAKLSAgICAqbGlzdCA9IFdlYkJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlSW5zdGFuY2Uoc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0SW1wbCo+KG1fcGFnZS0+YmFja0ZvcndhcmRD
bGllbnQoKSkpOworICAgICpsaXN0ID0gV2ViQmFja0ZvcndhcmRMaXN0OjpjcmVhdGVJbnN0YW5j
ZShzdGF0aWNfY2FzdDxXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqPihtX3BhZ2UtPmJhY2tGb3J3
YXJkQ2xpZW50KCkpKTsKIAogICAgIHJldHVybiBTX09LOwogfQpAQCAtNTM3NSwzMCArNTM3NSwz
MCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmxvYWRCYWNrRm9yd2FyZExp
c3RGcm9tT3RoZXJWaWV3KAogICAgIC8vIEl0IHR1cm5zIG91dCB0aGUgcmlnaHQgY29tYmluYXRp
b24gb2YgYmVoYXZpb3IgaXMgZG9uZSB3aXRoIHRoZSBiYWNrL2ZvcndhcmQgbG9hZAogICAgIC8v
IHR5cGUuICAoU2VlIGJlaGF2aW9yIG1hdHJpeCBhdCB0aGUgdG9wIG9mIFdlYkZyYW1lUHJpdmF0
ZS4pICBTbyB3ZSBjb3B5IGFsbCB0aGUgaXRlbXMKICAgICAvLyBpbiB0aGUgYmFjayBmb3J3YXJk
IGxpc3QsIGFuZCBnbyB0byB0aGUgY3VycmVudCBvbmUuCi0gICAgQmFja0ZvcndhcmRMaXN0KiBi
YWNrRm9yd2FyZExpc3QgPSBtX3BhZ2UtPmJhY2tGb3J3YXJkQ2xpZW50KCk7Ci0gICAgQVNTRVJU
KCFiYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpOyAvLyBkZXN0aW5hdGlvbiBsaXN0IHNo
b3VsZCBiZSBlbXB0eQorICAgIEJhY2tGb3J3YXJkQ2xpZW50KiBiYWNrRm9yd2FyZENsaWVudCA9
IG1fcGFnZS0+YmFja0ZvcndhcmRDbGllbnQoKTsKKyAgICBBU1NFUlQoIWJhY2tGb3J3YXJkQ2xp
ZW50LT5jdXJyZW50SXRlbSgpKTsgLy8gZGVzdGluYXRpb24gbGlzdCBzaG91bGQgYmUgZW1wdHkK
IAogICAgIENPTVB0cjxXZWJWaWV3PiBvdGhlcldlYlZpZXc7CiAgICAgaWYgKEZBSUxFRChvdGhl
clZpZXctPlF1ZXJ5SW50ZXJmYWNlKCZvdGhlcldlYlZpZXcpKSkKICAgICAgICAgcmV0dXJuIEVf
RkFJTDsKLSAgICBCYWNrRm9yd2FyZExpc3QqIG90aGVyQmFja0ZvcndhcmRMaXN0ID0gb3RoZXJX
ZWJWaWV3LT5tX3BhZ2UtPmJhY2tGb3J3YXJkQ2xpZW50KCk7Ci0gICAgaWYgKCFvdGhlckJhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkKKyAgICBCYWNrRm9yd2FyZENsaWVudCogb3RoZXJC
YWNrRm9yd2FyZENsaWVudCA9IG90aGVyV2ViVmlldy0+bV9wYWdlLT5iYWNrRm9yd2FyZENsaWVu
dCgpOworICAgIGlmICghb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+Y3VycmVudEl0ZW0oKSkKICAg
ICAgICAgcmV0dXJuIFNfT0s7IC8vIGVtcHR5IGJhY2sgZm9yd2FyZCBsaXN0LCBiYWlsCiAgICAg
CiAgICAgSGlzdG9yeUl0ZW0qIG5ld0l0ZW1Ub0dvVG8gPSAwOwogCi0gICAgaW50IGxhc3RJdGVt
SW5kZXggPSBvdGhlckJhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RDb3VudCgpOwotICAgIGZv
ciAoaW50IGkgPSAtb3RoZXJCYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0Q291bnQoKTsgaSA8PSBs
YXN0SXRlbUluZGV4OyArK2kpIHsKKyAgICBpbnQgbGFzdEl0ZW1JbmRleCA9IG90aGVyQmFja0Zv
cndhcmRDbGllbnQtPmZvcndhcmRMaXN0Q291bnQoKTsKKyAgICBmb3IgKGludCBpID0gLW90aGVy
QmFja0ZvcndhcmRDbGllbnQtPmJhY2tMaXN0Q291bnQoKTsgaSA8PSBsYXN0SXRlbUluZGV4OyAr
K2kpIHsKICAgICAgICAgaWYgKCFpKSB7CiAgICAgICAgICAgICAvLyBJZiB0aGlzIGl0ZW0gaXMg
c2hvd2luZyAsIHNhdmUgYXdheSBpdHMgY3VycmVudCBzY3JvbGwgYW5kIGZvcm0gc3RhdGUsCiAg
ICAgICAgICAgICAvLyBzaW5jZSB0aGF0IG1pZ2h0IGhhdmUgY2hhbmdlZCBzaW5jZSBsb2FkaW5n
IGFuZCBpdCBpcyBub3JtYWxseSBub3Qgc2F2ZWQKICAgICAgICAgICAgIC8vIHVudGlsIHdlIGxl
YXZlIHRoYXQgcGFnZS4KICAgICAgICAgICAgIG90aGVyV2ViVmlldy0+bV9wYWdlLT5tYWluRnJh
bWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkuc2F2ZURvY3VtZW50QW5kU2Nyb2xsU3RhdGUoKTsKICAg
ICAgICAgfQotICAgICAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IG5ld0l0ZW0gPSBvdGhlckJhY2tG
b3J3YXJkTGlzdC0+aXRlbUF0SW5kZXgoaSktPmNvcHkoKTsKKyAgICAgICAgUmVmUHRyPEhpc3Rv
cnlJdGVtPiBuZXdJdGVtID0gb3RoZXJCYWNrRm9yd2FyZENsaWVudC0+aXRlbUF0SW5kZXgoaSkt
PmNvcHkoKTsKICAgICAgICAgaWYgKCFpKSAKICAgICAgICAgICAgIG5ld0l0ZW1Ub0dvVG8gPSBu
ZXdJdGVtLmdldCgpOwotICAgICAgICBiYWNrRm9yd2FyZExpc3QtPmFkZEl0ZW0obmV3SXRlbS5y
ZWxlYXNlKCkpOworICAgICAgICBiYWNrRm9yd2FyZENsaWVudC0+YWRkSXRlbShuZXdJdGVtLnJl
bGVhc2UoKSk7CiAgICAgfQogICAgIAogICAgIEFTU0VSVChuZXdJdGVtVG9Hb1RvKTsK
</data>
<flag name="review"
          id="233355"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>