<?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>225102</bug_id>
          
          <creation_ts>2021-04-27 06:38:23 -0700</creation_ts>
          <short_desc>Share style resolvers between author shadow trees without style sheets</short_desc>
          <delta_ts>2021-04-30 05:20:21 -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>CSS</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225187</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1754579</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-27 06:38:23 -0700</bug_when>
    <thetext>Just for UA shadow tree resolver for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1754582</commentid>
    <comment_count>1</comment_count>
      <attachid>427145</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-27 06:39:33 -0700</bug_when>
    <thetext>Created attachment 427145
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755066</commentid>
    <comment_count>2</comment_count>
      <attachid>427276</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-28 10:17:44 -0700</bug_when>
    <thetext>Created attachment 427276
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755335</commentid>
    <comment_count>3</comment_count>
      <attachid>427336</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-29 03:19:24 -0700</bug_when>
    <thetext>Created attachment 427336
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755345</commentid>
    <comment_count>4</comment_count>
      <attachid>427338</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-29 05:11:10 -0700</bug_when>
    <thetext>Created attachment 427338
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755417</commentid>
    <comment_count>5</comment_count>
      <attachid>427338</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-04-29 09:36:06 -0700</bug_when>
    <thetext>Comment on attachment 427338
patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Prepare for sharing style resolvers (and all the related data) between shadow trees beyond
&gt; +        the currently supported user agent shadow trees. This patch refactors the sharing code
&gt; +        and adds support for sharing resolvers for author shadow trees without style sheets.

How (if at all) do we test resolver sharing? Could we add some sort of dumping of the resolver state if we don&apos;t have a better way?

&gt; Source/WebCore/style/StyleResolver.h:144
&gt; +    bool wasShared() const { return m_wasShared; }
&gt; +    void setWasShared() { m_wasShared = true; }

If this is really meant to be only for shared between shadow trees (as I think the change log indicates), I think making the name a bit more verbose and/or adding a comment would be good.

&gt; Source/WebCore/style/StyleScope.cpp:537
&gt; +    Vector&lt;RefPtr&lt;CSSStyleSheet&gt;&gt; newStyleSheets;

You could make this slight more efficient using a newStyleSheets.reserveInitialCapacity() here.

&gt; Source/WebCore/style/StyleScope.cpp:539
&gt; +    m_resolver-&gt;appendAuthorStyleSheets(newStyleSheets);

Seems like unfortunate refchurn. Can we move  newStyleSheets into appendAuthorStyleSheets (may require making a appendAuthorStyleSheets overload that takes an r-value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755427</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-29 10:02:23 -0700</bug_when>
    <thetext>&gt; How (if at all) do we test resolver sharing? Could we add some sort of
&gt; dumping of the resolver state if we don&apos;t have a better way?

Good point, I&apos;ll add some sort of testing thing to Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755640</commentid>
    <comment_count>7</comment_count>
      <attachid>427404</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-30 03:40:11 -0700</bug_when>
    <thetext>Created attachment 427404
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755641</commentid>
    <comment_count>8</comment_count>
      <attachid>427405</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-30 03:58:04 -0700</bug_when>
    <thetext>Created attachment 427405
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755642</commentid>
    <comment_count>9</comment_count>
      <attachid>427406</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-30 03:59:39 -0700</bug_when>
    <thetext>Created attachment 427406
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755644</commentid>
    <comment_count>10</comment_count>
      <attachid>427408</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-04-30 04:04:20 -0700</bug_when>
    <thetext>Created attachment 427408
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755652</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-30 05:19:37 -0700</bug_when>
    <thetext>Committed r276836 (237187@main): &lt;https://commits.webkit.org/237187@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 427408.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1755654</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-30 05:20:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/77377222&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427145</attachid>
            <date>2021-04-27 06:39:33 -0700</date>
            <delta_ts>2021-04-28 10:17:44 -0700</delta_ts>
            <desc>wip</desc>
            <filename>shared-resolver-refactor.patch</filename>
            <type>text/plain</type>
            <size>5233</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggYzhiZTgyYzNhYmIyLi45M2QwYjE5
N2Q5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCkBAIC03NCw1OCArNzQsNjEg
QEAgU2NvcGU6On5TY29wZSgpCiAgICAgQVNTRVJUKCFoYXNQZW5kaW5nU2hlZXRzKCkpOwogfQog
Ci1ib29sIFNjb3BlOjpzaG91bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNv
bHZlcigpIGNvbnN0Ci17Ci0gICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAobV9zaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIElmIHdlIGhhdmUgc3R5bGVz
aGVldHMgaW4gdGhlIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUgdXNlIHBlci1zY29wZSByZXNvbHZl
ci4KLSAgICBpZiAoIW1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCiBSZXNvbHZlciYgU2NvcGU6
OnJlc29sdmVyKCkKIHsKLSAgICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJl
ZVN0eWxlUmVzb2x2ZXIoKSkKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQudXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAgICBpZiAoIW1fcmVzb2x2ZXIpCisgICAgICAgIGZp
bmRTaGFyZWRSZXNvbHZlcigpOwogCi0gICAgaWYgKCFtX3Jlc29sdmVyKSB7Ci0gICAgICAgIFNl
dEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5
bGVSZXNvbHZlciwgdHJ1ZSB9OworICAgIGlmICghbV9yZXNvbHZlcikKKyAgICAgICAgY3JlYXRl
UmVzb2x2ZXIoKTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNyZWF0ZShtX2Rv
Y3VtZW50KTsKKyAgICByZXR1cm4gKm1fcmVzb2x2ZXI7Cit9CiAKLSAgICAgICAgaWYgKCFtX3No
YWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRT
dGFydGVkKCk7Ci0gICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLmluaXRpYWxpemVV
c2VyU3R5bGUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fcmVzb2x2ZXItPnJ1
bGVTZXRzKCkuc2V0SXNGb3JTaGFkb3dTY29wZSgpOwotICAgICAgICAgICAgbV9yZXNvbHZlci0+
cnVsZVNldHMoKS5zZXRVc2VzU2hhcmVkVXNlclN0eWxlKG1fc2hhZG93Um9vdC0+bW9kZSgpICE9
IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpOwotICAgICAgICB9Cit2b2lkIFNjb3BlOjpjcmVh
dGVSZXNvbHZlcigpCit7CisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVz
b2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9y
ZXNvbHZlci0+YWRkQ3VycmVudFNWR0ZvbnRGYWNlUnVsZXMoKTsKLSAgICAgICAgbV9yZXNvbHZl
ci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNoZWV0cyk7CisgICAgbV9y
ZXNvbHZlciA9IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CiAKLSAgICAgICAgaWYgKCFt
X3NoYWRvd1Jvb3QpCi0gICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxk
Q29tcGxldGVkKCk7CisgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKKyAgICAgICAgbV9kb2N1bWVu
dC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKKyAgICAgICAgbV9yZXNvbHZlci0+cnVs
ZVNldHMoKS5pbml0aWFsaXplVXNlclN0eWxlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9y
ZXNvbHZlci0+cnVsZVNldHMoKS5zZXRJc0ZvclNoYWRvd1Njb3BlKCk7CisgICAgICAgIG1fcmVz
b2x2ZXItPnJ1bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShtX3NoYWRvd1Jvb3QtPm1v
ZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KTsKICAgICB9Ci0gICAgQVNTRVJUKCFt
X3NoYWRvd1Jvb3QgfHwgJm1fZG9jdW1lbnQgPT0gJm1fc2hhZG93Um9vdC0+ZG9jdW1lbnQoKSk7
Ci0gICAgQVNTRVJUKCZtX3Jlc29sdmVyLT5kb2N1bWVudCgpID09ICZtX2RvY3VtZW50KTsKLSAg
ICByZXR1cm4gKm1fcmVzb2x2ZXI7CisKKyAgICBtX3Jlc29sdmVyLT5hZGRDdXJyZW50U1ZHRm9u
dEZhY2VSdWxlcygpOworICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1f
YWN0aXZlU3R5bGVTaGVldHMpOworCisgICAgaWYgKCFtX3NoYWRvd1Jvb3QpCisgICAgICAgIG1f
ZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRDb21wbGV0ZWQoKTsKIH0KIAotUmVzb2x2ZXIq
IFNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKCkKK3ZvaWQgU2NvcGU6OmZpbmRTaGFyZWRSZXNvbHZl
cigpCiB7Ci0gICAgaWYgKHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJl
c29sdmVyKCkpCi0gICAgICAgIHJldHVybiAmbV9kb2N1bWVudC51c2VyQWdlbnRTaGFkb3dUcmVl
U3R5bGVSZXNvbHZlcigpOworICAgIGF1dG8gc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93
VHJlZVN0eWxlUmVzb2x2ZXIgPSBbJl0geworICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKG1fc2hhZG93Um9vdC0+bW9kZSgp
ICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIC8vIElmIHdlIGhhdmUgc3R5bGVzaGVldHMgaW4gdGhlIHVzZXIgYWdlbnQgc2hh
ZG93IHRyZWUgdXNlIHBlci1zY29wZSByZXNvbHZlci4KKyAgICAgICAgaWYgKCFtX3N0eWxlU2hl
ZXRDYW5kaWRhdGVOb2Rlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH07CiAKLSAgICByZXR1cm4gbV9yZXNvbHZlci5nZXQo
KTsKKyAgICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2
ZXIoKSkgeworICAgICAgICBtX3Jlc29sdmVyID0gJm1fZG9jdW1lbnQudXNlckFnZW50U2hhZG93
VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAgICAgICAgbV9pc1VzaW5nU2hhcmVkUmVzb2x2ZXIgPSB0
cnVlOworICAgIH0KIH0KIAogdm9pZCBTY29wZTo6Y2xlYXJSZXNvbHZlcigpCiB7CiAgICAgbV9y
ZXNvbHZlciA9IG51bGxwdHI7CisgICAgbV9pc1VzaW5nU2hhcmVkUmVzb2x2ZXIgPSBmYWxzZTsK
IAogICAgIGlmICghbV9zaGFkb3dSb290KQogICAgICAgICBtX2RvY3VtZW50LmRpZENsZWFyU3R5
bGVSZXNvbHZlcigpOwpAQCAtMzg2LDYgKzM4OSw5IEBAIFNjb3BlOjpTdHlsZVNoZWV0Q2hhbmdl
IFNjb3BlOjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0
CiAgICAgaWYgKCFyZXNvbHZlcklmRXhpc3RzKCkpCiAgICAgICAgIHJldHVybiB7IFJlc29sdmVy
VXBkYXRlVHlwZTo6UmVjb25zdHJ1Y3QgfTsKIAorICAgIGlmIChtX2lzVXNpbmdTaGFyZWRSZXNv
bHZlcikKKyAgICAgICAgcmV0dXJuIHsgUmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNvbnN0cnVjdCB9
OworCiAgICAgLy8gRmluZCBvdXQgd2hpY2ggc3R5bGVzaGVldHMgYXJlIG5ldy4KICAgICB1bnNp
Z25lZCBvbGRTdHlsZXNoZWV0Q291bnQgPSBtX2FjdGl2ZVN0eWxlU2hlZXRzLnNpemUoKTsKICAg
ICBpZiAobmV3U3R5bGVzaGVldENvdW50IDwgb2xkU3R5bGVzaGVldENvdW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZS5oCmluZGV4IDdjMDcyYTU5NTFiNi4uMDRjMTNhMTllNjg2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvbHZlciYgcmVzb2x2ZXIoKTsKLSAgICBSZXNvbHZl
ciogcmVzb2x2ZXJJZkV4aXN0cygpOworICAgIFJlc29sdmVyKiByZXNvbHZlcklmRXhpc3RzKCkg
eyByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJSZXNvbHZlcigpOwog
ICAgIHZvaWQgcmVsZWFzZU1lbW9yeSgpOwogCkBAIC0xMzIsOCArMTMyLDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBTY29wZSogZm9yT3JkaW5hbChFbGVtZW50JiwgU2NvcGVPcmRpbmFsKTsKIAog
cHJpdmF0ZToKLSAgICBib29sIHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHls
ZVJlc29sdmVyKCkgY29uc3Q7Ci0KICAgICB2b2lkIGRpZFJlbW92ZVBlbmRpbmdTdHlsZXNoZWV0
KCk7CiAKICAgICBlbnVtIGNsYXNzIFVwZGF0ZVR5cGUgOiB1aW50OF90IHsgQWN0aXZlU2V0LCBD
b250ZW50c09ySW50ZXJwcmV0YXRpb24gfTsKQEAgLTE2MCw2ICsxNTgsOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlQWZ0ZXJTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFN0eWxl
U2hlZXRDaGFuZ2UmKTsKIAogICAgIHZvaWQgdXBkYXRlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0Pj4mLCBSZXNvbHZlclVwZGF0ZVR5cGUpOworICAgIHZvaWQgY3JlYXRlUmVz
b2x2ZXIoKTsKKyAgICB2b2lkIGZpbmRTaGFyZWRSZXNvbHZlcigpOwogCiAgICAgRG9jdW1lbnQm
IG1fZG9jdW1lbnQ7CiAgICAgU2hhZG93Um9vdCogbV9zaGFkb3dSb290IHsgbnVsbHB0ciB9OwpA
QCAtMTg4LDYgKzE4OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFi
aWxpdHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IGZh
bHNlIH07CisgICAgYm9vbCBtX2lzVXNpbmdTaGFyZWRSZXNvbHZlciB7IGZhbHNlIH07CiB9Owog
CiBpbmxpbmUgYm9vbCBTY29wZTo6aGFzUGVuZGluZ1NoZWV0cygpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427276</attachid>
            <date>2021-04-28 10:17:44 -0700</date>
            <delta_ts>2021-04-29 03:19:24 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver.patch</filename>
            <type>text/plain</type>
            <size>13990</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNThhODdlOGE4MDEuLmRjNTE1N2M3Zjk1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDU2IEBACisyMDIxLTA0LTI4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBGYWN0b3Igc3R5bGUgcmVzb2x2ZXIgc2hhcmluZyBpbnRvIGEgZnVuY3Rp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTEw
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXBh
cmUgZm9yIHNoYXJpbmcgc3R5bGUgcmVzb2x2ZXJzIChhbmQgYWxsIHRoZSByZWxhdGVkIGRhdGEp
IGJldHdlZW4gc2hhZG93IHRyZWVzIG90aGVyCisgICAgICAgIHRoYW4gY3VycmVudGx5IHN1cHBv
cnRlZCB1c2VyIGFnZW50IHNoYWRvdyB0cmVlcy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXNlckFnZW50U2hhZG93VHJlZVN0eWxl
UmVzb2x2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZENsZWFy
U3R5bGVSZXNvbHZlcik6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICBNb3ZlIHRoZSBzaGFy
ZWQgVUEgcmVzb2x2ZXIgdG8gU3R5bGU6OlNjb3BlLgorICAgICAgICAKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OmlzU2hhcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSZXNvbHZlcjo6c2V0SXNTaGFyZWQpOgorICAgICAgICAKKyAgICAgICAgQWRk
IGEgYml0IGluZGljYXRpbmcgaWYgYSByZXNvbHZlciBpcyBzaGFyZWQgYmV0d2VlbiBzaGFkb3cg
dHJlZXMuCisgICAgICAgIAorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OmNyZWF0ZURvY3VtZW50UmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlOjpmaW5kT3JDcmVhdGVTaGFkb3dUcmVlUmVzb2x2ZXIpOgorICAgICAgICAK
KyAgICAgICAgRmFjdG9yIGludG8gYSBmdW5jdGlvbi4KKyAgICAgICAgU2hhcmUgdXNlciBhZ2Vu
dCBzaGFkb3cgdHJlZSByZXNvbHZlciAoYXMgYmVmb3JlKSBhbmQgYWxzbyByZXNvbHZlciBmb3Ig
ZW1wdHkgYXV0aG9yIHNoYWRvdyB0cmVlcy4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OmNsZWFyUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNj
b3BlOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6YW5h
bHl6ZVN0eWxlU2hlZXRDaGFuZ2UpOgorICAgICAgICAKKyAgICAgICAgSWYgc3R5bGUgc2hlZXRz
IGNoYW5nZSBhbmQgdGhlIHJlc29sdmVyIGlzIHNoYXJlZCBhbHdheXMgbG9vayBpdCB1cCBhZ2Fp
biAoc2luY2UgaXQgY2FuJ3QgYmUgbXV0YXRlZCkuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgIAorICAg
ICAgICBEb24ndCBpbmNsdWRlIGV4dGVuc2lvbiBzdHlsZXNoZWV0cyBpbiBVQSB0cmVlcyAodGhl
eSB3b3VsZCBiZSBpZ25vcmVkIGFueXdheSkuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlNjb3BlOjpzY2hlZHVsZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
U2NvcGU6Omluc2VydGVkSW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2Nv
cGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OnJvb3RTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6
OmlzRm9yVXNlckFnZW50U2hhZG93VHJlZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6OnNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVy
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2
ZXJJZkV4aXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKToKKyAgICAgICAg
KiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZVJ1bGVTZXRzOjpzZXRJc0ZvclNoYWRvd1Njb3BlKTogRGVsZXRlZC4KKwogMjAyMS0wNC0y
NiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmY291bnQg
U3R5bGU6OlJlc29sdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYWUzYzNkZWI5MTAu
LjFhZDkyN2ZkNmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMzgxLDEzICsyMzgx
LDYgQEAgdm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJ
bmRleCwgSW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1h
cmdpbkxlZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHls
ZS0+bWFyZ2luTGVmdCgpLCB3aWR0aCk7CiB9CiAKLVN0eWxlOjpSZXNvbHZlciYgRG9jdW1lbnQ6
OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKLXsKLSAgICBpZiAoIW1fdXNlckFn
ZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJl
ZVN0eWxlUmVzb2x2ZXIgPSBTdHlsZTo6UmVzb2x2ZXI6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgcmV0
dXJuICptX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwotfQotCiB2b2lkIERvY3Vt
ZW50Ojpmb250c05lZWRVcGRhdGUoRm9udFNlbGVjdG9yJikKIHsKICAgICBpbnZhbGlkYXRlTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZUFuZEZvcmNlU3R5bGVSZWNhbGMoKTsKQEAgLTI0MDIsMTEgKzIz
OTUsNiBAQCB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFu
ZEZvcmNlU3R5bGVSZWNhbGMoKQogICAgIHNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCgpOwogfQog
Ci12b2lkIERvY3VtZW50OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIoKQotewotICAgIG1fdXNlckFn
ZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBudWxscHRyOwotfQotCiB2b2lkIERvY3VtZW50
OjpzZXRJc1Jlc29sdmluZ1RyZWVTdHlsZShib29sIHZhbHVlKQogewogICAgIFJFTEVBU0VfQVNT
RVJUKHZhbHVlICE9IG1faXNSZXNvbHZpbmdUcmVlU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCAwOGYwYTA1NmQxODUuLjUzNDY2OTRmYzEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTEzMTMsNyArMTMxMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJv
cGVydGllc0NhY2hlQW5kRm9yY2VTdHlsZVJlY2FsYygpOwogCiAgICAgdm9pZCBkaWRSZW1vdmVB
bGxQZW5kaW5nU3R5bGVzaGVldCgpOwotICAgIHZvaWQgZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCk7
CiAKICAgICBib29sIGluU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX2luU3R5bGVSZWNh
bGM7IH0KICAgICBib29sIGluUmVuZGVyVHJlZVVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5S
ZW5kZXJUcmVlVXBkYXRlOyB9CkBAIC0xNzQxLDggKzE3NDAsNiBAQCBwcml2YXRlOgogCiAgICAg
VW5pcXVlUmVmPFF1aXJrcz4gbV9xdWlya3M7CiAKLSAgICBSZWZQdHI8U3R5bGU6OlJlc29sdmVy
PiBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwotCiAgICAgUmVmUHRyPERPTVdp
bmRvdz4gbV9kb21XaW5kb3c7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9jb250ZXh0RG9jdW1l
bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA1MTc0OTJjOWU4MzUu
LmMxODQxZGYxYWFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNv
bHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTQw
LDYgKzE0MCw5IEBAIHB1YmxpYzoKIAogICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMmIGluc3Bl
Y3RvckNTU09NV3JhcHBlcnMoKSB7IHJldHVybiBtX2luc3BlY3RvckNTU09NV3JhcHBlcnM7IH0K
IAorICAgIGJvb2wgaXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2hhcmVkOyB9CisgICAg
dm9pZCBzZXRJc1NoYXJlZCgpIHsgbV9pc1NoYXJlZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUGFnZVJ1bGVDb2xsZWN0b3I7CiAKQEAgLTE5Niw2ICsxOTksOCBAQCBw
cml2YXRlOgogICAgIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSBtX21hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZTsKIAogICAgIGJvb2wgbV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgeyB0cnVlIH07
CisgICAgYm9vbCBtX2lzU2hhcmVkIHsgZmFsc2UgfTsKKwogICAgIC8vIFNlZSBpZiB3ZSBzdGls
bCBoYXZlIGNyYXNoZXMgd2hlcmUgUmVzb2x2ZXIgZ2V0cyBkZWxldGVkIGVhcmx5LgogICAgIGJv
b2wgbV9pc0RlbGV0ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAKaW5kZXggYzhiZTgyYzNhYmIyLi44MmM3ZTI3ZDg2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlU2NvcGUuY3BwCkBAIC03NCw2MSArNzQsNjEgQEAgU2NvcGU6On5TY29wZSgpCiAgICAgQVNT
RVJUKCFoYXNQZW5kaW5nU2hlZXRzKCkpOwogfQogCi1ib29sIFNjb3BlOjpzaG91bGRVc2VTaGFy
ZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpIGNvbnN0CitSZXNvbHZlciYgU2Nv
cGU6OnJlc29sdmVyKCkKIHsKLSAgICBpZiAoIW1fc2hhZG93Um9vdCkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmIChtX3NoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6
VXNlckFnZW50KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gSWYgd2UgaGF2ZSBzdHls
ZXNoZWV0cyBpbiB0aGUgdXNlciBhZ2VudCBzaGFkb3cgdHJlZSB1c2UgcGVyLXNjb3BlIHJlc29s
dmVyLgotICAgIGlmICghbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX3Jlc29sdmVy
KSB7CisgICAgICAgIGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgICAgICBmaW5kT3JDcmVhdGVT
aGFkb3dUcmVlUmVzb2x2ZXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JlYXRlRG9j
dW1lbnRSZXNvbHZlcigpOworICAgIH0KKyAgICByZXR1cm4gKm1fcmVzb2x2ZXI7CiB9CiAKLVJl
c29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQordm9pZCBTY29wZTo6Y3JlYXRlRG9jdW1lbnRSZXNv
bHZlcigpCiB7Ci0gICAgaWYgKHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHls
ZVJlc29sdmVyKCkpCi0gICAgICAgIHJldHVybiBtX2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyKCk7CisgICAgQVNTRVJUKCFtX3Jlc29sdmVyKTsKKyAgICBBU1NFUlQo
IW1fc2hhZG93Um9vdCk7CiAKLSAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKLSAgICAgICAgU2V0Rm9y
U2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJl
c29sdmVyLCB0cnVlIH07CisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVz
b2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9y
ZXNvbHZlciA9IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgbV9yZXNvbHZlciA9
IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CiAKLSAgICAgICAgaWYgKCFtX3NoYWRvd1Jv
b3QpIHsKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVk
KCk7Ci0gICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLmluaXRpYWxpemVVc2VyU3R5
bGUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRz
KCkuc2V0SXNGb3JTaGFkb3dTY29wZSgpOwotICAgICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNl
dHMoKS5zZXRVc2VzU2hhcmVkVXNlclN0eWxlKG1fc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQpOwotICAgICAgICB9CisgICAgbV9kb2N1bWVudC5mb250U2Vs
ZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKIAotICAgICAgICBtX3Jlc29sdmVyLT5hZGRDdXJyZW50
U1ZHRm9udEZhY2VSdWxlcygpOwotICAgICAgICBtX3Jlc29sdmVyLT5hcHBlbmRBdXRob3JTdHls
ZVNoZWV0cyhtX2FjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygp
LmluaXRpYWxpemVVc2VyU3R5bGUoKTsKKyAgICBtX3Jlc29sdmVyLT5hZGRDdXJyZW50U1ZHRm9u
dEZhY2VSdWxlcygpOworICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1f
YWN0aXZlU3R5bGVTaGVldHMpOwogCi0gICAgICAgIGlmICghbV9zaGFkb3dSb290KQotICAgICAg
ICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZENvbXBsZXRlZCgpOwotICAgIH0K
LSAgICBBU1NFUlQoIW1fc2hhZG93Um9vdCB8fCAmbV9kb2N1bWVudCA9PSAmbV9zaGFkb3dSb290
LT5kb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoJm1fcmVzb2x2ZXItPmRvY3VtZW50KCkgPT0gJm1f
ZG9jdW1lbnQpOwotICAgIHJldHVybiAqbV9yZXNvbHZlcjsKKyAgICBtX2RvY3VtZW50LmZvbnRT
ZWxlY3RvcigpLmJ1aWxkQ29tcGxldGVkKCk7CiB9CiAKLVJlc29sdmVyKiBTY29wZTo6cmVzb2x2
ZXJJZkV4aXN0cygpCit2b2lkIFNjb3BlOjpmaW5kT3JDcmVhdGVTaGFkb3dUcmVlUmVzb2x2ZXIo
KQogewotICAgIGlmIChzaG91bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNv
bHZlcigpKQotICAgICAgICByZXR1cm4gJm1fZG9jdW1lbnQudXNlckFnZW50U2hhZG93VHJlZVN0
eWxlUmVzb2x2ZXIoKTsKKyAgICBBU1NFUlQoIW1fcmVzb2x2ZXIpOworICAgIEFTU0VSVChtX3No
YWRvd1Jvb3QpOworCisgICAgaWYgKG1fYWN0aXZlU3R5bGVTaGVldHMuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIGF1dG8mIHNoYXJlZFJlc29sdmVyID0gaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVlKCkg
PyByb290U2NvcGUoKS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlciA6IHJvb3RT
Y29wZSgpLm1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgICAgIGlm
ICghc2hhcmVkUmVzb2x2ZXIpIHsKKyAgICAgICAgICAgIHNoYXJlZFJlc29sdmVyID0gUmVzb2x2
ZXI6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICAgICAgICAgIHNoYXJlZFJlc29sdmVyLT5ydWxl
U2V0cygpLnNldFVzZXNTaGFyZWRVc2VyU3R5bGUoIWlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgp
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzaGFyZWRSZXNvbHZlci0+c2V0SXNTaGFy
ZWQoKTsKKworICAgICAgICBtX3Jlc29sdmVyID0gc2hhcmVkUmVzb2x2ZXI7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNyZWF0ZShtX2RvY3Vt
ZW50KTsKIAotICAgIHJldHVybiBtX3Jlc29sdmVyLmdldCgpOworICAgIG1fcmVzb2x2ZXItPnJ1
bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJTdHlsZSghaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVl
KCkpOworICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlU3R5
bGVTaGVldHMpOwogfQogCiB2b2lkIFNjb3BlOjpjbGVhclJlc29sdmVyKCkKIHsKICAgICBtX3Jl
c29sdmVyID0gbnVsbHB0cjsKLQotICAgIGlmICghbV9zaGFkb3dSb290KQotICAgICAgICBtX2Rv
Y3VtZW50LmRpZENsZWFyU3R5bGVSZXNvbHZlcigpOwogfQogCiB2b2lkIFNjb3BlOjpyZWxlYXNl
TWVtb3J5KCkKQEAgLTE0OCw2ICsxNDgsOSBAQCB2b2lkIFNjb3BlOjpyZWxlYXNlTWVtb3J5KCkK
ICAgICB9CiAjZW5kaWYKICAgICBjbGVhclJlc29sdmVyKCk7CisKKyAgICBtX3NoYXJlZFVzZXJB
Z2VudFNoYWRvd1RyZWVSZXNvbHZlciA9IG51bGxwdHI7CisgICAgbV9zaGFyZWRFbXB0eUF1dGhv
clNoYWRvd1RyZWVSZXNvbHZlciA9IG51bGxwdHI7CiB9CiAKIFNjb3BlJiBTY29wZTo6Zm9yTm9k
ZShOb2RlJiBub2RlKQpAQCAtMzgzLDcgKzM4NiwxMSBAQCBTY29wZTo6U3R5bGVTaGVldENoYW5n
ZSBTY29wZTo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NT
dAogewogICAgIHVuc2lnbmVkIG5ld1N0eWxlc2hlZXRDb3VudCA9IG5ld1N0eWxlc2hlZXRzLnNp
emUoKTsKIAotICAgIGlmICghcmVzb2x2ZXJJZkV4aXN0cygpKQorICAgIGF1dG8qIHJlc29sdmVy
ID0gcmVzb2x2ZXJJZkV4aXN0cygpOworICAgIGlmICghcmVzb2x2ZXIpCisgICAgICAgIHJldHVy
biB7IFJlc29sdmVyVXBkYXRlVHlwZTo6UmVjb25zdHJ1Y3QgfTsKKworICAgIGlmIChyZXNvbHZl
ci0+aXNTaGFyZWQoKSkKICAgICAgICAgcmV0dXJuIHsgUmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNv
bnN0cnVjdCB9OwogCiAgICAgLy8gRmluZCBvdXQgd2hpY2ggc3R5bGVzaGVldHMgYXJlIG5ldy4K
QEAgLTQ1Miw4ICs0NTksMTIgQEAgdm9pZCBTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMo
VXBkYXRlVHlwZSB1cGRhdGVUeXBlKQogICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhhY3Rp
dmVTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBhY3Rp
dmVDU1NTdHlsZVNoZWV0czsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3Io
bV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0cygpLmluamVjdGVkQXV0aG9yU3R5bGVTaGVl
dHMoKSk7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1lbnQu
ZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5hdXRob3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcoKSk7CisK
KyAgICBpZiAoIWlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpKSB7CisgICAgICAgIGFjdGl2ZUNT
U1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50LmV4dGVuc2lvblN0eWxlU2hlZXRz
KCkuaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICAgICAgYWN0aXZlQ1NTU3R5bGVT
aGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5hdXRo
b3JTdHlsZVNoZWV0c0ZvclRlc3RpbmcoKSk7CisgICAgfQorCiAgICAgZmlsdGVyRW5hYmxlZE5v
bmVtcHR5Q1NTU3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hl
ZXRzKTsKIAogICAgIGF1dG8gc3R5bGVTaGVldENoYW5nZSA9IFN0eWxlU2hlZXRDaGFuZ2UgeyBS
ZXNvbHZlclVwZGF0ZVR5cGU6OlJlY29uc3RydWN0IH07CkBAIC01ODEsNyArNTkyLDcgQEAgdm9p
ZCBTY29wZTo6c2NoZWR1bGVVcGRhdGUoVXBkYXRlVHlwZSB1cGRhdGUpCiAgICAgaWYgKCFtX3Bl
bmRpbmdVcGRhdGUgfHwgKm1fcGVuZGluZ1VwZGF0ZSA8IHVwZGF0ZSkgewogICAgICAgICBtX3Bl
bmRpbmdVcGRhdGUgPSB1cGRhdGU7CiAgICAgICAgIGlmIChtX3NoYWRvd1Jvb3QpCi0gICAgICAg
ICAgICBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1Vw
ZGF0ZSA9IHRydWU7CisgICAgICAgICAgICByb290U2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgfQogCiAgICAgbV9kb2N1bWVudC5zY2hlZHVsZVJl
bmRlcmluZ1VwZGF0ZSh7IH0pOwpAQCAtNTkyLDcgKzYwMyw3IEBAIHZvaWQgU2NvcGU6Omluc2Vy
dGVkSW5Eb2N1bWVudCgpCiAgICAgaWYgKCFtX3BlbmRpbmdVcGRhdGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLm1faGFzRGVzY2VuZGFudFdpdGhQZW5k
aW5nVXBkYXRlID0gdHJ1ZTsKKyAgICByb290U2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRoUGVu
ZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgbV9kb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0
ZSh7IH0pOwogfQogCkBAIC02NTksNiArNjcwLDkgQEAgdm9pZCBTY29wZTo6ZGlkQ2hhbmdlU3R5
bGVTaGVldENvbnRlbnRzKCkKIHZvaWQgU2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9u
bWVudCgpCiB7CiAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKKyAgICAgICAgbV9zaGFyZWRVc2Vy
QWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXIgPSBudWxscHRyOworICAgICAgICBtX3NoYXJlZEVtcHR5
QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKwogICAgICAgICBmb3IgKGF1dG8q
IGRlc2NlbmRhbnRTaGFkb3dSb290IDogbV9kb2N1bWVudC5pbkRvY3VtZW50U2hhZG93Um9vdHMo
KSkgewogICAgICAgICAgICAgLy8gU3R5bGVzaGVldHMgaXMgYXV0aG9yIHNoYWRvdyByb290cyBh
cmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQuCiAgICAgICAgICAgICBpZiAoZGVzY2VuZGFudFNoYWRv
d1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQpAQCAtNjg2LDUgKzcw
MCwxNSBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgU2NvcGU6OnN0eWxlU2hl
ZXRzRm9yU3R5bGVTaGVldExpc3QoKQogICAgIHJldHVybiBtX3N0eWxlU2hlZXRzRm9yU3R5bGVT
aGVldExpc3Q7CiB9CiAKK1Njb3BlJiBTY29wZTo6cm9vdFNjb3BlKCkKK3sKKyAgICByZXR1cm4g
bV9kb2N1bWVudC5zdHlsZVNjb3BlKCk7Cit9CisKK2Jvb2wgU2NvcGU6OmlzRm9yVXNlckFnZW50
U2hhZG93VHJlZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2hhZG93Um9vdCAmJiBtX3NoYWRv
d1Jvb3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50OworfQorCiB9CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKaW5kZXggN2MwNzJhNTk1MWI2Li5hOWYzNjQ3ZjkzZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlc29sdmVyJiByZXNvbHZlcigpOwotICAg
IFJlc29sdmVyKiByZXNvbHZlcklmRXhpc3RzKCk7CisgICAgUmVzb2x2ZXIqIHJlc29sdmVySWZF
eGlzdHMoKSB7IHJldHVybiBtX3Jlc29sdmVyLmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclJlc29s
dmVyKCk7CiAgICAgdm9pZCByZWxlYXNlTWVtb3J5KCk7CiAKQEAgLTEzMiw3ICsxMzIsOCBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFNjb3BlKiBmb3JPcmRpbmFsKEVsZW1lbnQmLCBTY29wZU9yZGlu
YWwpOwogCiBwcml2YXRlOgotICAgIGJvb2wgc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93
VHJlZVN0eWxlUmVzb2x2ZXIoKSBjb25zdDsKKyAgICBTY29wZSYgcm9vdFNjb3BlKCk7CisgICAg
Ym9vbCBpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkUmVt
b3ZlUGVuZGluZ1N0eWxlc2hlZXQoKTsKIApAQCAtMTYwLDYgKzE2MSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBZnRlclN0eWxlU2hlZXRDaGFuZ2UoY29uc3QgU3R5bGVT
aGVldENoYW5nZSYpOwogCiAgICAgdm9pZCB1cGRhdGVSZXNvbHZlcihWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+PiYsIFJlc29sdmVyVXBkYXRlVHlwZSk7CisgICAgdm9pZCBjcmVhdGVEb2N1
bWVudFJlc29sdmVyKCk7CisgICAgdm9pZCBmaW5kT3JDcmVhdGVTaGFkb3dUcmVlUmVzb2x2ZXIo
KTsKIAogICAgIERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFNoYWRvd1Jvb3QqIG1fc2hhZG93
Um9vdCB7IG51bGxwdHIgfTsKQEAgLTE4OCw2ICsxOTEsMTAgQEAgcHJpdmF0ZToKICAgICBib29s
IG1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
dXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVXBkYXRp
bmdTdHlsZVJlc29sdmVyIHsgZmFsc2UgfTsKKworICAgIC8vIEZJWE1FOiBUaGVzZSAoYW5kIHNv
bWUgdGhpbmdzIGFib3ZlKSBhcmUgb25seSByZWxldmFudCBmb3IgdGhlIHJvb3Qgc2NvcGUuCisg
ICAgUmVmUHRyPFJlc29sdmVyPiBtX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlcjsK
KyAgICBSZWZQdHI8UmVzb2x2ZXI+IG1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2
ZXI7CiB9OwogCiBpbmxpbmUgYm9vbCBTY29wZTo6aGFzUGVuZGluZ1NoZWV0cygpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCmluZGV4IDhkZWE5MDFhZGE5
Zi4uNzliYmRkMWYyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNj
b3BlUnVsZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNl
dHMuaApAQCAtNjksOCArNjksNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0NvbXBsZXhTZWxl
Y3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRJc0ZvclNoYWRv
d1Njb3BlKCkgeyBtX2lzRm9yU2hhZG93U2NvcGUgPSB0cnVlOyB9Ci0KICAgICB2b2lkIHNldFVz
ZXNTaGFyZWRVc2VyU3R5bGUoYm9vbCBiKSB7IG1fdXNlc1NoYXJlZFVzZXJTdHlsZSA9IGI7IH0K
ICAgICB2b2lkIGluaXRpYWxpemVVc2VyU3R5bGUoKTsKIApAQCAtMTEwLDcgKzEwOCw2IEBAIHBy
aXZhdGU6CiAgICAgbXV0YWJsZSB1bnNpZ25lZCBtX3VzZXJBZ2VudE1lZGlhUXVlcnlSdWxlQ291
bnRPblVwZGF0ZSB7IDAgfTsKIAogICAgIGJvb2wgbV91c2VzU2hhcmVkVXNlclN0eWxlIHsgZmFs
c2UgfTsKLSAgICBib29sIG1faXNGb3JTaGFkb3dTY29wZSB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2lzQXV0aG9yU3R5bGVEZWZpbmVkIHsgZmFsc2UgfTsKIAogICAgIC8vIEZvciBjYXRjaGluZyA8
cmRhcjovL3Byb2JsZW0vNTM0MTMwMTM+Cg==
</data>
<flag name="commit-queue"
          id="447840"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427336</attachid>
            <date>2021-04-29 03:19:24 -0700</date>
            <delta_ts>2021-04-29 04:45:53 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver-2.patch</filename>
            <type>text/plain</type>
            <size>17421</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNThhODdlOGE4MDEuLjZjOWI2Njg5YWNmYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYzIEBACisyMDIxLTA0LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBTaGFyZSBzdHlsZSByZXNvbHZlcnMgYmV0d2VlbiBhdXRob3Igc2hhZG93
IHRyZWVzIHdpdGhvdXQgc3R5bGUgc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGZvciBzaGFyaW5nIHN0eWxlIHJlc29sdmVycyAo
YW5kIGFsbCB0aGUgcmVsYXRlZCBkYXRhKSBiZXR3ZWVuIHNoYWRvdyB0cmVlcyBiZXlvbmQKKyAg
ICAgICAgdGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMuIFRo
aXMgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzaGFyaW5nIGNvZGUKKyAgICAgICAgYW5kIGFkZHMgc3Vw
cG9ydCBmb3Igc2hhcmluZyByZXNvbHZlcnMgZm9yIGF1dGhvciBzaGFkb3cgdHJlZXMgd2l0aG91
dCBzdHlsZSBzaGVldHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIp
OiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgTW92ZSB0aGUgc2hhcmVkIFVBIHJlc29sdmVy
IHRvIFN0eWxlOjpTY29wZS4KKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlJlc29sdmVyOjp3YXNTaGFyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJl
c29sdmVyOjpzZXRXYXNTaGFyZWQpOgorICAgICAgICAKKyAgICAgICAgQWRkIGEgYml0IGluZGlj
YXRpbmcgaWYgYSByZXNvbHZlciBoYXMgYmVlbiBzaGFyZWQgYmV0d2VlbiBzaGFkb3cgdHJlZXMu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpj
cmVhdGVEb2N1bWVudFJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6
Y3JlYXRlT3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKToKKyAgICAgICAgCisgICAgICAg
IEZhY3RvciBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIFNoYXJlIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUgcmVzb2x2ZXIgKGFzIGJlZm9yZSkgYW5kIGFsc28gcmVzb2x2ZXIgZm9yIGVtcHR5IGF1
dGhvciBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dW5z
aGFyZVNoYWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKToKKyAgICAgICAgCisgICAgICAg
IElmIHdlIG11dGF0ZSBhbiBleGlzdGluZyByZXNvbHZlciB3ZSBuZWVkIHRvIG1ha2UgaXQgdW5h
dmFpbGFibGUgZm9yIHNoYXJpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlNjb3BlOjpjbGVhclJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6
cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFuYWx5emVT
dHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgCisgICAgICAgIElmIHdlIGFyZSBhYm91dCB0byBt
dXRhdGUgYWxyZWFkeSBzaGFyZWQgcmVzb2x2ZXIgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25l
LgorICAgICAgICBSZXR1cm4gUmVzb2x2ZXJVcGRhdGVUeXBlOjpOb25lIGlmIG5vdGhpbmcgYWN0
dWFsbHkgY2hhbmdlZC4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6
OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgCisgICAgICAgIElmIHN0eWxlIHNo
ZWV0cyBjaGFuZ2UgYW5kIHRoZSByZXNvbHZlciBpcyBzaGFyZWQgYWx3YXlzIGxvb2sgaXQgdXAg
YWdhaW4gKHNpbmNlIGl0IGNhbid0IGJlIG11dGF0ZWQpLgorCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OnVwZGF0ZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6c2NoZWR1bGVVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpp
bnNlcnRlZEluRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpkaWRD
aGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNj
b3BlOjpkb2N1bWVudFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6aXNG
b3JVc2VyQWdlbnRTaGFkb3dUcmVlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6c2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcklm
RXhpc3RzKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVySWZFeGlzdHMpOgorICAgICAgICAqIHN0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3Bl
UnVsZVNldHM6OnNldElzRm9yU2hhZG93U2NvcGUpOiBEZWxldGVkLgorCiAyMDIxLTA0LTI2ICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWZjb3VudCBTdHls
ZTo6UmVzb2x2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDJhZTNjM2RlYjkxMC4uMWFk
OTI3ZmQ2ZGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTIzODEsMTMgKzIzODEsNiBA
QCB2b2lkIERvY3VtZW50OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4
LCBJbnRTaXplJiBwYWdlU2l6ZSwgaW50JgogICAgIG1hcmdpbkxlZnQgPSBzdHlsZS0+bWFyZ2lu
TGVmdCgpLmlzQXV0bygpID8gbWFyZ2luTGVmdCA6IGludFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5t
YXJnaW5MZWZ0KCksIHdpZHRoKTsKIH0KIAotU3R5bGU6OlJlc29sdmVyJiBEb2N1bWVudDo6dXNl
ckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKQotewotICAgIGlmICghbV91c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcikKLSAgICAgICAgbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5
bGVSZXNvbHZlciA9IFN0eWxlOjpSZXNvbHZlcjo6Y3JlYXRlKCp0aGlzKTsKLSAgICByZXR1cm4g
Km1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7Ci19Ci0KIHZvaWQgRG9jdW1lbnQ6
OmZvbnRzTmVlZFVwZGF0ZShGb250U2VsZWN0b3ImKQogewogICAgIGludmFsaWRhdGVNYXRjaGVk
UHJvcGVydGllc0NhY2hlQW5kRm9yY2VTdHlsZVJlY2FsYygpOwpAQCAtMjQwMiwxMSArMjM5NSw2
IEBAIHZvaWQgRG9jdW1lbnQ6OmludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlQW5kRm9y
Y2VTdHlsZVJlY2FsYygpCiAgICAgc2NoZWR1bGVGdWxsU3R5bGVSZWJ1aWxkKCk7CiB9CiAKLXZv
aWQgRG9jdW1lbnQ6OmRpZENsZWFyU3R5bGVSZXNvbHZlcigpCi17Ci0gICAgbV91c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlciA9IG51bGxwdHI7Ci19Ci0KIHZvaWQgRG9jdW1lbnQ6OnNl
dElzUmVzb2x2aW5nVHJlZVN0eWxlKGJvb2wgdmFsdWUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
dmFsdWUgIT0gbV9pc1Jlc29sdmluZ1RyZWVTdHlsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4
IDA4ZjBhMDU2ZDE4NS4uNTM0NjY5NGZjMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTMx
Myw3ICsxMzEzLDYgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0
aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCk7CiAKICAgICB2b2lkIGRpZFJlbW92ZUFsbFBl
bmRpbmdTdHlsZXNoZWV0KCk7Ci0gICAgdm9pZCBkaWRDbGVhclN0eWxlUmVzb2x2ZXIoKTsKIAog
ICAgIGJvb2wgaW5TdHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIG1faW5TdHlsZVJlY2FsYzsg
fQogICAgIGJvb2wgaW5SZW5kZXJUcmVlVXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pblJlbmRl
clRyZWVVcGRhdGU7IH0KQEAgLTE3NDEsOCArMTc0MCw2IEBAIHByaXZhdGU6CiAKICAgICBVbmlx
dWVSZWY8UXVpcmtzPiBtX3F1aXJrczsKIAotICAgIFJlZlB0cjxTdHlsZTo6UmVzb2x2ZXI+IG1f
dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXI7Ci0KICAgICBSZWZQdHI8RE9NV2luZG93
PiBtX2RvbVdpbmRvdzsKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2NvbnRleHREb2N1bWVudDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCmluZGV4IDUxNzQ5MmM5ZTgzNS4uZDQ4
OTc4ZDJlZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCkBAIC0xNDAsNiAr
MTQwLDkgQEAgcHVibGljOgogCiAgICAgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyYgaW5zcGVjdG9y
Q1NTT01XcmFwcGVycygpIHsgcmV0dXJuIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVyczsgfQogCisg
ICAgYm9vbCB3YXNTaGFyZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NoYXJlZDsgfQorICAgIHZv
aWQgc2V0V2FzU2hhcmVkKCkgeyBtX3dhc1NoYXJlZCA9IHRydWU7IH0KKwogcHJpdmF0ZToKICAg
ICBmcmllbmQgY2xhc3MgUGFnZVJ1bGVDb2xsZWN0b3I7CiAKQEAgLTE5Niw2ICsxOTksOCBAQCBw
cml2YXRlOgogICAgIE1hdGNoZWREZWNsYXJhdGlvbnNDYWNoZSBtX21hdGNoZWREZWNsYXJhdGlv
bnNDYWNoZTsKIAogICAgIGJvb2wgbV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgeyB0cnVlIH07
CisgICAgYm9vbCBtX3dhc1NoYXJlZCB7IGZhbHNlIH07CisKICAgICAvLyBTZWUgaWYgd2Ugc3Rp
bGwgaGF2ZSBjcmFzaGVzIHdoZXJlIFJlc29sdmVyIGdldHMgZGVsZXRlZCBlYXJseS4KICAgICBi
b29sIG1faXNEZWxldGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
Y3BwCmluZGV4IGM4YmU4MmMzYWJiMi4uZTc2YjllODhkOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmNwcApAQCAtNzQsNjEgKzc0LDcyIEBAIFNjb3BlOjp+U2NvcGUoKQogICAgIEFT
U0VSVCghaGFzUGVuZGluZ1NoZWV0cygpKTsKIH0KIAotYm9vbCBTY29wZTo6c2hvdWxkVXNlU2hh
cmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSBjb25zdAorUmVzb2x2ZXImIFNj
b3BlOjpyZXNvbHZlcigpCiB7Ci0gICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAobV9zaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6
OlVzZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8vIElmIHdlIGhhdmUgc3R5
bGVzaGVldHMgaW4gdGhlIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUgdXNlIHBlci1zY29wZSByZXNv
bHZlci4KLSAgICBpZiAoIW1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAgIGlmICghbV9yZXNvbHZl
cikgeworICAgICAgICBpZiAobV9zaGFkb3dSb290KQorICAgICAgICAgICAgY3JlYXRlT3JGaW5k
U2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNy
ZWF0ZURvY3VtZW50UmVzb2x2ZXIoKTsKKyAgICB9CisgICAgcmV0dXJuICptX3Jlc29sdmVyOwog
fQogCi1SZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKK3ZvaWQgU2NvcGU6OmNyZWF0ZURvY3Vt
ZW50UmVzb2x2ZXIoKQogewotICAgIGlmIChzaG91bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dU
cmVlU3R5bGVSZXNvbHZlcigpKQotICAgICAgICByZXR1cm4gbV9kb2N1bWVudC51c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOworICAgIEFTU0VSVCghbV9yZXNvbHZlcik7CisgICAg
QVNTRVJUKCFtX3NoYWRvd1Jvb3QpOwogCi0gICAgaWYgKCFtX3Jlc29sdmVyKSB7Ci0gICAgICAg
IFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5n
U3R5bGVSZXNvbHZlciwgdHJ1ZSB9OworICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdT
dHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OwogCi0gICAg
ICAgIG1fcmVzb2x2ZXIgPSBSZXNvbHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOworICAgIG1fcmVz
b2x2ZXIgPSBSZXNvbHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogCi0gICAgICAgIGlmICghbV9z
aGFkb3dSb290KSB7Ci0gICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxk
U3RhcnRlZCgpOwotICAgICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5pbml0aWFsaXpl
VXNlclN0eWxlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX3Jlc29sdmVyLT5y
dWxlU2V0cygpLnNldElzRm9yU2hhZG93U2NvcGUoKTsKLSAgICAgICAgICAgIG1fcmVzb2x2ZXIt
PnJ1bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShtX3NoYWRvd1Jvb3QtPm1vZGUoKSAh
PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KTsKLSAgICAgICAgfQorICAgIG1fZG9jdW1lbnQu
Zm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CisKKyAgICBtX3Jlc29sdmVyLT5ydWxlU2V0
cygpLmluaXRpYWxpemVVc2VyU3R5bGUoKTsKKyAgICBtX3Jlc29sdmVyLT5hZGRDdXJyZW50U1ZH
Rm9udEZhY2VSdWxlcygpOworICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KG1fYWN0aXZlU3R5bGVTaGVldHMpOwogCi0gICAgICAgIG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRT
VkdGb250RmFjZVJ1bGVzKCk7Ci0gICAgICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOworICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9y
KCkuYnVpbGRDb21wbGV0ZWQoKTsKK30KKwordm9pZCBTY29wZTo6Y3JlYXRlT3JGaW5kU2hhcmVk
U2hhZG93VHJlZVJlc29sdmVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVzb2x2ZXIpOworICAgIEFT
U0VSVChtX3NoYWRvd1Jvb3QpOwogCi0gICAgICAgIGlmICghbV9zaGFkb3dSb290KQotICAgICAg
ICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZENvbXBsZXRlZCgpOworICAgIGlm
IChtX2FjdGl2ZVN0eWxlU2hlZXRzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiBzaGFyZWRS
ZXNvbHZlciA9IGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpID8gZG9jdW1lbnRTY29wZSgpLm1f
c2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVyIDogZG9jdW1lbnRTY29wZSgpLm1fc2hh
cmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgICAgIGlmICghc2hhcmVkUmVz
b2x2ZXIpIHsKKyAgICAgICAgICAgIHNoYXJlZFJlc29sdmVyID0gUmVzb2x2ZXI6OmNyZWF0ZSht
X2RvY3VtZW50KTsKKyAgICAgICAgICAgIHNoYXJlZFJlc29sdmVyLT5ydWxlU2V0cygpLnNldFVz
ZXNTaGFyZWRVc2VyU3R5bGUoIWlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBzaGFyZWRSZXNvbHZlci0+c2V0V2FzU2hhcmVkKCk7CisKKyAg
ICAgICAgbV9yZXNvbHZlciA9IHNoYXJlZFJlc29sdmVyOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIEFTU0VSVCghbV9zaGFkb3dSb290IHx8ICZtX2RvY3VtZW50ID09ICZtX3NoYWRvd1Jv
b3QtPmRvY3VtZW50KCkpOwotICAgIEFTU0VSVCgmbV9yZXNvbHZlci0+ZG9jdW1lbnQoKSA9PSAm
bV9kb2N1bWVudCk7Ci0gICAgcmV0dXJuICptX3Jlc29sdmVyOworCisgICAgbV9yZXNvbHZlciA9
IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CisKKyAgICBtX3Jlc29sdmVyLT5ydWxlU2V0
cygpLnNldFVzZXNTaGFyZWRVc2VyU3R5bGUoIWlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpKTsK
KyAgICBtX3Jlc29sdmVyLT5hcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhtX2FjdGl2ZVN0eWxlU2hl
ZXRzKTsKIH0KIAotUmVzb2x2ZXIqIFNjb3BlOjpyZXNvbHZlcklmRXhpc3RzKCkKK3ZvaWQgU2Nv
cGU6OnVuc2hhcmVTaGFkb3dUcmVlUmVzb2x2ZXJCZWZvcmVNdXRhdGlvbigpCiB7Ci0gICAgaWYg
KHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkpCi0gICAg
ICAgIHJldHVybiAmbV9kb2N1bWVudC51c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigp
OworICAgIEFTU0VSVChtX3NoYWRvd1Jvb3QpOworICAgIEFTU0VSVCghbV9yZXNvbHZlci0+d2Fz
U2hhcmVkKCkpOwogCi0gICAgcmV0dXJuIG1fcmVzb2x2ZXIuZ2V0KCk7CisgICAgYXV0byYgc2hh
cmVkUmVzb2x2ZXIgPSBpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IGRvY3VtZW50U2NvcGUo
KS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlciA6IGRvY3VtZW50U2NvcGUoKS5t
X3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyOworICAgIAorICAgIGlmIChtX3Jl
c29sdmVyID09IHNoYXJlZFJlc29sdmVyKQorICAgICAgICBzaGFyZWRSZXNvbHZlciA9IG51bGxw
dHI7CiB9CiAKIHZvaWQgU2NvcGU6OmNsZWFyUmVzb2x2ZXIoKQogewogICAgIG1fcmVzb2x2ZXIg
PSBudWxscHRyOwotCi0gICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAgIG1fZG9jdW1lbnQu
ZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKIHZvaWQgU2NvcGU6OnJlbGVhc2VNZW1vcnko
KQpAQCAtMTQ4LDYgKzE1OSw5IEBAIHZvaWQgU2NvcGU6OnJlbGVhc2VNZW1vcnkoKQogICAgIH0K
ICNlbmRpZgogICAgIGNsZWFyUmVzb2x2ZXIoKTsKKworICAgIG1fc2hhcmVkVXNlckFnZW50U2hh
ZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKyAgICBtX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93
VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKIH0KIAogU2NvcGUmIFNjb3BlOjpmb3JOb2RlKE5vZGUm
IG5vZGUpCkBAIC0zODMsNyArMzk3LDggQEAgU2NvcGU6OlN0eWxlU2hlZXRDaGFuZ2UgU2NvcGU6
OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3QKIHsKICAg
ICB1bnNpZ25lZCBuZXdTdHlsZXNoZWV0Q291bnQgPSBuZXdTdHlsZXNoZWV0cy5zaXplKCk7CiAK
LSAgICBpZiAoIXJlc29sdmVySWZFeGlzdHMoKSkKKyAgICBhdXRvKiByZXNvbHZlciA9IHJlc29s
dmVySWZFeGlzdHMoKTsKKyAgICBpZiAoIXJlc29sdmVyKQogICAgICAgICByZXR1cm4geyBSZXNv
bHZlclVwZGF0ZVR5cGU6OlJlY29uc3RydWN0IH07CiAKICAgICAvLyBGaW5kIG91dCB3aGljaCBz
dHlsZXNoZWV0cyBhcmUgbmV3LgpAQCAtNDA2LDYgKzQyMSwxMyBAQCBTY29wZTo6U3R5bGVTaGVl
dENoYW5nZSBTY29wZTo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdAogICAgICAgICArK25ld0luZGV4OwogICAgIH0KICAgICBib29sIGhhc0luc2VydGlv
bnMgPSAhYWRkZWRTaGVldHMuaXNFbXB0eSgpOworCisgICAgaWYgKCFoYXNJbnNlcnRpb25zICYm
IG5ld1N0eWxlc2hlZXRDb3VudCA9PSBvbGRTdHlsZXNoZWV0Q291bnQpCisgICAgICAgIHJldHVy
biB7IFJlc29sdmVyVXBkYXRlVHlwZTo6Tm9uZSB9OworCisgICAgaWYgKHJlc29sdmVyLT53YXNT
aGFyZWQoKSkKKyAgICAgICAgcmV0dXJuIHsgUmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNvbnN0cnVj
dCB9OworCiAgICAgd2hpbGUgKG5ld0luZGV4IDwgbmV3U3R5bGVzaGVldENvdW50KSB7CiAgICAg
ICAgIGFkZGVkU2hlZXRzLmFwcGVuZCgmbmV3U3R5bGVzaGVldHNbbmV3SW5kZXhdLT5jb250ZW50
cygpKTsKICAgICAgICAgKytuZXdJbmRleDsKQEAgLTQ1MiwxNCArNDc0LDIxIEBAIHZvaWQgU2Nv
cGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKICAgICBj
b2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gYWN0aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZl
Q1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVl
dHMoKS5pbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hl
ZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50LmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuYXV0aG9y
U3R5bGVTaGVldHNGb3JUZXN0aW5nKCkpOworCisgICAgaWYgKCFpc0ZvclVzZXJBZ2VudFNoYWRv
d1RyZWUoKSkgeworICAgICAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IobV9k
b2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0cygpLmluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMo
KSk7CisgICAgICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50
LmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuYXV0aG9yU3R5bGVTaGVldHNGb3JUZXN0aW5nKCkpOwor
ICAgIH0KKwogICAgIGZpbHRlckVuYWJsZWROb25lbXB0eUNTU1N0eWxlU2hlZXRzKGFjdGl2ZUNT
U1N0eWxlU2hlZXRzLCBhY3RpdmVTdHlsZVNoZWV0cyk7CiAKICAgICBhdXRvIHN0eWxlU2hlZXRD
aGFuZ2UgPSBTdHlsZVNoZWV0Q2hhbmdlIHsgUmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNvbnN0cnVj
dCB9OwogICAgIGlmICh1cGRhdGVUeXBlID09IFVwZGF0ZVR5cGU6OkFjdGl2ZVNldCkKICAgICAg
ICAgc3R5bGVTaGVldENoYW5nZSA9IGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKGFjdGl2ZUNTU1N0
eWxlU2hlZXRzKTsKIAorICAgIGlmIChzdHlsZVNoZWV0Q2hhbmdlLnJlc29sdmVyVXBkYXRlVHlw
ZSA9PSBSZXNvbHZlclVwZGF0ZVR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVybjsKKwogICAgIHVw
ZGF0ZVJlc29sdmVyKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBzdHlsZVNoZWV0Q2hhbmdlLnJlc29s
dmVyVXBkYXRlVHlwZSk7CiAKICAgICBtX3dlYWtDb3B5T2ZBY3RpdmVTdHlsZVNoZWV0TGlzdEZv
ckZhc3RMb29rdXAgPSBudWxscHRyOwpAQCAtNDk2LDE5ICs1MjUsMjUgQEAgdm9pZCBTY29wZTo6
dXBkYXRlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4mIGFjdGl2ZVN0eWxl
U2hlZXRzLCBSZXMKICAgICAgICAgY2xlYXJSZXNvbHZlcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGF1dG8mIHN0eWxlUmVzb2x2ZXIgPSByZXNvbHZlcigpOworCisgICAgaWYgKG1f
c2hhZG93Um9vdCkKKyAgICAgICAgdW5zaGFyZVNoYWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0
aW9uKCk7CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7
IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUgfTsKKwogICAgIGlmICh1cGRhdGVUeXBl
ID09IFJlc29sdmVyVXBkYXRlVHlwZTo6UmVzZXQpIHsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5y
dWxlU2V0cygpLnJlc2V0QXV0aG9yU3R5bGUoKTsKLSAgICAgICAgc3R5bGVSZXNvbHZlci5hcHBl
bmRBdXRob3JTdHlsZVNoZWV0cyhhY3RpdmVTdHlsZVNoZWV0cyk7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgQVNTRVJUKHVwZGF0ZVR5cGUgPT0gUmVzb2x2ZXJVcGRhdGVUeXBlOjpBZGRpdGl2ZSk7
Ci0gICAgICAgIHVuc2lnbmVkIGZpcnN0TmV3SW5kZXggPSBtX2FjdGl2ZVN0eWxlU2hlZXRzLnNp
emUoKTsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbmV3U3R5bGVTaGVl
dHM7Ci0gICAgICAgIG5ld1N0eWxlU2hlZXRzLmFwcGVuZFJhbmdlKGFjdGl2ZVN0eWxlU2hlZXRz
LmJlZ2luKCkgKyBmaXJzdE5ld0luZGV4LCBhY3RpdmVTdHlsZVNoZWV0cy5lbmQoKSk7Ci0gICAg
ICAgIHN0eWxlUmVzb2x2ZXIuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobmV3U3R5bGVTaGVldHMp
OworICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnJlc2V0QXV0aG9yU3R5bGUoKTsKKyAg
ICAgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVl
dHMpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgQVNTRVJUKHVwZGF0ZVR5cGUgPT0g
UmVzb2x2ZXJVcGRhdGVUeXBlOjpBZGRpdGl2ZSk7CisgICAgQVNTRVJUKGFjdGl2ZVN0eWxlU2hl
ZXRzLnNpemUoKSA+IG1fYWN0aXZlU3R5bGVTaGVldHMuc2l6ZSgpKTsKKworICAgIHVuc2lnbmVk
IGZpcnN0TmV3SW5kZXggPSBtX2FjdGl2ZVN0eWxlU2hlZXRzLnNpemUoKTsKKyAgICBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBuZXdTdHlsZVNoZWV0czsKKyAgICBuZXdTdHlsZVNoZWV0
cy5hcHBlbmRSYW5nZShhY3RpdmVTdHlsZVNoZWV0cy5iZWdpbigpICsgZmlyc3ROZXdJbmRleCwg
YWN0aXZlU3R5bGVTaGVldHMuZW5kKCkpOworICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0
eWxlU2hlZXRzKG5ld1N0eWxlU2hlZXRzKTsKIH0KIAogY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVNoZWV0Pj4gU2NvcGU6OmFjdGl2ZVN0eWxlU2hlZXRzRm9ySW5zcGVjdG9yKCkKQEAgLTU4
MSw3ICs2MTYsNyBAQCB2b2lkIFNjb3BlOjpzY2hlZHVsZVVwZGF0ZShVcGRhdGVUeXBlIHVwZGF0
ZSkKICAgICBpZiAoIW1fcGVuZGluZ1VwZGF0ZSB8fCAqbV9wZW5kaW5nVXBkYXRlIDwgdXBkYXRl
KSB7CiAgICAgICAgIG1fcGVuZGluZ1VwZGF0ZSA9IHVwZGF0ZTsKICAgICAgICAgaWYgKG1fc2hh
ZG93Um9vdCkKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLm1faGFzRGVzY2Vu
ZGFudFdpdGhQZW5kaW5nVXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvY3VtZW50U2NvcGUo
KS5tX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgfQogCiAgICAg
bV9kb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwpAQCAtNTkyLDcgKzYyNyw3
IEBAIHZvaWQgU2NvcGU6Omluc2VydGVkSW5Eb2N1bWVudCgpCiAgICAgaWYgKCFtX3BlbmRpbmdV
cGRhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpLm1f
aGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlID0gdHJ1ZTsKKyAgICBkb2N1bWVudFNjb3Bl
KCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgPSB0cnVlOwogICAgIG1fZG9jdW1l
bnQuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKIH0KIApAQCAtNjU5LDYgKzY5NCw5IEBA
IHZvaWQgU2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRDb250ZW50cygpCiB2b2lkIFNjb3BlOjpk
aWRDaGFuZ2VTdHlsZVNoZWV0RW52aXJvbm1lbnQoKQogewogICAgIGlmICghbV9zaGFkb3dSb290
KSB7CisgICAgICAgIG1fc2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0
cjsKKyAgICAgICAgbV9zaGFyZWRFbXB0eUF1dGhvclNoYWRvd1RyZWVSZXNvbHZlciA9IG51bGxw
dHI7CisKICAgICAgICAgZm9yIChhdXRvKiBkZXNjZW5kYW50U2hhZG93Um9vdCA6IG1fZG9jdW1l
bnQuaW5Eb2N1bWVudFNoYWRvd1Jvb3RzKCkpIHsKICAgICAgICAgICAgIC8vIFN0eWxlc2hlZXRz
IGlzIGF1dGhvciBzaGFkb3cgcm9vdHMgYXJlIHBvdGVudGlhbGx5IGFmZmVjdGVkLgogICAgICAg
ICAgICAgaWYgKGRlc2NlbmRhbnRTaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6
OlVzZXJBZ2VudCkKQEAgLTY4Niw1ICs3MjQsMTUgQEAgY29uc3QgVmVjdG9yPFJlZlB0cjxTdHls
ZVNoZWV0Pj4mIFNjb3BlOjpzdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KCkKICAgICByZXR1
cm4gbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0OwogfQogCitTY29wZSYgU2NvcGU6OmRv
Y3VtZW50U2NvcGUoKQoreworICAgIHJldHVybiBtX2RvY3VtZW50LnN0eWxlU2NvcGUoKTsKK30K
KworYm9vbCBTY29wZTo6aXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVlKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9zaGFkb3dSb290ICYmIG1fc2hhZG93Um9vdC0+bW9kZSgpID09IFNoYWRvd1Jvb3RN
b2RlOjpVc2VyQWdlbnQ7Cit9CisKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAppbmRl
eCA3YzA3MmE1OTUxYjYuLmZjNDBmYzBhYjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUu
aApAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgUmVzb2x2ZXImIHJlc29sdmVyKCk7Ci0gICAgUmVzb2x2ZXIqIHJlc29sdmVySWZFeGlzdHMo
KTsKKyAgICBSZXNvbHZlciogcmVzb2x2ZXJJZkV4aXN0cygpIHsgcmV0dXJuIG1fcmVzb2x2ZXIu
Z2V0KCk7IH0KICAgICB2b2lkIGNsZWFyUmVzb2x2ZXIoKTsKICAgICB2b2lkIHJlbGVhc2VNZW1v
cnkoKTsKIApAQCAtMTMyLDcgKzEzMiw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU2NvcGUqIGZv
ck9yZGluYWwoRWxlbWVudCYsIFNjb3BlT3JkaW5hbCk7CiAKIHByaXZhdGU6Ci0gICAgYm9vbCBz
aG91bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpIGNvbnN0Owor
ICAgIFNjb3BlJiBkb2N1bWVudFNjb3BlKCk7CisgICAgYm9vbCBpc0ZvclVzZXJBZ2VudFNoYWRv
d1RyZWUoKSBjb25zdDsKIAogICAgIHZvaWQgZGlkUmVtb3ZlUGVuZGluZ1N0eWxlc2hlZXQoKTsK
IApAQCAtMTQ4LDYgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb2xsZWN0QWN0aXZlU3R5
bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0Pj4mKTsKIAogICAgIGVudW0gY2xhc3Mg
UmVzb2x2ZXJVcGRhdGVUeXBlIHsKKyAgICAgICAgTm9uZSwKICAgICAgICAgUmVjb25zdHJ1Y3Qs
CiAgICAgICAgIFJlc2V0LAogICAgICAgICBBZGRpdGl2ZQpAQCAtMTYwLDYgKzE2Miw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBZnRlclN0eWxlU2hlZXRDaGFuZ2UoY29u
c3QgU3R5bGVTaGVldENoYW5nZSYpOwogCiAgICAgdm9pZCB1cGRhdGVSZXNvbHZlcihWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiYsIFJlc29sdmVyVXBkYXRlVHlwZSk7CisgICAgdm9pZCBj
cmVhdGVEb2N1bWVudFJlc29sdmVyKCk7CisgICAgdm9pZCBjcmVhdGVPckZpbmRTaGFyZWRTaGFk
b3dUcmVlUmVzb2x2ZXIoKTsKKyAgICB2b2lkIHVuc2hhcmVTaGFkb3dUcmVlUmVzb2x2ZXJCZWZv
cmVNdXRhdGlvbigpOwogCiAgICAgRG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgU2hhZG93Um9v
dCogbV9zaGFkb3dSb290IHsgbnVsbHB0ciB9OwpAQCAtMTg4LDYgKzE5MywxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV91c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5IHsgZmFsc2UgfTsKICAgICBib29s
IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBmYWxzZSB9OworCisgICAgLy8gRklYTUU6IFRo
ZXNlIChhbmQgc29tZSB0aGluZ3MgYWJvdmUpIGFyZSBvbmx5IHJlbGV2YW50IGZvciB0aGUgcm9v
dCBzY29wZS4KKyAgICBSZWZQdHI8UmVzb2x2ZXI+IG1fc2hhcmVkVXNlckFnZW50U2hhZG93VHJl
ZVJlc29sdmVyOworICAgIFJlZlB0cjxSZXNvbHZlcj4gbV9zaGFyZWRFbXB0eUF1dGhvclNoYWRv
d1RyZWVSZXNvbHZlcjsKIH07CiAKIGlubGluZSBib29sIFNjb3BlOjpoYXNQZW5kaW5nU2hlZXRz
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxl
U2V0cy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKaW5kZXgg
OGRlYTkwMWFkYTlmLi43OWJiZGQxZjJlMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGVSdWxlU2V0cy5oCkBAIC02OSw4ICs2OSw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFz
Q29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRlKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNl
dElzRm9yU2hhZG93U2NvcGUoKSB7IG1faXNGb3JTaGFkb3dTY29wZSA9IHRydWU7IH0KLQogICAg
IHZvaWQgc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShib29sIGIpIHsgbV91c2VzU2hhcmVkVXNlclN0
eWxlID0gYjsgfQogICAgIHZvaWQgaW5pdGlhbGl6ZVVzZXJTdHlsZSgpOwogCkBAIC0xMTAsNyAr
MTA4LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fdXNlckFnZW50TWVkaWFR
dWVyeVJ1bGVDb3VudE9uVXBkYXRlIHsgMCB9OwogCiAgICAgYm9vbCBtX3VzZXNTaGFyZWRVc2Vy
U3R5bGUgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pc0ZvclNoYWRvd1Njb3BlIHsgZmFsc2UgfTsK
ICAgICBib29sIG1faXNBdXRob3JTdHlsZURlZmluZWQgeyBmYWxzZSB9OwogCiAgICAgLy8gRm9y
IGNhdGNoaW5nIDxyZGFyOi8vcHJvYmxlbS81MzQxMzAxMz4K
</data>
<flag name="commit-queue"
          id="447902"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427338</attachid>
            <date>2021-04-29 05:11:10 -0700</date>
            <delta_ts>2021-04-30 03:40:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver-3.patch</filename>
            <type>text/plain</type>
            <size>16355</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNThhODdlOGE4MDEuLmVhYTMxN2ZmNjIzNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDYyIEBACisyMDIxLTA0LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBTaGFyZSBzdHlsZSByZXNvbHZlcnMgYmV0d2VlbiBhdXRob3Igc2hhZG93
IHRyZWVzIHdpdGhvdXQgc3R5bGUgc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBQcmVwYXJlIGZvciBzaGFyaW5nIHN0eWxlIHJlc29sdmVycyAo
YW5kIGFsbCB0aGUgcmVsYXRlZCBkYXRhKSBiZXR3ZWVuIHNoYWRvdyB0cmVlcyBiZXlvbmQKKyAg
ICAgICAgdGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMuIFRo
aXMgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzaGFyaW5nIGNvZGUKKyAgICAgICAgYW5kIGFkZHMgc3Vw
cG9ydCBmb3Igc2hhcmluZyByZXNvbHZlcnMgZm9yIGF1dGhvciBzaGFkb3cgdHJlZXMgd2l0aG91
dCBzdHlsZSBzaGVldHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIp
OiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgTW92ZSB0aGUgc2hhcmVkIFVBIHJlc29sdmVy
IHRvIFN0eWxlOjpTY29wZS4KKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlJlc29sdmVyOjp3YXNTaGFyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJl
c29sdmVyOjpzZXRXYXNTaGFyZWQpOgorICAgICAgICAKKyAgICAgICAgQWRkIGEgYml0IGluZGlj
YXRpbmcgaWYgYSByZXNvbHZlciBoYXMgYmVlbiBzaGFyZWQgYmV0d2VlbiBzaGFkb3cgdHJlZXMu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpj
cmVhdGVEb2N1bWVudFJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6
Y3JlYXRlT3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKToKKyAgICAgICAgCisgICAgICAg
IEZhY3RvciBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIFNoYXJlIHVzZXIgYWdlbnQgc2hhZG93
IHRyZWUgcmVzb2x2ZXIgKGFzIGJlZm9yZSkgYW5kIGFsc28gcmVzb2x2ZXIgZm9yIGVtcHR5IGF1
dGhvciBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dW5z
aGFyZVNoYWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKToKKyAgICAgICAgCisgICAgICAg
IElmIHdlIG11dGF0ZSBhbiBleGlzdGluZyByZXNvbHZlciB3ZSBuZWVkIHRvIG1ha2UgaXQgdW5h
dmFpbGFibGUgZm9yIHNoYXJpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlNjb3BlOjpjbGVhclJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6
cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFuYWx5emVT
dHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgCisgICAgICAgIElmIHdlIGFyZSBhYm91dCB0byBt
dXRhdGUgYWxyZWFkeSBzaGFyZWQgcmVzb2x2ZXIgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25l
LgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZl
U3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAgICAgSWYgc3R5bGUgc2hlZXRzIGNoYW5nZSBh
bmQgdGhlIHJlc29sdmVyIGlzIHNoYXJlZCBhbHdheXMgbG9vayBpdCB1cCBhZ2FpbiAoc2luY2Ug
aXQgY2FuJ3QgYmUgbXV0YXRlZCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6
dXBkYXRlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzY2hlZHVs
ZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6Omluc2VydGVkSW5Eb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmRpZENoYW5nZVN0eWxlU2hl
ZXRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmRvY3VtZW50
U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjppc0ZvclVzZXJBZ2VudFNo
YWRvd1RyZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzaG91bGRV
c2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVySWZFeGlzdHMpOiBEZWxl
dGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29w
ZVJ1bGVTZXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6c2V0
SXNGb3JTaGFkb3dTY29wZSk6IERlbGV0ZWQuCisKIDIwMjEtMDQtMjYgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmNvdW50IFN0eWxlOjpSZXNvbHZlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmFlM2MzZGViOTEwLi4xYWQ5MjdmZDZkYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjM4MSwxMyArMjM4MSw2IEBAIHZvaWQgRG9jdW1l
bnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBh
Z2VTaXplLCBpbnQmCiAgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRv
KCkgPyBtYXJnaW5MZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwg
d2lkdGgpOwogfQogCi1TdHlsZTo6UmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dU
cmVlU3R5bGVSZXNvbHZlcigpCi17Ci0gICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHls
ZVJlc29sdmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0g
U3R5bGU6OlJlc29sdmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIHJldHVybiAqbV91c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKLX0KLQogdm9pZCBEb2N1bWVudDo6Zm9udHNOZWVkVXBk
YXRlKEZvbnRTZWxlY3RvciYpCiB7CiAgICAgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2Fj
aGVBbmRGb3JjZVN0eWxlUmVjYWxjKCk7CkBAIC0yNDAyLDExICsyMzk1LDYgQEAgdm9pZCBEb2N1
bWVudDo6aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxj
KCkKICAgICBzY2hlZHVsZUZ1bGxTdHlsZVJlYnVpbGQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6
ZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCkKLXsKLSAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHls
ZVJlc29sdmVyID0gbnVsbHB0cjsKLX0KLQogdm9pZCBEb2N1bWVudDo6c2V0SXNSZXNvbHZpbmdU
cmVlU3R5bGUoYm9vbCB2YWx1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZSAhPSBtX2lz
UmVzb2x2aW5nVHJlZVN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDhmMGEwNTZkMTg1
Li41MzQ2Njk0ZmMxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMzEzLDcgKzEzMTMsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFuZEZv
cmNlU3R5bGVSZWNhbGMoKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hl
ZXQoKTsKLSAgICB2b2lkIGRpZENsZWFyU3R5bGVSZXNvbHZlcigpOwogCiAgICAgYm9vbCBpblN0
eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1cm4gbV9pblN0eWxlUmVjYWxjOyB9CiAgICAgYm9vbCBp
blJlbmRlclRyZWVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2luUmVuZGVyVHJlZVVwZGF0ZTsg
fQpAQCAtMTc0MSw4ICsxNzQwLDYgQEAgcHJpdmF0ZToKIAogICAgIFVuaXF1ZVJlZjxRdWlya3M+
IG1fcXVpcmtzOwogCi0gICAgUmVmUHRyPFN0eWxlOjpSZXNvbHZlcj4gbV91c2VyQWdlbnRTaGFk
b3dUcmVlU3R5bGVSZXNvbHZlcjsKLQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZG9tV2luZG93
OwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fY29udGV4dERvY3VtZW50OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggNTE3NDkyYzllODM1Li5kNDg5NzhkMmVmZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKQEAgLTE0MCw2ICsxNDAsOSBAQCBwdWJs
aWM6CiAKICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJz
KCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzOyB9CiAKKyAgICBib29sIHdhc1No
YXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2hhcmVkOyB9CisgICAgdm9pZCBzZXRXYXNTaGFy
ZWQoKSB7IG1fd2FzU2hhcmVkID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBQYWdlUnVsZUNvbGxlY3RvcjsKIApAQCAtMTk2LDYgKzE5OSw4IEBAIHByaXZhdGU6CiAgICAg
TWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOwogCiAg
ICAgYm9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyB7IHRydWUgfTsKKyAgICBib29sIG1f
d2FzU2hhcmVkIHsgZmFsc2UgfTsKKwogICAgIC8vIFNlZSBpZiB3ZSBzdGlsbCBoYXZlIGNyYXNo
ZXMgd2hlcmUgUmVzb2x2ZXIgZ2V0cyBkZWxldGVkIGVhcmx5LgogICAgIGJvb2wgbV9pc0RlbGV0
ZWQgeyBmYWxzZSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKaW5kZXggYzhi
ZTgyYzNhYmIyLi5iN2MyNTU0ZTdlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuY3Bw
CkBAIC03NCw2MSArNzQsNzIgQEAgU2NvcGU6On5TY29wZSgpCiAgICAgQVNTRVJUKCFoYXNQZW5k
aW5nU2hlZXRzKCkpOwogfQogCi1ib29sIFNjb3BlOjpzaG91bGRVc2VTaGFyZWRVc2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpIGNvbnN0CitSZXNvbHZlciYgU2NvcGU6OnJlc29sdmVy
KCkKIHsKLSAgICBpZiAoIW1fc2hhZG93Um9vdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmIChtX3NoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgLy8gSWYgd2UgaGF2ZSBzdHlsZXNoZWV0cyBpbiB0
aGUgdXNlciBhZ2VudCBzaGFkb3cgdHJlZSB1c2UgcGVyLXNjb3BlIHJlc29sdmVyLgotICAgIGlm
ICghbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFtX3Jlc29sdmVyKSB7CisgICAgICAg
IGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgICAgICBjcmVhdGVPckZpbmRTaGFyZWRTaGFkb3dU
cmVlUmVzb2x2ZXIoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3JlYXRlRG9jdW1lbnRS
ZXNvbHZlcigpOworICAgIH0KKyAgICByZXR1cm4gKm1fcmVzb2x2ZXI7CiB9CiAKLVJlc29sdmVy
JiBTY29wZTo6cmVzb2x2ZXIoKQordm9pZCBTY29wZTo6Y3JlYXRlRG9jdW1lbnRSZXNvbHZlcigp
CiB7Ci0gICAgaWYgKHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyKCkpCi0gICAgICAgIHJldHVybiBtX2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1RyZWVTdHls
ZVJlc29sdmVyKCk7CisgICAgQVNTRVJUKCFtX3Jlc29sdmVyKTsKKyAgICBBU1NFUlQoIW1fc2hh
ZG93Um9vdCk7CiAKLSAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKLSAgICAgICAgU2V0Rm9yU2NvcGU8
Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVy
LCB0cnVlIH07CisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIg
eyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CiAKLSAgICAgICAgbV9yZXNvbHZl
ciA9IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgbV9yZXNvbHZlciA9IFJlc29s
dmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CiAKLSAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsK
LSAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7Ci0g
ICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLmluaXRpYWxpemVVc2VyU3R5bGUoKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuc2V0
SXNGb3JTaGFkb3dTY29wZSgpOwotICAgICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5z
ZXRVc2VzU2hhcmVkVXNlclN0eWxlKG1fc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RN
b2RlOjpVc2VyQWdlbnQpOwotICAgICAgICB9CisgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3Io
KS5idWlsZFN0YXJ0ZWQoKTsKIAotICAgICAgICBtX3Jlc29sdmVyLT5hZGRDdXJyZW50U1ZHRm9u
dEZhY2VSdWxlcygpOwotICAgICAgICBtX3Jlc29sdmVyLT5hcHBlbmRBdXRob3JTdHlsZVNoZWV0
cyhtX2FjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLmluaXRp
YWxpemVVc2VyU3R5bGUoKTsKKyAgICBtX3Jlc29sdmVyLT5hZGRDdXJyZW50U1ZHRm9udEZhY2VS
dWxlcygpOworICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZl
U3R5bGVTaGVldHMpOwogCi0gICAgICAgIGlmICghbV9zaGFkb3dSb290KQotICAgICAgICAgICAg
bV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZENvbXBsZXRlZCgpOworICAgIG1fZG9jdW1l
bnQuZm9udFNlbGVjdG9yKCkuYnVpbGRDb21wbGV0ZWQoKTsKK30KKwordm9pZCBTY29wZTo6Y3Jl
YXRlT3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKCkKK3sKKyAgICBBU1NFUlQoIW1fcmVz
b2x2ZXIpOworICAgIEFTU0VSVChtX3NoYWRvd1Jvb3QpOworCisgICAgaWYgKG1fYWN0aXZlU3R5
bGVTaGVldHMuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8mIHNoYXJlZFJlc29sdmVyID0gaXNG
b3JVc2VyQWdlbnRTaGFkb3dUcmVlKCkgPyBkb2N1bWVudFNjb3BlKCkubV9zaGFyZWRVc2VyQWdl
bnRTaGFkb3dUcmVlUmVzb2x2ZXIgOiBkb2N1bWVudFNjb3BlKCkubV9zaGFyZWRFbXB0eUF1dGhv
clNoYWRvd1RyZWVSZXNvbHZlcjsKKyAgICAgICAgaWYgKCFzaGFyZWRSZXNvbHZlcikgeworICAg
ICAgICAgICAgc2hhcmVkUmVzb2x2ZXIgPSBSZXNvbHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOwor
ICAgICAgICAgICAgc2hhcmVkUmVzb2x2ZXItPnJ1bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJT
dHlsZSghaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHNoYXJlZFJlc29sdmVyLT5zZXRXYXNTaGFyZWQoKTsKKworICAgICAgICBtX3Jlc29s
dmVyID0gc2hhcmVkUmVzb2x2ZXI7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJU
KCFtX3NoYWRvd1Jvb3QgfHwgJm1fZG9jdW1lbnQgPT0gJm1fc2hhZG93Um9vdC0+ZG9jdW1lbnQo
KSk7Ci0gICAgQVNTRVJUKCZtX3Jlc29sdmVyLT5kb2N1bWVudCgpID09ICZtX2RvY3VtZW50KTsK
LSAgICByZXR1cm4gKm1fcmVzb2x2ZXI7CisKKyAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNy
ZWF0ZShtX2RvY3VtZW50KTsKKworICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuc2V0VXNlc1No
YXJlZFVzZXJTdHlsZSghaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVlKCkpOworICAgIG1fcmVzb2x2
ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOwogfQogCi1S
ZXNvbHZlciogU2NvcGU6OnJlc29sdmVySWZFeGlzdHMoKQordm9pZCBTY29wZTo6dW5zaGFyZVNo
YWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKCkKIHsKLSAgICBpZiAoc2hvdWxkVXNlU2hh
cmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkKLSAgICAgICAgcmV0dXJuICZt
X2RvY3VtZW50LnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCk7CisgICAgQVNTRVJU
KG1fc2hhZG93Um9vdCk7CisgICAgQVNTRVJUKCFtX3Jlc29sdmVyLT53YXNTaGFyZWQoKSk7CiAK
LSAgICByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsKKyAgICBhdXRvJiBzaGFyZWRSZXNvbHZlciA9
IGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpID8gZG9jdW1lbnRTY29wZSgpLm1fc2hhcmVkVXNl
ckFnZW50U2hhZG93VHJlZVJlc29sdmVyIDogZG9jdW1lbnRTY29wZSgpLm1fc2hhcmVkRW1wdHlB
dXRob3JTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgCisgICAgaWYgKG1fcmVzb2x2ZXIgPT0gc2hh
cmVkUmVzb2x2ZXIpCisgICAgICAgIHNoYXJlZFJlc29sdmVyID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBTY29wZTo6Y2xlYXJSZXNvbHZlcigpCiB7CiAgICAgbV9yZXNvbHZlciA9IG51bGxwdHI7Ci0K
LSAgICBpZiAoIW1fc2hhZG93Um9vdCkKLSAgICAgICAgbV9kb2N1bWVudC5kaWRDbGVhclN0eWxl
UmVzb2x2ZXIoKTsKIH0KIAogdm9pZCBTY29wZTo6cmVsZWFzZU1lbW9yeSgpCkBAIC0xNDgsNiAr
MTU5LDkgQEAgdm9pZCBTY29wZTo6cmVsZWFzZU1lbW9yeSgpCiAgICAgfQogI2VuZGlmCiAgICAg
Y2xlYXJSZXNvbHZlcigpOworCisgICAgbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2
ZXIgPSBudWxscHRyOworICAgIG1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2ZXIg
PSBudWxscHRyOwogfQogCiBTY29wZSYgU2NvcGU6OmZvck5vZGUoTm9kZSYgbm9kZSkKQEAgLTM4
Myw3ICszOTcsMTEgQEAgU2NvcGU6OlN0eWxlU2hlZXRDaGFuZ2UgU2NvcGU6OmFuYWx5emVTdHls
ZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3QKIHsKICAgICB1bnNpZ25lZCBu
ZXdTdHlsZXNoZWV0Q291bnQgPSBuZXdTdHlsZXNoZWV0cy5zaXplKCk7CiAKLSAgICBpZiAoIXJl
c29sdmVySWZFeGlzdHMoKSkKKyAgICBhdXRvKiByZXNvbHZlciA9IHJlc29sdmVySWZFeGlzdHMo
KTsKKyAgICBpZiAoIXJlc29sdmVyKQorICAgICAgICByZXR1cm4geyBSZXNvbHZlclVwZGF0ZVR5
cGU6OlJlY29uc3RydWN0IH07CisKKyAgICBpZiAocmVzb2x2ZXItPndhc1NoYXJlZCgpKQogICAg
ICAgICByZXR1cm4geyBSZXNvbHZlclVwZGF0ZVR5cGU6OlJlY29uc3RydWN0IH07CiAKICAgICAv
LyBGaW5kIG91dCB3aGljaCBzdHlsZXNoZWV0cyBhcmUgbmV3LgpAQCAtNDUyLDggKzQ3MCwxMiBA
QCB2b2lkIFNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVUeXBlIHVwZGF0ZVR5
cGUpCiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAog
ICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwot
ICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50LmV4dGVuc2lv
blN0eWxlU2hlZXRzKCkuaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVD
U1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0
cygpLmF1dGhvclN0eWxlU2hlZXRzRm9yVGVzdGluZygpKTsKKworICAgIGlmICghaXNGb3JVc2Vy
QWdlbnRTaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5k
VmVjdG9yKG1fZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RlZEF1dGhvclN0
eWxlU2hlZXRzKCkpOworICAgICAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3Io
bV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0eWxlU2hlZXRzRm9yVGVz
dGluZygpKTsKKyAgICB9CisKICAgICBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0
cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgYXV0byBz
dHlsZVNoZWV0Q2hhbmdlID0gU3R5bGVTaGVldENoYW5nZSB7IFJlc29sdmVyVXBkYXRlVHlwZTo6
UmVjb25zdHJ1Y3QgfTsKQEAgLTQ5NiwxOSArNTE4LDI1IEBAIHZvaWQgU2NvcGU6OnVwZGF0ZVJl
c29sdmVyKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVTdHlsZVNoZWV0cywg
UmVzCiAgICAgICAgIGNsZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBhdXRvJiBzdHlsZVJlc29sdmVyID0gcmVzb2x2ZXIoKTsKKworICAgIGlmIChtX3NoYWRvd1Jv
b3QpCisgICAgICAgIHVuc2hhcmVTaGFkb3dUcmVlUmVzb2x2ZXJCZWZvcmVNdXRhdGlvbigpOwog
CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBk
YXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CisKICAgICBpZiAodXBkYXRlVHlwZSA9PSBSZXNv
bHZlclVwZGF0ZVR5cGU6OlJlc2V0KSB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMo
KS5yZXNldEF1dGhvclN0eWxlKCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuYXBwZW5kQXV0aG9y
U3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFT
U0VSVCh1cGRhdGVUeXBlID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRkaXRpdmUpOwotICAgICAg
ICB1bnNpZ25lZCBmaXJzdE5ld0luZGV4ID0gbV9hY3RpdmVTdHlsZVNoZWV0cy5zaXplKCk7Ci0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG5ld1N0eWxlU2hlZXRzOwotICAg
ICAgICBuZXdTdHlsZVNoZWV0cy5hcHBlbmRSYW5nZShhY3RpdmVTdHlsZVNoZWV0cy5iZWdpbigp
ICsgZmlyc3ROZXdJbmRleCwgYWN0aXZlU3R5bGVTaGVldHMuZW5kKCkpOwotICAgICAgICBzdHls
ZVJlc29sdmVyLmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG5ld1N0eWxlU2hlZXRzKTsKKyAgICAg
ICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxlKCk7CisgICAgICAgIG1f
cmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAg
ICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIEFTU0VSVCh1cGRhdGVUeXBlID09IFJlc29sdmVy
VXBkYXRlVHlwZTo6QWRkaXRpdmUpOworICAgIEFTU0VSVChhY3RpdmVTdHlsZVNoZWV0cy5zaXpl
KCkgPj0gbV9hY3RpdmVTdHlsZVNoZWV0cy5zaXplKCkpOworCisgICAgdW5zaWduZWQgZmlyc3RO
ZXdJbmRleCA9IG1fYWN0aXZlU3R5bGVTaGVldHMuc2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4+IG5ld1N0eWxlU2hlZXRzOworICAgIG5ld1N0eWxlU2hlZXRzLmFwcGVu
ZFJhbmdlKGFjdGl2ZVN0eWxlU2hlZXRzLmJlZ2luKCkgKyBmaXJzdE5ld0luZGV4LCBhY3RpdmVT
dHlsZVNoZWV0cy5lbmQoKSk7CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVl
dHMobmV3U3R5bGVTaGVldHMpOwogfQogCiBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQpAQCAtNTgxLDcgKzYw
OSw3IEBAIHZvaWQgU2NvcGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogICAg
IGlmICghbV9wZW5kaW5nVXBkYXRlIHx8ICptX3BlbmRpbmdVcGRhdGUgPCB1cGRhdGUpIHsKICAg
ICAgICAgbV9wZW5kaW5nVXBkYXRlID0gdXBkYXRlOwogICAgICAgICBpZiAobV9zaGFkb3dSb290
KQotICAgICAgICAgICAgbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9oYXNEZXNjZW5kYW50V2l0
aFBlbmRpbmdVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgZG9jdW1lbnRTY29wZSgpLm1faGFz
RGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlID0gdHJ1ZTsKICAgICB9CiAKICAgICBtX2RvY3Vt
ZW50LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgfSk7CkBAIC01OTIsNyArNjIwLDcgQEAgdm9p
ZCBTY29wZTo6aW5zZXJ0ZWRJbkRvY3VtZW50KCkKICAgICBpZiAoIW1fcGVuZGluZ1VwZGF0ZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9oYXNEZXNj
ZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgPSB0cnVlOworICAgIGRvY3VtZW50U2NvcGUoKS5tX2hh
c0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgbV9kb2N1bWVudC5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogfQogCkBAIC02NTksNiArNjg3LDkgQEAgdm9pZCBT
Y29wZTo6ZGlkQ2hhbmdlU3R5bGVTaGVldENvbnRlbnRzKCkKIHZvaWQgU2NvcGU6OmRpZENoYW5n
ZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpCiB7CiAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKKyAg
ICAgICAgbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXIgPSBudWxscHRyOworICAg
ICAgICBtX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKwog
ICAgICAgICBmb3IgKGF1dG8qIGRlc2NlbmRhbnRTaGFkb3dSb290IDogbV9kb2N1bWVudC5pbkRv
Y3VtZW50U2hhZG93Um9vdHMoKSkgewogICAgICAgICAgICAgLy8gU3R5bGVzaGVldHMgaXMgYXV0
aG9yIHNoYWRvdyByb290cyBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQuCiAgICAgICAgICAgICBp
ZiAoZGVzY2VuZGFudFNoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFn
ZW50KQpAQCAtNjg2LDUgKzcxNywxNSBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+
PiYgU2NvcGU6OnN0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3QoKQogICAgIHJldHVybiBtX3N0
eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Q7CiB9CiAKK1Njb3BlJiBTY29wZTo6ZG9jdW1lbnRT
Y29wZSgpCit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpOworfQorCitib29s
IFNjb3BlOjppc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSBjb25zdAoreworICAgIHJldHVybiBt
X3NoYWRvd1Jvb3QgJiYgbV9zaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudDsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IDdjMDcy
YTU5NTFiNi4uNDQ3YmFjYjBjNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0x
MTksNyArMTE5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNv
bHZlciYgcmVzb2x2ZXIoKTsKLSAgICBSZXNvbHZlciogcmVzb2x2ZXJJZkV4aXN0cygpOworICAg
IFJlc29sdmVyKiByZXNvbHZlcklmRXhpc3RzKCkgeyByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsg
fQogICAgIHZvaWQgY2xlYXJSZXNvbHZlcigpOwogICAgIHZvaWQgcmVsZWFzZU1lbW9yeSgpOwog
CkBAIC0xMzIsNyArMTMyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTY29wZSogZm9yT3JkaW5h
bChFbGVtZW50JiwgU2NvcGVPcmRpbmFsKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZFVz
ZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkgY29uc3Q7CisgICAgU2Nv
cGUmIGRvY3VtZW50U2NvcGUoKTsKKyAgICBib29sIGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgp
IGNvbnN0OwogCiAgICAgdm9pZCBkaWRSZW1vdmVQZW5kaW5nU3R5bGVzaGVldCgpOwogCkBAIC0x
NjAsNiArMTYxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUFmdGVyU3R5
bGVTaGVldENoYW5nZShjb25zdCBTdHlsZVNoZWV0Q2hhbmdlJik7CiAKICAgICB2b2lkIHVwZGF0
ZVJlc29sdmVyKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUmVzb2x2ZXJVcGRhdGVU
eXBlKTsKKyAgICB2b2lkIGNyZWF0ZURvY3VtZW50UmVzb2x2ZXIoKTsKKyAgICB2b2lkIGNyZWF0
ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNvbHZlcigpOworICAgIHZvaWQgdW5zaGFyZVNoYWRv
d1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKCk7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVu
dDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07CkBAIC0xODgsNiAr
MTkyLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1Vw
ZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IGZhbHNlIH07CisK
KyAgICAvLyBGSVhNRTogVGhlc2UgKGFuZCBzb21lIHRoaW5ncyBhYm92ZSkgYXJlIG9ubHkgcmVs
ZXZhbnQgZm9yIHRoZSByb290IHNjb3BlLgorICAgIFJlZlB0cjxSZXNvbHZlcj4gbV9zaGFyZWRV
c2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgUmVmUHRyPFJlc29sdmVyPiBtX3NoYXJl
ZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyOwogfTsKIAogaW5saW5lIGJvb2wgU2NvcGU6
Omhhc1BlbmRpbmdTaGVldHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuaAppbmRleCA4ZGVhOTAxYWRhOWYuLjc5YmJkZDFmMmUxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY5LDggKzY5LDYgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBoYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25z
dDsKIAotICAgIHZvaWQgc2V0SXNGb3JTaGFkb3dTY29wZSgpIHsgbV9pc0ZvclNoYWRvd1Njb3Bl
ID0gdHJ1ZTsgfQotCiAgICAgdm9pZCBzZXRVc2VzU2hhcmVkVXNlclN0eWxlKGJvb2wgYikgeyBt
X3VzZXNTaGFyZWRVc2VyU3R5bGUgPSBiOyB9CiAgICAgdm9pZCBpbml0aWFsaXplVXNlclN0eWxl
KCk7CiAKQEAgLTExMCw3ICsxMDgsNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQg
bV91c2VyQWdlbnRNZWRpYVF1ZXJ5UnVsZUNvdW50T25VcGRhdGUgeyAwIH07CiAKICAgICBib29s
IG1fdXNlc1NoYXJlZFVzZXJTdHlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRm9yU2hhZG93
U2NvcGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCB7IGZhbHNl
IH07CiAKICAgICAvLyBGb3IgY2F0Y2hpbmcgPHJkYXI6Ly9wcm9ibGVtLzUzNDEzMDEzPgo=
</data>
<flag name="review"
          id="447920"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427404</attachid>
            <date>2021-04-30 03:40:11 -0700</date>
            <delta_ts>2021-04-30 03:58:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver-4.patch</filename>
            <type>text/plain</type>
            <size>24704</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MDJlMDg4OWZiNWMuLmJmNDA0MDE5NDQ4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA0LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBTaGFyZSBzdHlsZSByZXNvbHZlcnMgYmV0d2VlbiBhdXRob3Igc2hhZG93IHRyZWVzIHdpdGhv
dXQgc3R5bGUgc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjUxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmlu
Zy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNC0yNiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBF
bWl0IG5ldyBHTElCIGJhc2VsaW5lcyBhZnRlciByMjc2NTg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmVjMjYx
NDZmNTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0
eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKKworKGRv
Y3VtZW50IHJlc29sdmVyIChpZGVudGlmaWVyPTApIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhz
aGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBy
dWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRp
Zmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1
dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkK
KyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9
MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3Ip
IChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNv
bHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj00KSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hh
ZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9NSkgKGF1dGhvciBydWxlIGNv
dW50PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTYpIChh
dXRob3IgcnVsZSBjb3VudD0xKSkKKworQWZ0ZXIgc3R5bGUgbXV0YXRpb24KKyhkb2N1bWVudCBy
ZXNvbHZlciAoaWRlbnRpZmllcj0wKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJv
b3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3Vu
dD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkg
KGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChp
ZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZl
ciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93
IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNvdW50
PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTQpIChhdXRo
b3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRp
Zmllcj01KSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1
dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTYpIChhdXRob3IgcnVsZSBjb3VudD0xKSkK
KyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9z
dHlsZS1yZXNvbHZlci1zaGFyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
c3R5bGUtcmVzb2x2ZXItc2hhcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMjFiODkzNWZkYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmcuaHRtbApAQCAtMCwwICsxLDU1
IEBACis8ZGl2IGlkPXRlc3RzPgorPGlucHV0PjwvaW5wdXQ+Cis8dGV4dGFyZWE+PC90ZXh0YXJl
YT4KKzxkaXYgaWQ9YT48L2Rpdj4KKzxkaXYgaWQ9Yj48L2Rpdj4KKzxkaXYgaWQ9Yz48L2Rpdj4K
KzxkaXYgaWQ9ZD48L2Rpdj4KKzxkaXYgaWQ9ZT48L2Rpdj4KKzxkaXYgaWQ9Zj48L2Rpdj4KKzxk
aXYgaWQ9Zz48L2Rpdj4KKzxkaXYgaWQ9aD48L2Rpdj4KKzwvZGl2PgorPHByZSBpZD1sb2c+PC9w
cmU+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGF0dGFjaFNoYWRvd1dpdGhTdHlsZShpZCwgc3R5bGUp
Cit7CisgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgaWQp
OworICAgIGNvbnN0IHNoYWRvdyA9IGVsZW1lbnQuYXR0YWNoU2hhZG93KHsgbW9kZTogIm9wZW4i
IH0pOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSBgCisgICAgICAgIDxzdHlsZT4keyBzdHlsZSB9
PC9zdHlsZT4KKyAgICAgICAgPGRpdj4keyBpZCB9PC9kaXY+CisgICAgYDsKK30KKworYXR0YWNo
U2hhZG93V2l0aFN0eWxlKCJhIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJiIiwgIiIp
OworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJjIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxl
KCJkIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJlIiwgImRpdiB7IGNvbG9yOiBncmVl
biB9Iik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImYiLCAiZGl2IHsgY29sb3I6IGdyZWVuIH0i
KTsKK2F0dGFjaFNoYWRvd1dpdGhTdHlsZSgiZyIsICJkaXYgeyBjb2xvcjogZ3JlZW4gfSIpOwor
YXR0YWNoU2hhZG93V2l0aFN0eWxlKCJoIiwgImRpdiB7IGNvbG9yOiBncmVlbiB9Iik7CisKK2lm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgbG9nLnRleHRDb250ZW50ICs9IGludGVybmFscy5k
dW1wU3R5bGVSZXNvbHZlcnMoKTsKKyAgICBsb2cudGV4dENvbnRlbnQgKz0gIlxuQWZ0ZXIgc3R5
bGUgbXV0YXRpb25cbiIKK30KKworYy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInN0eWxlIiku
dGV4dENvbnRlbnQgPSAiZGl2IHsgY29sb3I6IGdyZWVuIH0iOworCitjb25zdCBzdHlsZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworc3R5bGVFbGVtZW50LnRleHRD
b250ZW50ID0gImRpdiB7IGNvbG9yOiBibHVlIH0iOworZC5zaGFkb3dSb290LmFwcGVuZENoaWxk
KHN0eWxlRWxlbWVudCk7CisKK2Yuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpLnRl
eHRDb250ZW50ID0gIiI7CitoLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKS5yZW1v
dmUoKTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgbG9nLnRleHRDb250ZW50ICs9IGlu
dGVybmFscy5kdW1wU3R5bGVSZXNvbHZlcnMoKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjU4YTg3ZThhODAxLi5iZjA5MDkzODMwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAor
MjAyMS0wNC0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2hhcmUgc3R5bGUgcmVzb2x2ZXJzIGJldHdlZW4gYXV0aG9yIHNoYWRvdyB0cmVlcyB3aXRob3V0
IHN0eWxlIHNoZWV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAg
ICBQcmVwYXJlIGZvciBzaGFyaW5nIHN0eWxlIHJlc29sdmVycyAoYW5kIGFsbCB0aGUgcmVsYXRl
ZCBkYXRhKSBiZXR3ZWVuIHNoYWRvdyB0cmVlcyBiZXlvbmQKKyAgICAgICAgdGhlIGN1cnJlbnRs
eSBzdXBwb3J0ZWQgdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMuIFRoaXMgcGF0Y2ggcmVmYWN0b3Jz
IHRoZSBzaGFyaW5nIGNvZGUKKyAgICAgICAgYW5kIGFkZHMgc3VwcG9ydCBmb3Igc2hhcmluZyBy
ZXNvbHZlcnMgZm9yIGF1dGhvciBzaGFkb3cgdHJlZXMgd2l0aG91dCBzdHlsZSBzaGVldHMuCisg
ICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hh
cmluZy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIpOiBEZWxl
dGVkLgorICAgICAgICAKKyAgICAgICAgTW92ZSB0aGUgc2hhcmVkIFVBIHJlc29sdmVyIHRvIFN0
eWxlOjpTY29wZS4KKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogc3R5bGUvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29s
dmVyOjp3YXNTaGFyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVy
OjpzZXRXYXNTaGFyZWQpOgorICAgICAgICAKKyAgICAgICAgQWRkIGEgYml0IGluZGljYXRpbmcg
aWYgYSByZXNvbHZlciBoYXMgYmVlbiBzaGFyZWQgYmV0d2VlbiBzaGFkb3cgdHJlZXMuCisKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjcmVhdGVE
b2N1bWVudFJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6Y3JlYXRl
T3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKToKKyAgICAgICAgCisgICAgICAgIEZhY3Rv
ciBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIFNoYXJlIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUg
cmVzb2x2ZXIgKGFzIGJlZm9yZSkgYW5kIGFsc28gcmVzb2x2ZXIgZm9yIGVtcHR5IGF1dGhvciBz
aGFkb3cgdHJlZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dW5zaGFyZVNo
YWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKToKKyAgICAgICAgCisgICAgICAgIElmIHdl
IG11dGF0ZSBhbiBleGlzdGluZyByZXNvbHZlciB3ZSBuZWVkIHRvIG1ha2UgaXQgdW5hdmFpbGFi
bGUgZm9yIHNoYXJpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3Bl
OjpjbGVhclJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVsZWFz
ZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFuYWx5emVTdHlsZVNo
ZWV0Q2hhbmdlKToKKyAgICAgICAgCisgICAgICAgIElmIHdlIGFyZSBhYm91dCB0byBtdXRhdGUg
YWxyZWFkeSBzaGFyZWQgcmVzb2x2ZXIgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25lLgorICAg
ICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVT
aGVldHMpOgorICAgICAgICAKKyAgICAgICAgSWYgc3R5bGUgc2hlZXRzIGNoYW5nZSBhbmQgdGhl
IHJlc29sdmVyIGlzIHNoYXJlZCBhbHdheXMgbG9vayBpdCB1cCBhZ2FpbiAoc2luY2UgaXQgY2Fu
J3QgYmUgbXV0YXRlZCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRl
UmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzY2hlZHVsZVVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6Omluc2VydGVkSW5Eb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZp
cm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmRvY3VtZW50U2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjppc0ZvclVzZXJBZ2VudFNoYWRvd1Ry
ZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzaG91bGRVc2VTaGFy
ZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVySWZFeGlzdHMpOiBEZWxldGVkLgor
ICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6c2V0SXNGb3JT
aGFkb3dTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBT
dHlsZVJlc29sdmVycyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgIAorICAgICAgICBUZXN0aW5nIHN1cHBv
cnQuCisKIDIwMjEtMDQtMjYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZmNvdW50IFN0eWxlOjpSZXNvbHZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggMmFlM2MzZGViOTEwLi4xYWQ5MjdmZDZkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjM4MSwxMyArMjM4MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0lu
UGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAgICAgbWFyZ2lu
TGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogaW50VmFs
dWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgpOwogfQogCi1TdHlsZTo6UmVz
b2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCi17Ci0g
ICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3Vz
ZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gU3R5bGU6OlJlc29sdmVyOjpjcmVhdGUo
KnRoaXMpOwotICAgIHJldHVybiAqbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsK
LX0KLQogdm9pZCBEb2N1bWVudDo6Zm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpCiB7CiAg
ICAgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCk7
CkBAIC0yNDAyLDExICsyMzk1LDYgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCkKICAgICBzY2hlZHVsZUZ1bGxTdHls
ZVJlYnVpbGQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCkK
LXsKLSAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbnVsbHB0cjsKLX0K
LQogdm9pZCBEb2N1bWVudDo6c2V0SXNSZXNvbHZpbmdUcmVlU3R5bGUoYm9vbCB2YWx1ZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZSAhPSBtX2lzUmVzb2x2aW5nVHJlZVN0eWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggMDhmMGEwNTZkMTg1Li42ZTE0Y2NmNGYwMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMzEzLDcgKzEzMTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZh
bGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFuZEZvcmNlU3R5bGVSZWNhbGMoKTsKIAogICAg
IHZvaWQgZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQoKTsKLSAgICB2b2lkIGRpZENsZWFy
U3R5bGVSZXNvbHZlcigpOwogCiAgICAgYm9vbCBpblN0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1
cm4gbV9pblN0eWxlUmVjYWxjOyB9CiAgICAgYm9vbCBpblJlbmRlclRyZWVVcGRhdGUoKSBjb25z
dCB7IHJldHVybiBtX2luUmVuZGVyVHJlZVVwZGF0ZTsgfQpAQCAtMTQ2Miw3ICsxNDYxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaWRJbnNlcnRJbkRvY3VtZW50U2hhZG93Um9vdChTaGFkb3dS
b290Jik7CiAgICAgdm9pZCBkaWRSZW1vdmVJbkRvY3VtZW50U2hhZG93Um9vdChTaGFkb3dSb290
Jik7Ci0gICAgY29uc3QgSGFzaFNldDxTaGFkb3dSb290Kj4mIGluRG9jdW1lbnRTaGFkb3dSb290
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Eb2N1bWVudFNoYWRvd1Jvb3RzOyB9CisgICAgY29uc3Qg
TGlzdEhhc2hTZXQ8U2hhZG93Um9vdCo+JiBpbkRvY3VtZW50U2hhZG93Um9vdHMoKSBjb25zdCB7
IHJldHVybiBtX2luRG9jdW1lbnRTaGFkb3dSb290czsgfQogCiAgICAgdm9pZCBhdHRhY2hUb0Nh
Y2hlZEZyYW1lKENhY2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgZGV0YWNoRnJvbUNhY2hlZEZy
YW1lKENhY2hlZEZyYW1lQmFzZSYpOwpAQCAtMTc0MSw4ICsxNzQwLDYgQEAgcHJpdmF0ZToKIAog
ICAgIFVuaXF1ZVJlZjxRdWlya3M+IG1fcXVpcmtzOwogCi0gICAgUmVmUHRyPFN0eWxlOjpSZXNv
bHZlcj4gbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKLQogICAgIFJlZlB0cjxE
T01XaW5kb3c+IG1fZG9tV2luZG93OwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fY29udGV4dERv
Y3VtZW50OwogCkBAIC0xOTk0LDcgKzE5OTEsNyBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0
PE1lZGlhUHJvZHVjZXI+IG1fYXVkaW9Qcm9kdWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNv
Z25pdGlvbj4gbV9hY3RpdmVTcGVlY2hSZWNvZ25pdGlvbjsKIAotICAgIEhhc2hTZXQ8U2hhZG93
Um9vdCo+IG1faW5Eb2N1bWVudFNoYWRvd1Jvb3RzOworICAgIExpc3RIYXNoU2V0PFNoYWRvd1Jv
b3QqPiBtX2luRG9jdW1lbnRTaGFkb3dSb290czsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgdXNpbmcgVGFyZ2V0SWRUb0NsaWVudE1hcCA9IEhhc2hNYXA8UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENsaWVudCo+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggZGFiMDk4ZGVkNzFm
Li41NzMxYmNmMWRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBUcmVlU2NvcGU6OnJvb3ROb2RlOwogCi0gICAgU3R5bGU6
OlNjb3BlJiBzdHlsZVNjb3BlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3R5bGU6OlNjb3BlJiBz
dHlsZVNjb3BlKCk7CiAgICAgU3R5bGVTaGVldExpc3QmIHN0eWxlU2hlZXRzKCk7CiAKICAgICBi
b29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUlu
aGVyaXRhbmNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggNTE3NDky
YzllODM1Li42OTc3Y2M3YTNlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgK
QEAgLTE0MCw2ICsxNDAsOSBAQCBwdWJsaWM6CiAKICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
JiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOyB9CiAKKyAgICBib29sIGlzU2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1NoYXJlZEJldHdlZW5TaGFkb3dUcmVlczsgfQorICAgIHZvaWQgc2V0U2hhcmVk
QmV0d2VlblNoYWRvd1RyZWVzKCkgeyBtX2lzU2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzID0gdHJ1
ZTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQYWdlUnVsZUNvbGxlY3RvcjsKIApA
QCAtMTk2LDYgKzE5OSw4IEBAIHByaXZhdGU6CiAgICAgTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hl
IG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOwogCiAgICAgYm9vbCBtX21hdGNoQXV0aG9yQW5k
VXNlclN0eWxlcyB7IHRydWUgfTsKKyAgICBib29sIG1faXNTaGFyZWRCZXR3ZWVuU2hhZG93VHJl
ZXMgeyBmYWxzZSB9OworCiAgICAgLy8gU2VlIGlmIHdlIHN0aWxsIGhhdmUgY3Jhc2hlcyB3aGVy
ZSBSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHkuCiAgICAgYm9vbCBtX2lzRGVsZXRlZCB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRleCBjOGJlODJjM2Fi
YjIuLjk5ZWQyNzUyMjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTc0
LDYxICs3NCw3MiBAQCBTY29wZTo6flNjb3BlKCkKICAgICBBU1NFUlQoIWhhc1BlbmRpbmdTaGVl
dHMoKSk7CiB9CiAKLWJvb2wgU2NvcGU6OnNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyKCkgY29uc3QKK1Jlc29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQogewot
ICAgIGlmICghbV9zaGFkb3dSb290KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
c2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAvLyBJZiB3ZSBoYXZlIHN0eWxlc2hlZXRzIGluIHRoZSB1c2Vy
IGFnZW50IHNoYWRvdyB0cmVlIHVzZSBwZXItc2NvcGUgcmVzb2x2ZXIuCi0gICAgaWYgKCFtX3N0
eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKKyAgICAgICAgaWYgKG1f
c2hhZG93Um9vdCkKKyAgICAgICAgICAgIGNyZWF0ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNv
bHZlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmVhdGVEb2N1bWVudFJlc29sdmVy
KCk7CisgICAgfQorICAgIHJldHVybiAqbV9yZXNvbHZlcjsKIH0KIAotUmVzb2x2ZXImIFNjb3Bl
OjpyZXNvbHZlcigpCit2b2lkIFNjb3BlOjpjcmVhdGVEb2N1bWVudFJlc29sdmVyKCkKIHsKLSAg
ICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkK
LSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQudXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2
ZXIoKTsKKyAgICBBU1NFUlQoIW1fcmVzb2x2ZXIpOworICAgIEFTU0VSVCghbV9zaGFkb3dSb290
KTsKIAotICAgIGlmICghbV9yZXNvbHZlcikgewotICAgICAgICBTZXRGb3JTY29wZTxib29sPiBp
c1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUg
fTsKKyAgICBTZXRGb3JTY29wZTxib29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNV
cGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUgfTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gUmVz
b2x2ZXI6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNy
ZWF0ZShtX2RvY3VtZW50KTsKIAotICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewotICAgICAg
ICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKLSAgICAgICAg
ICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuaW5pdGlhbGl6ZVVzZXJTdHlsZSgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5zZXRJc0ZvclNo
YWRvd1Njb3BlKCk7Ci0gICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnNldFVzZXNT
aGFyZWRVc2VyU3R5bGUobV9zaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudCk7Ci0gICAgICAgIH0KKyAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxk
U3RhcnRlZCgpOwogCi0gICAgICAgIG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1
bGVzKCk7Ci0gICAgICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0
aXZlU3R5bGVTaGVldHMpOworICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuaW5pdGlhbGl6ZVVz
ZXJTdHlsZSgpOworICAgIG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7
CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNo
ZWV0cyk7CiAKLSAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAgICAgICBtX2RvY3Vt
ZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkQ29tcGxldGVkKCk7CisgICAgbV9kb2N1bWVudC5mb250
U2VsZWN0b3IoKS5idWlsZENvbXBsZXRlZCgpOworfQorCit2b2lkIFNjb3BlOjpjcmVhdGVPckZp
bmRTaGFyZWRTaGFkb3dUcmVlUmVzb2x2ZXIoKQoreworICAgIEFTU0VSVCghbV9yZXNvbHZlcik7
CisgICAgQVNTRVJUKG1fc2hhZG93Um9vdCk7CisKKyAgICBpZiAobV9hY3RpdmVTdHlsZVNoZWV0
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgc2hhcmVkUmVzb2x2ZXIgPSBpc0ZvclVzZXJB
Z2VudFNoYWRvd1RyZWUoKSA/IGRvY3VtZW50U2NvcGUoKS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRv
d1RyZWVSZXNvbHZlciA6IGRvY3VtZW50U2NvcGUoKS5tX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93
VHJlZVJlc29sdmVyOworICAgICAgICBpZiAoIXNoYXJlZFJlc29sdmVyKSB7CisgICAgICAgICAg
ICBzaGFyZWRSZXNvbHZlciA9IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgICAg
ICAgICBzaGFyZWRSZXNvbHZlci0+cnVsZVNldHMoKS5zZXRVc2VzU2hhcmVkVXNlclN0eWxlKCFp
c0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
c2hhcmVkUmVzb2x2ZXItPnNldFNoYXJlZEJldHdlZW5TaGFkb3dUcmVlcygpOworCisgICAgICAg
IG1fcmVzb2x2ZXIgPSBzaGFyZWRSZXNvbHZlcjsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBBU1NFUlQoIW1fc2hhZG93Um9vdCB8fCAmbV9kb2N1bWVudCA9PSAmbV9zaGFkb3dSb290LT5k
b2N1bWVudCgpKTsKLSAgICBBU1NFUlQoJm1fcmVzb2x2ZXItPmRvY3VtZW50KCkgPT0gJm1fZG9j
dW1lbnQpOwotICAgIHJldHVybiAqbV9yZXNvbHZlcjsKKworICAgIG1fcmVzb2x2ZXIgPSBSZXNv
bHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOworCisgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5z
ZXRVc2VzU2hhcmVkVXNlclN0eWxlKCFpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAg
bV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNoZWV0cyk7
CiB9CiAKLVJlc29sdmVyKiBTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cygpCit2b2lkIFNjb3BlOjp1
bnNoYXJlU2hhZG93VHJlZVJlc29sdmVyQmVmb3JlTXV0YXRpb24oKQogewotICAgIGlmIChzaG91
bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpKQotICAgICAgICBy
ZXR1cm4gJm1fZG9jdW1lbnQudXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAg
ICBBU1NFUlQobV9zaGFkb3dSb290KTsKKyAgICBBU1NFUlQoIW1fcmVzb2x2ZXItPmlzU2hhcmVk
QmV0d2VlblNoYWRvd1RyZWVzKCkpOwogCi0gICAgcmV0dXJuIG1fcmVzb2x2ZXIuZ2V0KCk7Cisg
ICAgYXV0byYgc2hhcmVkUmVzb2x2ZXIgPSBpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IGRv
Y3VtZW50U2NvcGUoKS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlciA6IGRvY3Vt
ZW50U2NvcGUoKS5tX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyOworICAgIAor
ICAgIGlmIChtX3Jlc29sdmVyID09IHNoYXJlZFJlc29sdmVyKQorICAgICAgICBzaGFyZWRSZXNv
bHZlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU2NvcGU6OmNsZWFyUmVzb2x2ZXIoKQogewogICAg
IG1fcmVzb2x2ZXIgPSBudWxscHRyOwotCi0gICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAg
IG1fZG9jdW1lbnQuZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKIHZvaWQgU2NvcGU6OnJl
bGVhc2VNZW1vcnkoKQpAQCAtMTQ4LDYgKzE1OSw5IEBAIHZvaWQgU2NvcGU6OnJlbGVhc2VNZW1v
cnkoKQogICAgIH0KICNlbmRpZgogICAgIGNsZWFyUmVzb2x2ZXIoKTsKKworICAgIG1fc2hhcmVk
VXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKyAgICBtX3NoYXJlZEVtcHR5
QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKIH0KIAogU2NvcGUmIFNjb3BlOjpm
b3JOb2RlKE5vZGUmIG5vZGUpCkBAIC0zODMsNyArMzk3LDExIEBAIFNjb3BlOjpTdHlsZVNoZWV0
Q2hhbmdlIFNjb3BlOjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0CiB7CiAgICAgdW5zaWduZWQgbmV3U3R5bGVzaGVldENvdW50ID0gbmV3U3R5bGVzaGVl
dHMuc2l6ZSgpOwogCi0gICAgaWYgKCFyZXNvbHZlcklmRXhpc3RzKCkpCisgICAgYXV0byogcmVz
b2x2ZXIgPSByZXNvbHZlcklmRXhpc3RzKCk7CisgICAgaWYgKCFyZXNvbHZlcikKKyAgICAgICAg
cmV0dXJuIHsgUmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNvbnN0cnVjdCB9OworCisgICAgaWYgKHJl
c29sdmVyLT5pc1NoYXJlZEJldHdlZW5TaGFkb3dUcmVlcygpKQogICAgICAgICByZXR1cm4geyBS
ZXNvbHZlclVwZGF0ZVR5cGU6OlJlY29uc3RydWN0IH07CiAKICAgICAvLyBGaW5kIG91dCB3aGlj
aCBzdHlsZXNoZWV0cyBhcmUgbmV3LgpAQCAtNDUyLDggKzQ3MCwxMiBAQCB2b2lkIFNjb3BlOjp1
cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAgICAgY29sbGVj
dEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0
eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50LmV4dGVuc2lvblN0eWxlU2hlZXRzKCku
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5h
cHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0eWxl
U2hlZXRzRm9yVGVzdGluZygpKTsKKworICAgIGlmICghaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVl
KCkpIHsKKyAgICAgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1l
bnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwor
ICAgICAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRl
bnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0eWxlU2hlZXRzRm9yVGVzdGluZygpKTsKKyAgICB9
CisKICAgICBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHls
ZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgYXV0byBzdHlsZVNoZWV0Q2hhbmdl
ID0gU3R5bGVTaGVldENoYW5nZSB7IFJlc29sdmVyVXBkYXRlVHlwZTo6UmVjb25zdHJ1Y3QgfTsK
QEAgLTQ5NiwxOSArNTE4LDI1IEBAIHZvaWQgU2NvcGU6OnVwZGF0ZVJlc29sdmVyKFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVTdHlsZVNoZWV0cywgUmVzCiAgICAgICAgIGNs
ZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBzdHlsZVJl
c29sdmVyID0gcmVzb2x2ZXIoKTsKKworICAgIGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgIHVu
c2hhcmVTaGFkb3dUcmVlUmVzb2x2ZXJCZWZvcmVNdXRhdGlvbigpOwogCiAgICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29s
dmVyLCB0cnVlIH07CisKICAgICBpZiAodXBkYXRlVHlwZSA9PSBSZXNvbHZlclVwZGF0ZVR5cGU6
OlJlc2V0KSB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5yZXNldEF1dGhvclN0
eWxlKCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoYWN0
aXZlU3R5bGVTaGVldHMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCh1cGRhdGVUeXBl
ID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRkaXRpdmUpOwotICAgICAgICB1bnNpZ25lZCBmaXJz
dE5ld0luZGV4ID0gbV9hY3RpdmVTdHlsZVNoZWV0cy5zaXplKCk7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG5ld1N0eWxlU2hlZXRzOwotICAgICAgICBuZXdTdHlsZVNo
ZWV0cy5hcHBlbmRSYW5nZShhY3RpdmVTdHlsZVNoZWV0cy5iZWdpbigpICsgZmlyc3ROZXdJbmRl
eCwgYWN0aXZlU3R5bGVTaGVldHMuZW5kKCkpOwotICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGVu
ZEF1dGhvclN0eWxlU2hlZXRzKG5ld1N0eWxlU2hlZXRzKTsKKyAgICAgICAgbV9yZXNvbHZlci0+
cnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxlKCk7CisgICAgICAgIG1fcmVzb2x2ZXItPmFwcGVu
ZEF1dGhvclN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIEFTU0VSVCh1cGRhdGVUeXBlID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRk
aXRpdmUpOworICAgIEFTU0VSVChhY3RpdmVTdHlsZVNoZWV0cy5zaXplKCkgPj0gbV9hY3RpdmVT
dHlsZVNoZWV0cy5zaXplKCkpOworCisgICAgdW5zaWduZWQgZmlyc3ROZXdJbmRleCA9IG1fYWN0
aXZlU3R5bGVTaGVldHMuc2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+
IG5ld1N0eWxlU2hlZXRzOworICAgIG5ld1N0eWxlU2hlZXRzLmFwcGVuZFJhbmdlKGFjdGl2ZVN0
eWxlU2hlZXRzLmJlZ2luKCkgKyBmaXJzdE5ld0luZGV4LCBhY3RpdmVTdHlsZVNoZWV0cy5lbmQo
KSk7CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobmV3U3R5bGVTaGVl
dHMpOwogfQogCiBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0
aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQpAQCAtNTgxLDcgKzYwOSw3IEBAIHZvaWQgU2Nv
cGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogICAgIGlmICghbV9wZW5kaW5n
VXBkYXRlIHx8ICptX3BlbmRpbmdVcGRhdGUgPCB1cGRhdGUpIHsKICAgICAgICAgbV9wZW5kaW5n
VXBkYXRlID0gdXBkYXRlOwogICAgICAgICBpZiAobV9zaGFkb3dSb290KQotICAgICAgICAgICAg
bV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUg
PSB0cnVlOworICAgICAgICAgICAgZG9jdW1lbnRTY29wZSgpLm1faGFzRGVzY2VuZGFudFdpdGhQ
ZW5kaW5nVXBkYXRlID0gdHJ1ZTsKICAgICB9CiAKICAgICBtX2RvY3VtZW50LnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKHsgfSk7CkBAIC01OTIsNyArNjIwLDcgQEAgdm9pZCBTY29wZTo6aW5zZXJ0
ZWRJbkRvY3VtZW50KCkKICAgICBpZiAoIW1fcGVuZGluZ1VwZGF0ZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRp
bmdVcGRhdGUgPSB0cnVlOworICAgIGRvY3VtZW50U2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgbV9kb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSh7IH0pOwogfQogCkBAIC02NTksNiArNjg3LDkgQEAgdm9pZCBTY29wZTo6ZGlkQ2hhbmdl
U3R5bGVTaGVldENvbnRlbnRzKCkKIHZvaWQgU2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZp
cm9ubWVudCgpCiB7CiAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKKyAgICAgICAgbV9zaGFyZWRV
c2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXIgPSBudWxscHRyOworICAgICAgICBtX3NoYXJlZEVt
cHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKwogICAgICAgICBmb3IgKGF1
dG8qIGRlc2NlbmRhbnRTaGFkb3dSb290IDogbV9kb2N1bWVudC5pbkRvY3VtZW50U2hhZG93Um9v
dHMoKSkgewogICAgICAgICAgICAgLy8gU3R5bGVzaGVldHMgaXMgYXV0aG9yIHNoYWRvdyByb290
cyBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQuCiAgICAgICAgICAgICBpZiAoZGVzY2VuZGFudFNo
YWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQpAQCAtNjg2LDUg
KzcxNywxNSBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgU2NvcGU6OnN0eWxl
U2hlZXRzRm9yU3R5bGVTaGVldExpc3QoKQogICAgIHJldHVybiBtX3N0eWxlU2hlZXRzRm9yU3R5
bGVTaGVldExpc3Q7CiB9CiAKK1Njb3BlJiBTY29wZTo6ZG9jdW1lbnRTY29wZSgpCit7CisgICAg
cmV0dXJuIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpOworfQorCitib29sIFNjb3BlOjppc0ZvclVz
ZXJBZ2VudFNoYWRvd1RyZWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRvd1Jvb3QgJiYg
bV9zaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudDsKK30KKwog
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IDdjMDcyYTU5NTFiNi4uNDQ3YmFj
YjBjNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xMTksNyArMTE5LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvbHZlciYgcmVzb2x2ZXIo
KTsKLSAgICBSZXNvbHZlciogcmVzb2x2ZXJJZkV4aXN0cygpOworICAgIFJlc29sdmVyKiByZXNv
bHZlcklmRXhpc3RzKCkgeyByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsgfQogICAgIHZvaWQgY2xl
YXJSZXNvbHZlcigpOwogICAgIHZvaWQgcmVsZWFzZU1lbW9yeSgpOwogCkBAIC0xMzIsNyArMTMy
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTY29wZSogZm9yT3JkaW5hbChFbGVtZW50JiwgU2Nv
cGVPcmRpbmFsKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZFVzZVNoYXJlZFVzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkgY29uc3Q7CisgICAgU2NvcGUmIGRvY3VtZW50U2Nv
cGUoKTsKKyAgICBib29sIGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpIGNvbnN0OwogCiAgICAg
dm9pZCBkaWRSZW1vdmVQZW5kaW5nU3R5bGVzaGVldCgpOwogCkBAIC0xNjAsNiArMTYxLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUFmdGVyU3R5bGVTaGVldENoYW5nZShj
b25zdCBTdHlsZVNoZWV0Q2hhbmdlJik7CiAKICAgICB2b2lkIHVwZGF0ZVJlc29sdmVyKFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUmVzb2x2ZXJVcGRhdGVUeXBlKTsKKyAgICB2b2lk
IGNyZWF0ZURvY3VtZW50UmVzb2x2ZXIoKTsKKyAgICB2b2lkIGNyZWF0ZU9yRmluZFNoYXJlZFNo
YWRvd1RyZWVSZXNvbHZlcigpOworICAgIHZvaWQgdW5zaGFyZVNoYWRvd1RyZWVSZXNvbHZlckJl
Zm9yZU11dGF0aW9uKCk7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBTaGFkb3dS
b290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07CkBAIC0xODgsNiArMTkyLDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IGZhbHNlIH07CisKKyAgICAvLyBGSVhNRTog
VGhlc2UgKGFuZCBzb21lIHRoaW5ncyBhYm92ZSkgYXJlIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSBy
b290IHNjb3BlLgorICAgIFJlZlB0cjxSZXNvbHZlcj4gbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dU
cmVlUmVzb2x2ZXI7CisgICAgUmVmUHRyPFJlc29sdmVyPiBtX3NoYXJlZEVtcHR5QXV0aG9yU2hh
ZG93VHJlZVJlc29sdmVyOwogfTsKIAogaW5saW5lIGJvb2wgU2NvcGU6Omhhc1BlbmRpbmdTaGVl
dHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1
bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRl
eCA4ZGVhOTAxYWRhOWYuLjc5YmJkZDFmMmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY5LDggKzY5LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25zdDsKIAotICAgIHZvaWQg
c2V0SXNGb3JTaGFkb3dTY29wZSgpIHsgbV9pc0ZvclNoYWRvd1Njb3BlID0gdHJ1ZTsgfQotCiAg
ICAgdm9pZCBzZXRVc2VzU2hhcmVkVXNlclN0eWxlKGJvb2wgYikgeyBtX3VzZXNTaGFyZWRVc2Vy
U3R5bGUgPSBiOyB9CiAgICAgdm9pZCBpbml0aWFsaXplVXNlclN0eWxlKCk7CiAKQEAgLTExMCw3
ICsxMDgsNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQgbV91c2VyQWdlbnRNZWRp
YVF1ZXJ5UnVsZUNvdW50T25VcGRhdGUgeyAwIH07CiAKICAgICBib29sIG1fdXNlc1NoYXJlZFVz
ZXJTdHlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRm9yU2hhZG93U2NvcGUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCB7IGZhbHNlIH07CiAKICAgICAvLyBG
b3IgY2F0Y2hpbmcgPHJkYXI6Ly9wcm9ibGVtLzUzNDEzMDEzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGIyMzliZTFjMzcyMC4uNDMyZDk3OTUxOWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MjcyLDQgKzYyNzIsMzkgQEAgYm9vbCBJbnRl
cm5hbHM6OnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmIGEsIGNvbnN0
IEFic3RyYWN0UmFuZ2UKICAgICByZXR1cm4gaW50ZXJzZWN0c0ZvclRlc3RpbmcoY29udmVydFR5
cGUodHlwZSksIG1ha2VTaW1wbGVSYW5nZShhKSwgbWFrZVNpbXBsZVJhbmdlKGIpKTsKIH0KIAor
U3RyaW5nIEludGVybmFsczo6ZHVtcFN0eWxlUmVzb2x2ZXJzKCkKK3sKKyAgICBhdXRvKiBkb2N1
bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50
LT5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGRvY3VtZW50LT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICB1bnNpZ25lZCBjdXJyZW50SWRlbnRpZmllciA9IDA7
CisgICAgSGFzaE1hcDxTdHlsZTo6UmVzb2x2ZXIqLCB1bnNpZ25lZD4gcmVzb2x2ZXJJZGVudGlm
aWVyczsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworCisgICAgYXV0byBkdW1wUmVzb2x2
ZXIgPSBbJl0oYXV0byBuYW1lLCBhdXRvJiByZXNvbHZlcikgeworICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSByZXNvbHZlcklkZW50aWZpZXJzLmVuc3VyZSgmcmVzb2x2ZXIsIFsmXSB7CisgICAg
ICAgICAgICByZXR1cm4gY3VycmVudElkZW50aWZpZXIrKzsKKyAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOworCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIigiLCBuYW1lLCAiICIpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKCIoaWRlbnRpZmllcj0iLCBpZGVudGlmaWVyLCAiKSAiKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiKGF1dGhvciBydWxlIGNvdW50PSIsIHJlc29sdmVyLnJ1bGVTZXRz
KCkuYXV0aG9yU3R5bGUoKS5ydWxlQ291bnQoKSwgIikiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiKVxuIik7CisgICAgfTsKKworICAgIGR1bXBSZXNvbHZlcigiZG9jdW1lbnQgcmVzb2x2ZXIi
LCBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkpOworCisgICAgZm9yIChhdXRvKiBz
aGFkb3dSb290IDogZG9jdW1lbnQtPmluRG9jdW1lbnRTaGFkb3dSb290cygpKSB7CisgICAgICAg
IGF1dG8qIG5hbWUgPSBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJB
Z2VudCA/ICJzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkiIDogInNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIjsKKyAgICAgICAgZHVtcFJlc29sdmVyKG5hbWUsIHNoYWRvd1Jv
b3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggMjJjZDk1ZTMwOWU4Li4zNDU1ZDE5MjFjMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTEzOSw2ICsxMTM5LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzeXN0ZW1CZWVwKCk7CiAKKyAgICBTdHJpbmcgZHVtcFN0eWxlUmVzb2x2ZXJzKCk7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9j
dW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IGExYjM4NTFkMTRiOS4uZDdlMWE1ODZjZmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDE4LDQgKzEwMTgsNiBAQCBlbnVtIFRyZWVUeXBlIHsK
ICAgICBib29sZWFuIHJhbmdlSW50ZXJzZWN0c1JhbmdlKEFic3RyYWN0UmFuZ2Ugb3V0ZXJSYW5n
ZSwgQWJzdHJhY3RSYW5nZSBpbm5lclJhbmdlLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRy
ZWUiKTsKIAogICAgIHVuZGVmaW5lZCBzeXN0ZW1CZWVwKCk7CisKKyAgICBET01TdHJpbmcgZHVt
cFN0eWxlUmVzb2x2ZXJzKCk7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427405</attachid>
            <date>2021-04-30 03:58:04 -0700</date>
            <delta_ts>2021-04-30 03:59:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver-5.patch</filename>
            <type>text/plain</type>
            <size>24704</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MDJlMDg4OWZiNWMuLmJmNDA0MDE5NDQ4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA0LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBTaGFyZSBzdHlsZSByZXNvbHZlcnMgYmV0d2VlbiBhdXRob3Igc2hhZG93IHRyZWVzIHdpdGhv
dXQgc3R5bGUgc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjUxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmlu
Zy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNC0yNiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBF
bWl0IG5ldyBHTElCIGJhc2VsaW5lcyBhZnRlciByMjc2NTg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmVjMjYx
NDZmNTJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0
eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKKworKGRv
Y3VtZW50IHJlc29sdmVyIChpZGVudGlmaWVyPTApIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhz
aGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBy
dWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRp
Zmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1
dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkK
KyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9
MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3Ip
IChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNv
bHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj00KSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hh
ZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9NSkgKGF1dGhvciBydWxlIGNv
dW50PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTYpIChh
dXRob3IgcnVsZSBjb3VudD0xKSkKKworQWZ0ZXIgc3R5bGUgbXV0YXRpb24KKyhkb2N1bWVudCBy
ZXNvbHZlciAoaWRlbnRpZmllcj0wKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJv
b3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3Vu
dD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkg
KGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChp
ZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZl
ciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93
IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNvdW50
PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTQpIChhdXRo
b3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRp
Zmllcj01KSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1
dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTYpIChhdXRob3IgcnVsZSBjb3VudD0xKSkK
KyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9z
dHlsZS1yZXNvbHZlci1zaGFyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
c3R5bGUtcmVzb2x2ZXItc2hhcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMjFiODkzNWZkYjk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmcuaHRtbApAQCAtMCwwICsxLDU1
IEBACis8ZGl2IGlkPXRlc3RzPgorPGlucHV0PjwvaW5wdXQ+Cis8dGV4dGFyZWE+PC90ZXh0YXJl
YT4KKzxkaXYgaWQ9YT48L2Rpdj4KKzxkaXYgaWQ9Yj48L2Rpdj4KKzxkaXYgaWQ9Yz48L2Rpdj4K
KzxkaXYgaWQ9ZD48L2Rpdj4KKzxkaXYgaWQ9ZT48L2Rpdj4KKzxkaXYgaWQ9Zj48L2Rpdj4KKzxk
aXYgaWQ9Zz48L2Rpdj4KKzxkaXYgaWQ9aD48L2Rpdj4KKzwvZGl2PgorPHByZSBpZD1sb2c+PC9w
cmU+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGF0dGFjaFNoYWRvd1dpdGhTdHlsZShpZCwgc3R5bGUp
Cit7CisgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgaWQp
OworICAgIGNvbnN0IHNoYWRvdyA9IGVsZW1lbnQuYXR0YWNoU2hhZG93KHsgbW9kZTogIm9wZW4i
IH0pOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSBgCisgICAgICAgIDxzdHlsZT4keyBzdHlsZSB9
PC9zdHlsZT4KKyAgICAgICAgPGRpdj4keyBpZCB9PC9kaXY+CisgICAgYDsKK30KKworYXR0YWNo
U2hhZG93V2l0aFN0eWxlKCJhIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJiIiwgIiIp
OworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJjIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxl
KCJkIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJlIiwgImRpdiB7IGNvbG9yOiBncmVl
biB9Iik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImYiLCAiZGl2IHsgY29sb3I6IGdyZWVuIH0i
KTsKK2F0dGFjaFNoYWRvd1dpdGhTdHlsZSgiZyIsICJkaXYgeyBjb2xvcjogZ3JlZW4gfSIpOwor
YXR0YWNoU2hhZG93V2l0aFN0eWxlKCJoIiwgImRpdiB7IGNvbG9yOiBncmVlbiB9Iik7CisKK2lm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgbG9nLnRleHRDb250ZW50ICs9IGludGVybmFscy5k
dW1wU3R5bGVSZXNvbHZlcnMoKTsKKyAgICBsb2cudGV4dENvbnRlbnQgKz0gIlxuQWZ0ZXIgc3R5
bGUgbXV0YXRpb25cbiIKK30KKworYy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInN0eWxlIiku
dGV4dENvbnRlbnQgPSAiZGl2IHsgY29sb3I6IGdyZWVuIH0iOworCitjb25zdCBzdHlsZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworc3R5bGVFbGVtZW50LnRleHRD
b250ZW50ID0gImRpdiB7IGNvbG9yOiBibHVlIH0iOworZC5zaGFkb3dSb290LmFwcGVuZENoaWxk
KHN0eWxlRWxlbWVudCk7CisKK2Yuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpLnRl
eHRDb250ZW50ID0gIiI7CitoLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKS5yZW1v
dmUoKTsKKworaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgbG9nLnRleHRDb250ZW50ICs9IGlu
dGVybmFscy5kdW1wU3R5bGVSZXNvbHZlcnMoKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjU4YTg3ZThhODAxLi5iZjA5MDkzODMwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAor
MjAyMS0wNC0yOSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAg
U2hhcmUgc3R5bGUgcmVzb2x2ZXJzIGJldHdlZW4gYXV0aG9yIHNoYWRvdyB0cmVlcyB3aXRob3V0
IHN0eWxlIHNoZWV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI1MTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAg
ICBQcmVwYXJlIGZvciBzaGFyaW5nIHN0eWxlIHJlc29sdmVycyAoYW5kIGFsbCB0aGUgcmVsYXRl
ZCBkYXRhKSBiZXR3ZWVuIHNoYWRvdyB0cmVlcyBiZXlvbmQKKyAgICAgICAgdGhlIGN1cnJlbnRs
eSBzdXBwb3J0ZWQgdXNlciBhZ2VudCBzaGFkb3cgdHJlZXMuIFRoaXMgcGF0Y2ggcmVmYWN0b3Jz
IHRoZSBzaGFyaW5nIGNvZGUKKyAgICAgICAgYW5kIGFkZHMgc3VwcG9ydCBmb3Igc2hhcmluZyBy
ZXNvbHZlcnMgZm9yIGF1dGhvciBzaGFkb3cgdHJlZXMgd2l0aG91dCBzdHlsZSBzaGVldHMuCisg
ICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hh
cmluZy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIpOiBEZWxl
dGVkLgorICAgICAgICAKKyAgICAgICAgTW92ZSB0aGUgc2hhcmVkIFVBIHJlc29sdmVyIHRvIFN0
eWxlOjpTY29wZS4KKyAgICAgICAgCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAg
ICogc3R5bGUvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29s
dmVyOjp3YXNTaGFyZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVy
OjpzZXRXYXNTaGFyZWQpOgorICAgICAgICAKKyAgICAgICAgQWRkIGEgYml0IGluZGljYXRpbmcg
aWYgYSByZXNvbHZlciBoYXMgYmVlbiBzaGFyZWQgYmV0d2VlbiBzaGFkb3cgdHJlZXMuCisKKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjcmVhdGVE
b2N1bWVudFJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6Y3JlYXRl
T3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKToKKyAgICAgICAgCisgICAgICAgIEZhY3Rv
ciBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIFNoYXJlIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUg
cmVzb2x2ZXIgKGFzIGJlZm9yZSkgYW5kIGFsc28gcmVzb2x2ZXIgZm9yIGVtcHR5IGF1dGhvciBz
aGFkb3cgdHJlZXMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dW5zaGFyZVNo
YWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKToKKyAgICAgICAgCisgICAgICAgIElmIHdl
IG11dGF0ZSBhbiBleGlzdGluZyByZXNvbHZlciB3ZSBuZWVkIHRvIG1ha2UgaXQgdW5hdmFpbGFi
bGUgZm9yIHNoYXJpbmcuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3Bl
OjpjbGVhclJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVsZWFz
ZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmFuYWx5emVTdHlsZVNo
ZWV0Q2hhbmdlKToKKyAgICAgICAgCisgICAgICAgIElmIHdlIGFyZSBhYm91dCB0byBtdXRhdGUg
YWxyZWFkeSBzaGFyZWQgcmVzb2x2ZXIgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25lLgorICAg
ICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVT
aGVldHMpOgorICAgICAgICAKKyAgICAgICAgSWYgc3R5bGUgc2hlZXRzIGNoYW5nZSBhbmQgdGhl
IHJlc29sdmVyIGlzIHNoYXJlZCBhbHdheXMgbG9vayBpdCB1cCBhZ2FpbiAoc2luY2UgaXQgY2Fu
J3QgYmUgbXV0YXRlZCkuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRl
UmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzY2hlZHVsZVVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6Omluc2VydGVkSW5Eb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZp
cm9ubWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmRvY3VtZW50U2NvcGUp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjppc0ZvclVzZXJBZ2VudFNoYWRvd1Ry
ZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpzaG91bGRVc2VTaGFy
ZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlciBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnJlc29sdmVySWZFeGlzdHMpOiBEZWxldGVkLgor
ICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6CisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6c2V0SXNGb3JT
aGFkb3dTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBT
dHlsZVJlc29sdmVycyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgIAorICAgICAgICBUZXN0aW5nIHN1cHBv
cnQuCisKIDIwMjEtMDQtMjYgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlZmNvdW50IFN0eWxlOjpSZXNvbHZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggMmFlM2MzZGViOTEwLi4xYWQ5MjdmZDZkYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjM4MSwxMyArMjM4MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0lu
UGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBhZ2VTaXplLCBpbnQmCiAgICAgbWFyZ2lu
TGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCkuaXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogaW50VmFs
dWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxlZnQoKSwgd2lkdGgpOwogfQogCi1TdHlsZTo6UmVz
b2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCi17Ci0g
ICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3Vz
ZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gU3R5bGU6OlJlc29sdmVyOjpjcmVhdGUo
KnRoaXMpOwotICAgIHJldHVybiAqbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsK
LX0KLQogdm9pZCBEb2N1bWVudDo6Zm9udHNOZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpCiB7CiAg
ICAgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCk7
CkBAIC0yNDAyLDExICsyMzk1LDYgQEAgdm9pZCBEb2N1bWVudDo6aW52YWxpZGF0ZU1hdGNoZWRQ
cm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCkKICAgICBzY2hlZHVsZUZ1bGxTdHls
ZVJlYnVpbGQoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6ZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCkK
LXsKLSAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyID0gbnVsbHB0cjsKLX0K
LQogdm9pZCBEb2N1bWVudDo6c2V0SXNSZXNvbHZpbmdUcmVlU3R5bGUoYm9vbCB2YWx1ZSkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZSAhPSBtX2lzUmVzb2x2aW5nVHJlZVN0eWxlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggMDhmMGEwNTZkMTg1Li42ZTE0Y2NmNGYwMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xMzEzLDcgKzEzMTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZh
bGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFuZEZvcmNlU3R5bGVSZWNhbGMoKTsKIAogICAg
IHZvaWQgZGlkUmVtb3ZlQWxsUGVuZGluZ1N0eWxlc2hlZXQoKTsKLSAgICB2b2lkIGRpZENsZWFy
U3R5bGVSZXNvbHZlcigpOwogCiAgICAgYm9vbCBpblN0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1
cm4gbV9pblN0eWxlUmVjYWxjOyB9CiAgICAgYm9vbCBpblJlbmRlclRyZWVVcGRhdGUoKSBjb25z
dCB7IHJldHVybiBtX2luUmVuZGVyVHJlZVVwZGF0ZTsgfQpAQCAtMTQ2Miw3ICsxNDYxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaWRJbnNlcnRJbkRvY3VtZW50U2hhZG93Um9vdChTaGFkb3dS
b290Jik7CiAgICAgdm9pZCBkaWRSZW1vdmVJbkRvY3VtZW50U2hhZG93Um9vdChTaGFkb3dSb290
Jik7Ci0gICAgY29uc3QgSGFzaFNldDxTaGFkb3dSb290Kj4mIGluRG9jdW1lbnRTaGFkb3dSb290
cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Eb2N1bWVudFNoYWRvd1Jvb3RzOyB9CisgICAgY29uc3Qg
TGlzdEhhc2hTZXQ8U2hhZG93Um9vdCo+JiBpbkRvY3VtZW50U2hhZG93Um9vdHMoKSBjb25zdCB7
IHJldHVybiBtX2luRG9jdW1lbnRTaGFkb3dSb290czsgfQogCiAgICAgdm9pZCBhdHRhY2hUb0Nh
Y2hlZEZyYW1lKENhY2hlZEZyYW1lQmFzZSYpOwogICAgIHZvaWQgZGV0YWNoRnJvbUNhY2hlZEZy
YW1lKENhY2hlZEZyYW1lQmFzZSYpOwpAQCAtMTc0MSw4ICsxNzQwLDYgQEAgcHJpdmF0ZToKIAog
ICAgIFVuaXF1ZVJlZjxRdWlya3M+IG1fcXVpcmtzOwogCi0gICAgUmVmUHRyPFN0eWxlOjpSZXNv
bHZlcj4gbV91c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKLQogICAgIFJlZlB0cjxE
T01XaW5kb3c+IG1fZG9tV2luZG93OwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fY29udGV4dERv
Y3VtZW50OwogCkBAIC0xOTk0LDcgKzE5OTEsNyBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0
PE1lZGlhUHJvZHVjZXI+IG1fYXVkaW9Qcm9kdWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNv
Z25pdGlvbj4gbV9hY3RpdmVTcGVlY2hSZWNvZ25pdGlvbjsKIAotICAgIEhhc2hTZXQ8U2hhZG93
Um9vdCo+IG1faW5Eb2N1bWVudFNoYWRvd1Jvb3RzOworICAgIExpc3RIYXNoU2V0PFNoYWRvd1Jv
b3QqPiBtX2luRG9jdW1lbnRTaGFkb3dSb290czsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZ
QkFDS19UQVJHRVQpCiAgICAgdXNpbmcgVGFyZ2V0SWRUb0NsaWVudE1hcCA9IEhhc2hNYXA8UGxh
eWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRlbnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFj
a1RhcmdldENsaWVudCo+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggZGFiMDk4ZGVkNzFm
Li41NzMxYmNmMWRmZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAKICAgICB1c2luZyBUcmVlU2NvcGU6OnJvb3ROb2RlOwogCi0gICAgU3R5bGU6
OlNjb3BlJiBzdHlsZVNjb3BlKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgU3R5bGU6OlNjb3BlJiBz
dHlsZVNjb3BlKCk7CiAgICAgU3R5bGVTaGVldExpc3QmIHN0eWxlU2hlZXRzKCk7CiAKICAgICBi
b29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUlu
aGVyaXRhbmNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29s
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggNTE3NDky
YzllODM1Li42OTc3Y2M3YTNlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgK
QEAgLTE0MCw2ICsxNDAsOSBAQCBwdWJsaWM6CiAKICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
JiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOyB9CiAKKyAgICBib29sIGlzU2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1NoYXJlZEJldHdlZW5TaGFkb3dUcmVlczsgfQorICAgIHZvaWQgc2V0U2hhcmVk
QmV0d2VlblNoYWRvd1RyZWVzKCkgeyBtX2lzU2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzID0gdHJ1
ZTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQYWdlUnVsZUNvbGxlY3RvcjsKIApA
QCAtMTk2LDYgKzE5OSw4IEBAIHByaXZhdGU6CiAgICAgTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hl
IG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlOwogCiAgICAgYm9vbCBtX21hdGNoQXV0aG9yQW5k
VXNlclN0eWxlcyB7IHRydWUgfTsKKyAgICBib29sIG1faXNTaGFyZWRCZXR3ZWVuU2hhZG93VHJl
ZXMgeyBmYWxzZSB9OworCiAgICAgLy8gU2VlIGlmIHdlIHN0aWxsIGhhdmUgY3Jhc2hlcyB3aGVy
ZSBSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFybHkuCiAgICAgYm9vbCBtX2lzRGVsZXRlZCB7IGZh
bHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAppbmRleCBjOGJlODJjM2Fi
YjIuLjk5ZWQyNzUyMjRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVT
Y29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTc0
LDYxICs3NCw3MiBAQCBTY29wZTo6flNjb3BlKCkKICAgICBBU1NFUlQoIWhhc1BlbmRpbmdTaGVl
dHMoKSk7CiB9CiAKLWJvb2wgU2NvcGU6OnNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyKCkgY29uc3QKK1Jlc29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQogewot
ICAgIGlmICghbV9zaGFkb3dSb290KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1f
c2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAvLyBJZiB3ZSBoYXZlIHN0eWxlc2hlZXRzIGluIHRoZSB1c2Vy
IGFnZW50IHNoYWRvdyB0cmVlIHVzZSBwZXItc2NvcGUgcmVzb2x2ZXIuCi0gICAgaWYgKCFtX3N0
eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIW1fcmVzb2x2ZXIpIHsKKyAgICAgICAgaWYgKG1f
c2hhZG93Um9vdCkKKyAgICAgICAgICAgIGNyZWF0ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNv
bHZlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjcmVhdGVEb2N1bWVudFJlc29sdmVy
KCk7CisgICAgfQorICAgIHJldHVybiAqbV9yZXNvbHZlcjsKIH0KIAotUmVzb2x2ZXImIFNjb3Bl
OjpyZXNvbHZlcigpCit2b2lkIFNjb3BlOjpjcmVhdGVEb2N1bWVudFJlc29sdmVyKCkKIHsKLSAg
ICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkK
LSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQudXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2
ZXIoKTsKKyAgICBBU1NFUlQoIW1fcmVzb2x2ZXIpOworICAgIEFTU0VSVCghbV9zaGFkb3dSb290
KTsKIAotICAgIGlmICghbV9yZXNvbHZlcikgewotICAgICAgICBTZXRGb3JTY29wZTxib29sPiBp
c1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUg
fTsKKyAgICBTZXRGb3JTY29wZTxib29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNV
cGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUgfTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gUmVz
b2x2ZXI6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNy
ZWF0ZShtX2RvY3VtZW50KTsKIAotICAgICAgICBpZiAoIW1fc2hhZG93Um9vdCkgewotICAgICAg
ICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZFN0YXJ0ZWQoKTsKLSAgICAgICAg
ICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuaW5pdGlhbGl6ZVVzZXJTdHlsZSgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5zZXRJc0ZvclNo
YWRvd1Njb3BlKCk7Ci0gICAgICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnNldFVzZXNT
aGFyZWRVc2VyU3R5bGUobV9zaGFkb3dSb290LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVz
ZXJBZ2VudCk7Ci0gICAgICAgIH0KKyAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxk
U3RhcnRlZCgpOwogCi0gICAgICAgIG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1
bGVzKCk7Ci0gICAgICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0
aXZlU3R5bGVTaGVldHMpOworICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuaW5pdGlhbGl6ZVVz
ZXJTdHlsZSgpOworICAgIG1fcmVzb2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7
CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNo
ZWV0cyk7CiAKLSAgICAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAgICAgICBtX2RvY3Vt
ZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkQ29tcGxldGVkKCk7CisgICAgbV9kb2N1bWVudC5mb250
U2VsZWN0b3IoKS5idWlsZENvbXBsZXRlZCgpOworfQorCit2b2lkIFNjb3BlOjpjcmVhdGVPckZp
bmRTaGFyZWRTaGFkb3dUcmVlUmVzb2x2ZXIoKQoreworICAgIEFTU0VSVCghbV9yZXNvbHZlcik7
CisgICAgQVNTRVJUKG1fc2hhZG93Um9vdCk7CisKKyAgICBpZiAobV9hY3RpdmVTdHlsZVNoZWV0
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgc2hhcmVkUmVzb2x2ZXIgPSBpc0ZvclVzZXJB
Z2VudFNoYWRvd1RyZWUoKSA/IGRvY3VtZW50U2NvcGUoKS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRv
d1RyZWVSZXNvbHZlciA6IGRvY3VtZW50U2NvcGUoKS5tX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93
VHJlZVJlc29sdmVyOworICAgICAgICBpZiAoIXNoYXJlZFJlc29sdmVyKSB7CisgICAgICAgICAg
ICBzaGFyZWRSZXNvbHZlciA9IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgICAg
ICAgICBzaGFyZWRSZXNvbHZlci0+cnVsZVNldHMoKS5zZXRVc2VzU2hhcmVkVXNlclN0eWxlKCFp
c0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
c2hhcmVkUmVzb2x2ZXItPnNldFNoYXJlZEJldHdlZW5TaGFkb3dUcmVlcygpOworCisgICAgICAg
IG1fcmVzb2x2ZXIgPSBzaGFyZWRSZXNvbHZlcjsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBBU1NFUlQoIW1fc2hhZG93Um9vdCB8fCAmbV9kb2N1bWVudCA9PSAmbV9zaGFkb3dSb290LT5k
b2N1bWVudCgpKTsKLSAgICBBU1NFUlQoJm1fcmVzb2x2ZXItPmRvY3VtZW50KCkgPT0gJm1fZG9j
dW1lbnQpOwotICAgIHJldHVybiAqbV9yZXNvbHZlcjsKKworICAgIG1fcmVzb2x2ZXIgPSBSZXNv
bHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOworCisgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5z
ZXRVc2VzU2hhcmVkVXNlclN0eWxlKCFpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAg
bV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNoZWV0cyk7
CiB9CiAKLVJlc29sdmVyKiBTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cygpCit2b2lkIFNjb3BlOjp1
bnNoYXJlU2hhZG93VHJlZVJlc29sdmVyQmVmb3JlTXV0YXRpb24oKQogewotICAgIGlmIChzaG91
bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpKQotICAgICAgICBy
ZXR1cm4gJm1fZG9jdW1lbnQudXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAg
ICBBU1NFUlQobV9zaGFkb3dSb290KTsKKyAgICBBU1NFUlQoIW1fcmVzb2x2ZXItPmlzU2hhcmVk
QmV0d2VlblNoYWRvd1RyZWVzKCkpOwogCi0gICAgcmV0dXJuIG1fcmVzb2x2ZXIuZ2V0KCk7Cisg
ICAgYXV0byYgc2hhcmVkUmVzb2x2ZXIgPSBpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IGRv
Y3VtZW50U2NvcGUoKS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlciA6IGRvY3Vt
ZW50U2NvcGUoKS5tX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyOworICAgIAor
ICAgIGlmIChtX3Jlc29sdmVyID09IHNoYXJlZFJlc29sdmVyKQorICAgICAgICBzaGFyZWRSZXNv
bHZlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQgU2NvcGU6OmNsZWFyUmVzb2x2ZXIoKQogewogICAg
IG1fcmVzb2x2ZXIgPSBudWxscHRyOwotCi0gICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAg
IG1fZG9jdW1lbnQuZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCk7CiB9CiAKIHZvaWQgU2NvcGU6OnJl
bGVhc2VNZW1vcnkoKQpAQCAtMTQ4LDYgKzE1OSw5IEBAIHZvaWQgU2NvcGU6OnJlbGVhc2VNZW1v
cnkoKQogICAgIH0KICNlbmRpZgogICAgIGNsZWFyUmVzb2x2ZXIoKTsKKworICAgIG1fc2hhcmVk
VXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKyAgICBtX3NoYXJlZEVtcHR5
QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKIH0KIAogU2NvcGUmIFNjb3BlOjpm
b3JOb2RlKE5vZGUmIG5vZGUpCkBAIC0zODMsNyArMzk3LDExIEBAIFNjb3BlOjpTdHlsZVNoZWV0
Q2hhbmdlIFNjb3BlOjphbmFseXplU3R5bGVTaGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0CiB7CiAgICAgdW5zaWduZWQgbmV3U3R5bGVzaGVldENvdW50ID0gbmV3U3R5bGVzaGVl
dHMuc2l6ZSgpOwogCi0gICAgaWYgKCFyZXNvbHZlcklmRXhpc3RzKCkpCisgICAgYXV0byogcmVz
b2x2ZXIgPSByZXNvbHZlcklmRXhpc3RzKCk7CisgICAgaWYgKCFyZXNvbHZlcikKKyAgICAgICAg
cmV0dXJuIHsgUmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNvbnN0cnVjdCB9OworCisgICAgaWYgKHJl
c29sdmVyLT5pc1NoYXJlZEJldHdlZW5TaGFkb3dUcmVlcygpKQogICAgICAgICByZXR1cm4geyBS
ZXNvbHZlclVwZGF0ZVR5cGU6OlJlY29uc3RydWN0IH07CiAKICAgICAvLyBGaW5kIG91dCB3aGlj
aCBzdHlsZXNoZWV0cyBhcmUgbmV3LgpAQCAtNDUyLDggKzQ3MCwxMiBAQCB2b2lkIFNjb3BlOjp1
cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAgICAgY29sbGVj
dEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0
eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50LmV4dGVuc2lvblN0eWxlU2hlZXRzKCku
aW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5h
cHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0eWxl
U2hlZXRzRm9yVGVzdGluZygpKTsKKworICAgIGlmICghaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVl
KCkpIHsKKyAgICAgICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1l
bnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwor
ICAgICAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRl
bnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0eWxlU2hlZXRzRm9yVGVzdGluZygpKTsKKyAgICB9
CisKICAgICBmaWx0ZXJFbmFibGVkTm9uZW1wdHlDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHls
ZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgYXV0byBzdHlsZVNoZWV0Q2hhbmdl
ID0gU3R5bGVTaGVldENoYW5nZSB7IFJlc29sdmVyVXBkYXRlVHlwZTo6UmVjb25zdHJ1Y3QgfTsK
QEAgLTQ5NiwxOSArNTE4LDI1IEBAIHZvaWQgU2NvcGU6OnVwZGF0ZVJlc29sdmVyKFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBhY3RpdmVTdHlsZVNoZWV0cywgUmVzCiAgICAgICAgIGNs
ZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvJiBzdHlsZVJl
c29sdmVyID0gcmVzb2x2ZXIoKTsKKworICAgIGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgIHVu
c2hhcmVTaGFkb3dUcmVlUmVzb2x2ZXJCZWZvcmVNdXRhdGlvbigpOwogCiAgICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29s
dmVyLCB0cnVlIH07CisKICAgICBpZiAodXBkYXRlVHlwZSA9PSBSZXNvbHZlclVwZGF0ZVR5cGU6
OlJlc2V0KSB7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIucnVsZVNldHMoKS5yZXNldEF1dGhvclN0
eWxlKCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoYWN0
aXZlU3R5bGVTaGVldHMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCh1cGRhdGVUeXBl
ID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRkaXRpdmUpOwotICAgICAgICB1bnNpZ25lZCBmaXJz
dE5ld0luZGV4ID0gbV9hY3RpdmVTdHlsZVNoZWV0cy5zaXplKCk7Ci0gICAgICAgIFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG5ld1N0eWxlU2hlZXRzOwotICAgICAgICBuZXdTdHlsZVNo
ZWV0cy5hcHBlbmRSYW5nZShhY3RpdmVTdHlsZVNoZWV0cy5iZWdpbigpICsgZmlyc3ROZXdJbmRl
eCwgYWN0aXZlU3R5bGVTaGVldHMuZW5kKCkpOwotICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGVu
ZEF1dGhvclN0eWxlU2hlZXRzKG5ld1N0eWxlU2hlZXRzKTsKKyAgICAgICAgbV9yZXNvbHZlci0+
cnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxlKCk7CisgICAgICAgIG1fcmVzb2x2ZXItPmFwcGVu
ZEF1dGhvclN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICAgICAgcmV0dXJuOwog
ICAgIH0KKworICAgIEFTU0VSVCh1cGRhdGVUeXBlID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRk
aXRpdmUpOworICAgIEFTU0VSVChhY3RpdmVTdHlsZVNoZWV0cy5zaXplKCkgPj0gbV9hY3RpdmVT
dHlsZVNoZWV0cy5zaXplKCkpOworCisgICAgdW5zaWduZWQgZmlyc3ROZXdJbmRleCA9IG1fYWN0
aXZlU3R5bGVTaGVldHMuc2l6ZSgpOworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+
IG5ld1N0eWxlU2hlZXRzOworICAgIG5ld1N0eWxlU2hlZXRzLmFwcGVuZFJhbmdlKGFjdGl2ZVN0
eWxlU2hlZXRzLmJlZ2luKCkgKyBmaXJzdE5ld0luZGV4LCBhY3RpdmVTdHlsZVNoZWV0cy5lbmQo
KSk7CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobmV3U3R5bGVTaGVl
dHMpOwogfQogCiBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0
aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3IoKQpAQCAtNTgxLDcgKzYwOSw3IEBAIHZvaWQgU2Nv
cGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5cGUgdXBkYXRlKQogICAgIGlmICghbV9wZW5kaW5n
VXBkYXRlIHx8ICptX3BlbmRpbmdVcGRhdGUgPCB1cGRhdGUpIHsKICAgICAgICAgbV9wZW5kaW5n
VXBkYXRlID0gdXBkYXRlOwogICAgICAgICBpZiAobV9zaGFkb3dSb290KQotICAgICAgICAgICAg
bV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUg
PSB0cnVlOworICAgICAgICAgICAgZG9jdW1lbnRTY29wZSgpLm1faGFzRGVzY2VuZGFudFdpdGhQ
ZW5kaW5nVXBkYXRlID0gdHJ1ZTsKICAgICB9CiAKICAgICBtX2RvY3VtZW50LnNjaGVkdWxlUmVu
ZGVyaW5nVXBkYXRlKHsgfSk7CkBAIC01OTIsNyArNjIwLDcgQEAgdm9pZCBTY29wZTo6aW5zZXJ0
ZWRJbkRvY3VtZW50KCkKICAgICBpZiAoIW1fcGVuZGluZ1VwZGF0ZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRp
bmdVcGRhdGUgPSB0cnVlOworICAgIGRvY3VtZW50U2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRo
UGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAgbV9kb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1Vw
ZGF0ZSh7IH0pOwogfQogCkBAIC02NTksNiArNjg3LDkgQEAgdm9pZCBTY29wZTo6ZGlkQ2hhbmdl
U3R5bGVTaGVldENvbnRlbnRzKCkKIHZvaWQgU2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZp
cm9ubWVudCgpCiB7CiAgICAgaWYgKCFtX3NoYWRvd1Jvb3QpIHsKKyAgICAgICAgbV9zaGFyZWRV
c2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXIgPSBudWxscHRyOworICAgICAgICBtX3NoYXJlZEVt
cHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0gbnVsbHB0cjsKKwogICAgICAgICBmb3IgKGF1
dG8qIGRlc2NlbmRhbnRTaGFkb3dSb290IDogbV9kb2N1bWVudC5pbkRvY3VtZW50U2hhZG93Um9v
dHMoKSkgewogICAgICAgICAgICAgLy8gU3R5bGVzaGVldHMgaXMgYXV0aG9yIHNoYWRvdyByb290
cyBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQuCiAgICAgICAgICAgICBpZiAoZGVzY2VuZGFudFNo
YWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KQpAQCAtNjg2LDUg
KzcxNywxNSBAQCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+PiYgU2NvcGU6OnN0eWxl
U2hlZXRzRm9yU3R5bGVTaGVldExpc3QoKQogICAgIHJldHVybiBtX3N0eWxlU2hlZXRzRm9yU3R5
bGVTaGVldExpc3Q7CiB9CiAKK1Njb3BlJiBTY29wZTo6ZG9jdW1lbnRTY29wZSgpCit7CisgICAg
cmV0dXJuIG1fZG9jdW1lbnQuc3R5bGVTY29wZSgpOworfQorCitib29sIFNjb3BlOjppc0ZvclVz
ZXJBZ2VudFNoYWRvd1RyZWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRvd1Jvb3QgJiYg
bV9zaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudDsKK30KKwog
fQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCmluZGV4IDdjMDcyYTU5NTFiNi4uNDQ3YmFj
YjBjNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oCkBAIC0xMTksNyArMTE5LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZXNvbHZlciYgcmVzb2x2ZXIo
KTsKLSAgICBSZXNvbHZlciogcmVzb2x2ZXJJZkV4aXN0cygpOworICAgIFJlc29sdmVyKiByZXNv
bHZlcklmRXhpc3RzKCkgeyByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsgfQogICAgIHZvaWQgY2xl
YXJSZXNvbHZlcigpOwogICAgIHZvaWQgcmVsZWFzZU1lbW9yeSgpOwogCkBAIC0xMzIsNyArMTMy
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTY29wZSogZm9yT3JkaW5hbChFbGVtZW50JiwgU2Nv
cGVPcmRpbmFsKTsKIAogcHJpdmF0ZToKLSAgICBib29sIHNob3VsZFVzZVNoYXJlZFVzZXJBZ2Vu
dFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkgY29uc3Q7CisgICAgU2NvcGUmIGRvY3VtZW50U2Nv
cGUoKTsKKyAgICBib29sIGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpIGNvbnN0OwogCiAgICAg
dm9pZCBkaWRSZW1vdmVQZW5kaW5nU3R5bGVzaGVldCgpOwogCkBAIC0xNjAsNiArMTYxLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUFmdGVyU3R5bGVTaGVldENoYW5nZShj
b25zdCBTdHlsZVNoZWV0Q2hhbmdlJik7CiAKICAgICB2b2lkIHVwZGF0ZVJlc29sdmVyKFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiwgUmVzb2x2ZXJVcGRhdGVUeXBlKTsKKyAgICB2b2lk
IGNyZWF0ZURvY3VtZW50UmVzb2x2ZXIoKTsKKyAgICB2b2lkIGNyZWF0ZU9yRmluZFNoYXJlZFNo
YWRvd1RyZWVSZXNvbHZlcigpOworICAgIHZvaWQgdW5zaGFyZVNoYWRvd1RyZWVSZXNvbHZlckJl
Zm9yZU11dGF0aW9uKCk7CiAKICAgICBEb2N1bWVudCYgbV9kb2N1bWVudDsKICAgICBTaGFkb3dS
b290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRyIH07CkBAIC0xODgsNiArMTkyLDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IGZhbHNlIH07CisKKyAgICAvLyBGSVhNRTog
VGhlc2UgKGFuZCBzb21lIHRoaW5ncyBhYm92ZSkgYXJlIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSBy
b290IHNjb3BlLgorICAgIFJlZlB0cjxSZXNvbHZlcj4gbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dU
cmVlUmVzb2x2ZXI7CisgICAgUmVmUHRyPFJlc29sdmVyPiBtX3NoYXJlZEVtcHR5QXV0aG9yU2hh
ZG93VHJlZVJlc29sdmVyOwogfTsKIAogaW5saW5lIGJvb2wgU2NvcGU6Omhhc1BlbmRpbmdTaGVl
dHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1
bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRl
eCA4ZGVhOTAxYWRhOWYuLjc5YmJkZDFmMmUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY5LDggKzY5LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBo
YXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25zdDsKIAotICAgIHZvaWQg
c2V0SXNGb3JTaGFkb3dTY29wZSgpIHsgbV9pc0ZvclNoYWRvd1Njb3BlID0gdHJ1ZTsgfQotCiAg
ICAgdm9pZCBzZXRVc2VzU2hhcmVkVXNlclN0eWxlKGJvb2wgYikgeyBtX3VzZXNTaGFyZWRVc2Vy
U3R5bGUgPSBiOyB9CiAgICAgdm9pZCBpbml0aWFsaXplVXNlclN0eWxlKCk7CiAKQEAgLTExMCw3
ICsxMDgsNiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdW5zaWduZWQgbV91c2VyQWdlbnRNZWRp
YVF1ZXJ5UnVsZUNvdW50T25VcGRhdGUgeyAwIH07CiAKICAgICBib29sIG1fdXNlc1NoYXJlZFVz
ZXJTdHlsZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzRm9yU2hhZG93U2NvcGUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9pc0F1dGhvclN0eWxlRGVmaW5lZCB7IGZhbHNlIH07CiAKICAgICAvLyBG
b3IgY2F0Y2hpbmcgPHJkYXI6Ly9wcm9ibGVtLzUzNDEzMDEzPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IGIyMzliZTFjMzcyMC4uNDMyZDk3OTUxOWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02MjcyLDQgKzYyNzIsMzkgQEAgYm9vbCBJbnRl
cm5hbHM6OnJhbmdlSW50ZXJzZWN0c1JhbmdlKGNvbnN0IEFic3RyYWN0UmFuZ2UmIGEsIGNvbnN0
IEFic3RyYWN0UmFuZ2UKICAgICByZXR1cm4gaW50ZXJzZWN0c0ZvclRlc3RpbmcoY29udmVydFR5
cGUodHlwZSksIG1ha2VTaW1wbGVSYW5nZShhKSwgbWFrZVNpbXBsZVJhbmdlKGIpKTsKIH0KIAor
U3RyaW5nIEludGVybmFsczo6ZHVtcFN0eWxlUmVzb2x2ZXJzKCkKK3sKKyAgICBhdXRvKiBkb2N1
bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50
LT5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGRvY3VtZW50LT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICB1bnNpZ25lZCBjdXJyZW50SWRlbnRpZmllciA9IDA7
CisgICAgSGFzaE1hcDxTdHlsZTo6UmVzb2x2ZXIqLCB1bnNpZ25lZD4gcmVzb2x2ZXJJZGVudGlm
aWVyczsKKworICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworCisgICAgYXV0byBkdW1wUmVzb2x2
ZXIgPSBbJl0oYXV0byBuYW1lLCBhdXRvJiByZXNvbHZlcikgeworICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSByZXNvbHZlcklkZW50aWZpZXJzLmVuc3VyZSgmcmVzb2x2ZXIsIFsmXSB7CisgICAg
ICAgICAgICByZXR1cm4gY3VycmVudElkZW50aWZpZXIrKzsKKyAgICAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOworCisgICAgICAgIHJlc3VsdC5hcHBlbmQoIigiLCBuYW1lLCAiICIpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKCIoaWRlbnRpZmllcj0iLCBpZGVudGlmaWVyLCAiKSAiKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZCgiKGF1dGhvciBydWxlIGNvdW50PSIsIHJlc29sdmVyLnJ1bGVTZXRz
KCkuYXV0aG9yU3R5bGUoKS5ydWxlQ291bnQoKSwgIikiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZCgiKVxuIik7CisgICAgfTsKKworICAgIGR1bXBSZXNvbHZlcigiZG9jdW1lbnQgcmVzb2x2ZXIi
LCBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJlc29sdmVyKCkpOworCisgICAgZm9yIChhdXRvKiBz
aGFkb3dSb290IDogZG9jdW1lbnQtPmluRG9jdW1lbnRTaGFkb3dSb290cygpKSB7CisgICAgICAg
IGF1dG8qIG5hbWUgPSBzaGFkb3dSb290LT5tb2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJB
Z2VudCA/ICJzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkiIDogInNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIjsKKyAgICAgICAgZHVtcFJlc29sdmVyKG5hbWUsIHNoYWRvd1Jv
b3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggMjJjZDk1ZTMwOWU4Li4zNDU1ZDE5MjFjMzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMTEzOSw2ICsxMTM5LDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBzeXN0ZW1CZWVwKCk7CiAKKyAgICBTdHJpbmcgZHVtcFN0eWxlUmVzb2x2ZXJzKCk7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgSW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9j
dW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCmluZGV4IGExYjM4NTFkMTRiOS4uZDdlMWE1ODZjZmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDE4LDQgKzEwMTgsNiBAQCBlbnVtIFRyZWVUeXBlIHsK
ICAgICBib29sZWFuIHJhbmdlSW50ZXJzZWN0c1JhbmdlKEFic3RyYWN0UmFuZ2Ugb3V0ZXJSYW5n
ZSwgQWJzdHJhY3RSYW5nZSBpbm5lclJhbmdlLCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRy
ZWUiKTsKIAogICAgIHVuZGVmaW5lZCBzeXN0ZW1CZWVwKCk7CisKKyAgICBET01TdHJpbmcgZHVt
cFN0eWxlUmVzb2x2ZXJzKCk7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427406</attachid>
            <date>2021-04-30 03:59:39 -0700</date>
            <delta_ts>2021-04-30 04:04:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver-6.patch</filename>
            <type>text/plain</type>
            <size>24962</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MDJlMDg4OWZiNWMuLmJmNDA0MDE5NDQ4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA0LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBTaGFyZSBzdHlsZSByZXNvbHZlcnMgYmV0d2VlbiBhdXRob3Igc2hhZG93IHRyZWVzIHdpdGhv
dXQgc3R5bGUgc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjUxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmlu
Zy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNC0yNiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBF
bWl0IG5ldyBHTElCIGJhc2VsaW5lcyBhZnRlciByMjc2NTg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmNmNWQ3
MTczYTljCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0
eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKKworKGRv
Y3VtZW50IHJlc29sdmVyIChpZGVudGlmaWVyPTApIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhz
aGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBy
dWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRp
Zmllcj0xKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1
dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkK
KyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9
MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3Ip
IChpZGVudGlmaWVyPTMpIChhdXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNv
bHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj00KSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hh
ZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9NSkgKGF1dGhvciBydWxlIGNv
dW50PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTYpIChh
dXRob3IgcnVsZSBjb3VudD0xKSkKKworQWZ0ZXIgc3R5bGUgbXV0YXRpb24KKyhkb2N1bWVudCBy
ZXNvbHZlciAoaWRlbnRpZmllcj0wKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJv
b3QgcmVzb2x2ZXIgKHVzZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3Vu
dD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkg
KGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChp
ZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZl
ciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93
IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNvdW50
PTEpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTQpIChhdXRo
b3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRp
Zmllcj01KSAoYXV0aG9yIHJ1bGUgY291bnQ9MikpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1
dGhvcikgKGlkZW50aWZpZXI9NikgKGF1dGhvciBydWxlIGNvdW50PTIpKQorKHNoYWRvdyByb290
IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkK
KyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1
bGUgY291bnQ9MCkpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9z
dHlsZS1yZXNvbHZlci1zaGFyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
c3R5bGUtcmVzb2x2ZXItc2hhcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uMTVkMTRiNzdlMzVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmcuaHRtbApAQCAtMCwwICsxLDYz
IEBACis8ZGl2IGlkPXRlc3RzPgorPGlucHV0PjwvaW5wdXQ+Cis8dGV4dGFyZWE+PC90ZXh0YXJl
YT4KKzxkaXYgaWQ9YT48L2Rpdj4KKzxkaXYgaWQ9Yj48L2Rpdj4KKzxkaXYgaWQ9Yz48L2Rpdj4K
KzxkaXYgaWQ9ZD48L2Rpdj4KKzxkaXYgaWQ9ZT48L2Rpdj4KKzxkaXYgaWQ9Zj48L2Rpdj4KKzxk
aXYgaWQ9Zz48L2Rpdj4KKzxkaXYgaWQ9aD48L2Rpdj4KKzwvZGl2PgorPHByZSBpZD1sb2c+PC9w
cmU+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIGF0dGFjaFNoYWRvd1dpdGhTdHlsZShpZCwgc3R5bGUp
Cit7CisgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMiICsgaWQp
OworICAgIGNvbnN0IHNoYWRvdyA9IGVsZW1lbnQuYXR0YWNoU2hhZG93KHsgbW9kZTogIm9wZW4i
IH0pOworICAgIHNoYWRvdy5pbm5lckhUTUwgPSBgCisgICAgICAgIDxzdHlsZT4keyBzdHlsZSB9
PC9zdHlsZT4KKyAgICAgICAgPGRpdj4keyBpZCB9PC9kaXY+CisgICAgYDsKK30KKworYXR0YWNo
U2hhZG93V2l0aFN0eWxlKCJhIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJiIiwgIiIp
OworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJjIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxl
KCJkIiwgIiIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJlIiwgImRpdiB7IGNvbG9yOiBncmVl
biB9Iik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImYiLCAiZGl2IHsgY29sb3I6IGdyZWVuIH0i
KTsKK2F0dGFjaFNoYWRvd1dpdGhTdHlsZSgiZyIsICJkaXYgeyBjb2xvcjogZ3JlZW4gfSIpOwor
YXR0YWNoU2hhZG93V2l0aFN0eWxlKCJoIiwgImRpdiB7IGNvbG9yOiBncmVlbiB9Iik7CisKK2lm
ICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgbG9nLnRleHRDb250ZW50ICs9IGludGVybmFscy5k
dW1wU3R5bGVSZXNvbHZlcnMoKTsKKyAgICBsb2cudGV4dENvbnRlbnQgKz0gIlxuQWZ0ZXIgc3R5
bGUgbXV0YXRpb25cbiIKK30KKworYy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInN0eWxlIiku
dGV4dENvbnRlbnQgPSAiZGl2IHsgY29sb3I6IGdyZWVuIH0iOworCit7CisgICAgY29uc3Qgc3R5
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICBzdHlsZUVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiZGl2IHsgY29sb3I6IGdyZWVuIH0iOworICAgIGQuc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOworfQoreworICAgIGNvbnN0IHN0eWxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgc3R5bGVFbGVtZW50
LnRleHRDb250ZW50ID0gImRpdiB7IGNvbG9yOiBibHVlIH0iOworICAgIGUuc2hhZG93Um9vdC5h
cHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOworfQorCitmLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rv
cigic3R5bGUiKS5zaGVldC5hZGRSdWxlKCJkaXYiLCAiY29sb3I6IGJsdWUiKTsKK2cuc2hhZG93
Um9vdC5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpLnRleHRDb250ZW50ID0gIiI7CitoLnNoYWRvd1Jv
b3QucXVlcnlTZWxlY3Rvcigic3R5bGUiKS5yZW1vdmUoKTsKKworaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgbG9nLnRleHRDb250ZW50ICs9IGludGVybmFscy5kdW1wU3R5bGVSZXNvbHZlcnMo
KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU4YTg3ZThhODAxLi5iZjA5MDkzODMwZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2OSBAQAorMjAyMS0wNC0yOSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgU2hhcmUgc3R5bGUgcmVzb2x2ZXJzIGJldHdl
ZW4gYXV0aG9yIHNoYWRvdyB0cmVlcyB3aXRob3V0IHN0eWxlIHNoZWV0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI1MTAyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBQcmVwYXJlIGZvciBzaGFyaW5nIHN0eWxl
IHJlc29sdmVycyAoYW5kIGFsbCB0aGUgcmVsYXRlZCBkYXRhKSBiZXR3ZWVuIHNoYWRvdyB0cmVl
cyBiZXlvbmQKKyAgICAgICAgdGhlIGN1cnJlbnRseSBzdXBwb3J0ZWQgdXNlciBhZ2VudCBzaGFk
b3cgdHJlZXMuIFRoaXMgcGF0Y2ggcmVmYWN0b3JzIHRoZSBzaGFyaW5nIGNvZGUKKyAgICAgICAg
YW5kIGFkZHMgc3VwcG9ydCBmb3Igc2hhcmluZyByZXNvbHZlcnMgZm9yIGF1dGhvciBzaGFkb3cg
dHJlZXMgd2l0aG91dCBzdHlsZSBzaGVldHMuCisgICAgICAgIAorICAgICAgICBUZXN0OiBmYXN0
L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmluZy5odG1sCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnVzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgTW92
ZSB0aGUgc2hhcmVkIFVBIHJlc29sdmVyIHRvIFN0eWxlOjpTY29wZS4KKyAgICAgICAgCisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVSZXNvbHZlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjp3YXNTaGFyZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlJlc29sdmVyOjpzZXRXYXNTaGFyZWQpOgorICAgICAgICAK
KyAgICAgICAgQWRkIGEgYml0IGluZGljYXRpbmcgaWYgYSByZXNvbHZlciBoYXMgYmVlbiBzaGFy
ZWQgYmV0d2VlbiBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjcmVhdGVEb2N1bWVudFJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6Y3JlYXRlT3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29s
dmVyKToKKyAgICAgICAgCisgICAgICAgIEZhY3RvciBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAg
IFNoYXJlIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUgcmVzb2x2ZXIgKGFzIGJlZm9yZSkgYW5kIGFs
c28gcmVzb2x2ZXIgZm9yIGVtcHR5IGF1dGhvciBzaGFkb3cgdHJlZXMuCisKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZTo6dW5zaGFyZVNoYWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0
aW9uKToKKyAgICAgICAgCisgICAgICAgIElmIHdlIG11dGF0ZSBhbiBleGlzdGluZyByZXNvbHZl
ciB3ZSBuZWVkIHRvIG1ha2UgaXQgdW5hdmFpbGFibGUgZm9yIHNoYXJpbmcuCisgICAgICAgIAor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjbGVhclJlc29sdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6U2NvcGU6OmFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKToKKyAgICAgICAgCisgICAg
ICAgIElmIHdlIGFyZSBhYm91dCB0byBtdXRhdGUgYWxyZWFkeSBzaGFyZWQgcmVzb2x2ZXIgd2Ug
bmVlZCB0byBjcmVhdGUgYSBuZXcgb25lLgorICAgICAgICAKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTY29wZTo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAKKyAgICAgICAg
SWYgc3R5bGUgc2hlZXRzIGNoYW5nZSBhbmQgdGhlIHJlc29sdmVyIGlzIHNoYXJlZCBhbHdheXMg
bG9vayBpdCB1cCBhZ2FpbiAoc2luY2UgaXQgY2FuJ3QgYmUgbXV0YXRlZCkuCisKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6dXBkYXRlUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNjb3BlOjpzY2hlZHVsZVVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6U2NvcGU6Omluc2VydGVkSW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
U2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6U2NvcGU6OmRvY3VtZW50U2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6
OlNjb3BlOjppc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNjb3BlOjpzaG91bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVS
ZXNvbHZlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6
OnJlc29sdmVySWZFeGlzdHMpOiBEZWxldGVkLgorICAgICAgICAqIHN0eWxlL1N0eWxlU2NvcGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6Cisg
ICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmg6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGVSdWxlU2V0czo6c2V0SXNGb3JTaGFkb3dTY29wZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmR1bXBTdHlsZVJlc29sdmVycyk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6Cisg
ICAgICAgIAorICAgICAgICBUZXN0aW5nIHN1cHBvcnQuCisKIDIwMjEtMDQtMjYgIEFudHRpIEtv
aXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmNvdW50IFN0eWxlOjpSZXNv
bHZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMmFlM2MzZGViOTEwLi4xYWQ5MjdmZDZk
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjM4MSwxMyArMjM4MSw2IEBAIHZvaWQg
RG9jdW1lbnQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNp
emUmIHBhZ2VTaXplLCBpbnQmCiAgICAgbWFyZ2luTGVmdCA9IHN0eWxlLT5tYXJnaW5MZWZ0KCku
aXNBdXRvKCkgPyBtYXJnaW5MZWZ0IDogaW50VmFsdWVGb3JMZW5ndGgoc3R5bGUtPm1hcmdpbkxl
ZnQoKSwgd2lkdGgpOwogfQogCi1TdHlsZTo6UmVzb2x2ZXImIERvY3VtZW50Ojp1c2VyQWdlbnRT
aGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpCi17Ci0gICAgaWYgKCFtX3VzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyKQotICAgICAgICBtX3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29s
dmVyID0gU3R5bGU6OlJlc29sdmVyOjpjcmVhdGUoKnRoaXMpOwotICAgIHJldHVybiAqbV91c2Vy
QWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcjsKLX0KLQogdm9pZCBEb2N1bWVudDo6Zm9udHNO
ZWVkVXBkYXRlKEZvbnRTZWxlY3RvciYpCiB7CiAgICAgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0
aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCk7CkBAIC0yNDAyLDExICsyMzk1LDYgQEAgdm9p
ZCBEb2N1bWVudDo6aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxl
UmVjYWxjKCkKICAgICBzY2hlZHVsZUZ1bGxTdHlsZVJlYnVpbGQoKTsKIH0KIAotdm9pZCBEb2N1
bWVudDo6ZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCkKLXsKLSAgICBtX3VzZXJBZ2VudFNoYWRvd1Ry
ZWVTdHlsZVJlc29sdmVyID0gbnVsbHB0cjsKLX0KLQogdm9pZCBEb2N1bWVudDo6c2V0SXNSZXNv
bHZpbmdUcmVlU3R5bGUoYm9vbCB2YWx1ZSkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCh2YWx1ZSAh
PSBtX2lzUmVzb2x2aW5nVHJlZVN0eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDhmMGEw
NTZkMTg1Li42ZTE0Y2NmNGYwMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMzEzLDcgKzEz
MTMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZUFuZEZvcmNlU3R5bGVSZWNhbGMoKTsKIAogICAgIHZvaWQgZGlkUmVtb3ZlQWxsUGVuZGluZ1N0
eWxlc2hlZXQoKTsKLSAgICB2b2lkIGRpZENsZWFyU3R5bGVSZXNvbHZlcigpOwogCiAgICAgYm9v
bCBpblN0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1cm4gbV9pblN0eWxlUmVjYWxjOyB9CiAgICAg
Ym9vbCBpblJlbmRlclRyZWVVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2luUmVuZGVyVHJlZVVw
ZGF0ZTsgfQpAQCAtMTQ2Miw3ICsxNDYxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkaWRJbnNl
cnRJbkRvY3VtZW50U2hhZG93Um9vdChTaGFkb3dSb290Jik7CiAgICAgdm9pZCBkaWRSZW1vdmVJ
bkRvY3VtZW50U2hhZG93Um9vdChTaGFkb3dSb290Jik7Ci0gICAgY29uc3QgSGFzaFNldDxTaGFk
b3dSb290Kj4mIGluRG9jdW1lbnRTaGFkb3dSb290cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Eb2N1
bWVudFNoYWRvd1Jvb3RzOyB9CisgICAgY29uc3QgTGlzdEhhc2hTZXQ8U2hhZG93Um9vdCo+JiBp
bkRvY3VtZW50U2hhZG93Um9vdHMoKSBjb25zdCB7IHJldHVybiBtX2luRG9jdW1lbnRTaGFkb3dS
b290czsgfQogCiAgICAgdm9pZCBhdHRhY2hUb0NhY2hlZEZyYW1lKENhY2hlZEZyYW1lQmFzZSYp
OwogICAgIHZvaWQgZGV0YWNoRnJvbUNhY2hlZEZyYW1lKENhY2hlZEZyYW1lQmFzZSYpOwpAQCAt
MTc0MSw4ICsxNzQwLDYgQEAgcHJpdmF0ZToKIAogICAgIFVuaXF1ZVJlZjxRdWlya3M+IG1fcXVp
cmtzOwogCi0gICAgUmVmUHRyPFN0eWxlOjpSZXNvbHZlcj4gbV91c2VyQWdlbnRTaGFkb3dUcmVl
U3R5bGVSZXNvbHZlcjsKLQogICAgIFJlZlB0cjxET01XaW5kb3c+IG1fZG9tV2luZG93OwogICAg
IFdlYWtQdHI8RG9jdW1lbnQ+IG1fY29udGV4dERvY3VtZW50OwogCkBAIC0xOTk0LDcgKzE5OTEs
NyBAQCBwcml2YXRlOgogICAgIFdlYWtIYXNoU2V0PE1lZGlhUHJvZHVjZXI+IG1fYXVkaW9Qcm9k
dWNlcnM7CiAgICAgV2Vha1B0cjxTcGVlY2hSZWNvZ25pdGlvbj4gbV9hY3RpdmVTcGVlY2hSZWNv
Z25pdGlvbjsKIAotICAgIEhhc2hTZXQ8U2hhZG93Um9vdCo+IG1faW5Eb2N1bWVudFNoYWRvd1Jv
b3RzOworICAgIExpc3RIYXNoU2V0PFNoYWRvd1Jvb3QqPiBtX2luRG9jdW1lbnRTaGFkb3dSb290
czsKIAogI2lmIEVOQUJMRShXSVJFTEVTU19QTEFZQkFDS19UQVJHRVQpCiAgICAgdXNpbmcgVGFy
Z2V0SWRUb0NsaWVudE1hcCA9IEhhc2hNYXA8UGxheWJhY2tUYXJnZXRDbGllbnRDb250ZXh0SWRl
bnRpZmllciwgV2ViQ29yZTo6TWVkaWFQbGF5YmFja1RhcmdldENsaWVudCo+OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmgKaW5kZXggZGFiMDk4ZGVkNzFmLi41NzMxYmNmMWRmZDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKICAgICB1c2luZyBUcmVl
U2NvcGU6OnJvb3ROb2RlOwogCi0gICAgU3R5bGU6OlNjb3BlJiBzdHlsZVNjb3BlKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgU3R5bGU6OlNjb3BlJiBzdHlsZVNjb3BlKCk7CiAgICAgU3R5bGVTaGVl
dExpc3QmIHN0eWxlU2hlZXRzKCk7CiAKICAgICBib29sIHJlc2V0U3R5bGVJbmhlcml0YW5jZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzZXRTdHlsZUluaGVyaXRhbmNlOyB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVJlc29sdmVyLmgKaW5kZXggNTE3NDkyYzllODM1Li42OTc3Y2M3YTNlN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVJlc29sdmVyLmgKQEAgLTE0MCw2ICsxNDAsOSBAQCBwdWJsaWM6
CiAKICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkg
eyByZXR1cm4gbV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzOyB9CiAKKyAgICBib29sIGlzU2hhcmVk
QmV0d2VlblNoYWRvd1RyZWVzKCkgY29uc3QgeyByZXR1cm4gbV9pc1NoYXJlZEJldHdlZW5TaGFk
b3dUcmVlczsgfQorICAgIHZvaWQgc2V0U2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzKCkgeyBtX2lz
U2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzID0gdHJ1ZTsgfQorCiBwcml2YXRlOgogICAgIGZyaWVu
ZCBjbGFzcyBQYWdlUnVsZUNvbGxlY3RvcjsKIApAQCAtMTk2LDYgKzE5OSw4IEBAIHByaXZhdGU6
CiAgICAgTWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hlIG1fbWF0Y2hlZERlY2xhcmF0aW9uc0NhY2hl
OwogCiAgICAgYm9vbCBtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyB7IHRydWUgfTsKKyAgICBi
b29sIG1faXNTaGFyZWRCZXR3ZWVuU2hhZG93VHJlZXMgeyBmYWxzZSB9OworCiAgICAgLy8gU2Vl
IGlmIHdlIHN0aWxsIGhhdmUgY3Jhc2hlcyB3aGVyZSBSZXNvbHZlciBnZXRzIGRlbGV0ZWQgZWFy
bHkuCiAgICAgYm9vbCBtX2lzRGVsZXRlZCB7IGZhbHNlIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlLmNwcAppbmRleCBjOGJlODJjM2FiYjIuLjk5ZWQyNzUyMjRiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVTY29wZS5jcHAKQEAgLTc0LDYxICs3NCw3MiBAQCBTY29wZTo6flNjb3Bl
KCkKICAgICBBU1NFUlQoIWhhc1BlbmRpbmdTaGVldHMoKSk7CiB9CiAKLWJvb2wgU2NvcGU6OnNo
b3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkgY29uc3QKK1Jl
c29sdmVyJiBTY29wZTo6cmVzb2x2ZXIoKQogewotICAgIGlmICghbV9zaGFkb3dSb290KQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fc2hhZG93Um9vdC0+bW9kZSgpICE9IFNoYWRv
d1Jvb3RNb2RlOjpVc2VyQWdlbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAvLyBJZiB3
ZSBoYXZlIHN0eWxlc2hlZXRzIGluIHRoZSB1c2VyIGFnZW50IHNoYWRvdyB0cmVlIHVzZSBwZXIt
c2NvcGUgcmVzb2x2ZXIuCi0gICAgaWYgKCFtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAo
IW1fcmVzb2x2ZXIpIHsKKyAgICAgICAgaWYgKG1fc2hhZG93Um9vdCkKKyAgICAgICAgICAgIGNy
ZWF0ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNvbHZlcigpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjcmVhdGVEb2N1bWVudFJlc29sdmVyKCk7CisgICAgfQorICAgIHJldHVybiAqbV9y
ZXNvbHZlcjsKIH0KIAotUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCit2b2lkIFNjb3BlOjpj
cmVhdGVEb2N1bWVudFJlc29sdmVyKCkKIHsKLSAgICBpZiAoc2hvdWxkVXNlU2hhcmVkVXNlckFn
ZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSkKLSAgICAgICAgcmV0dXJuIG1fZG9jdW1lbnQu
dXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAgICBBU1NFUlQoIW1fcmVzb2x2
ZXIpOworICAgIEFTU0VSVCghbV9zaGFkb3dSb290KTsKIAotICAgIGlmICghbV9yZXNvbHZlcikg
ewotICAgICAgICBTZXRGb3JTY29wZTxib29sPiBpc1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1f
aXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUgfTsKKyAgICBTZXRGb3JTY29wZTxib29sPiBp
c1VwZGF0aW5nU3R5bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUg
fTsKIAotICAgICAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNyZWF0ZShtX2RvY3VtZW50KTsK
KyAgICBtX3Jlc29sdmVyID0gUmVzb2x2ZXI6OmNyZWF0ZShtX2RvY3VtZW50KTsKIAotICAgICAg
ICBpZiAoIW1fc2hhZG93Um9vdCkgewotICAgICAgICAgICAgbV9kb2N1bWVudC5mb250U2VsZWN0
b3IoKS5idWlsZFN0YXJ0ZWQoKTsKLSAgICAgICAgICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCku
aW5pdGlhbGl6ZVVzZXJTdHlsZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbV9y
ZXNvbHZlci0+cnVsZVNldHMoKS5zZXRJc0ZvclNoYWRvd1Njb3BlKCk7Ci0gICAgICAgICAgICBt
X3Jlc29sdmVyLT5ydWxlU2V0cygpLnNldFVzZXNTaGFyZWRVc2VyU3R5bGUobV9zaGFkb3dSb290
LT5tb2RlKCkgIT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCk7Ci0gICAgICAgIH0KKyAgICBt
X2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwogCi0gICAgICAgIG1fcmVz
b2x2ZXItPmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7Ci0gICAgICAgIG1fcmVzb2x2ZXIt
PmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG1fYWN0aXZlU3R5bGVTaGVldHMpOworICAgIG1fcmVz
b2x2ZXItPnJ1bGVTZXRzKCkuaW5pdGlhbGl6ZVVzZXJTdHlsZSgpOworICAgIG1fcmVzb2x2ZXIt
PmFkZEN1cnJlbnRTVkdGb250RmFjZVJ1bGVzKCk7CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0
aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNoZWV0cyk7CiAKLSAgICAgICAgaWYgKCFtX3No
YWRvd1Jvb3QpCi0gICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkQ29t
cGxldGVkKCk7CisgICAgbV9kb2N1bWVudC5mb250U2VsZWN0b3IoKS5idWlsZENvbXBsZXRlZCgp
OworfQorCit2b2lkIFNjb3BlOjpjcmVhdGVPckZpbmRTaGFyZWRTaGFkb3dUcmVlUmVzb2x2ZXIo
KQoreworICAgIEFTU0VSVCghbV9yZXNvbHZlcik7CisgICAgQVNTRVJUKG1fc2hhZG93Um9vdCk7
CisKKyAgICBpZiAobV9hY3RpdmVTdHlsZVNoZWV0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byYgc2hhcmVkUmVzb2x2ZXIgPSBpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IGRvY3VtZW50
U2NvcGUoKS5tX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlciA6IGRvY3VtZW50U2Nv
cGUoKS5tX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyOworICAgICAgICBpZiAo
IXNoYXJlZFJlc29sdmVyKSB7CisgICAgICAgICAgICBzaGFyZWRSZXNvbHZlciA9IFJlc29sdmVy
OjpjcmVhdGUobV9kb2N1bWVudCk7CisgICAgICAgICAgICBzaGFyZWRSZXNvbHZlci0+cnVsZVNl
dHMoKS5zZXRVc2VzU2hhcmVkVXNlclN0eWxlKCFpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2hhcmVkUmVzb2x2ZXItPnNldFNoYXJlZEJl
dHdlZW5TaGFkb3dUcmVlcygpOworCisgICAgICAgIG1fcmVzb2x2ZXIgPSBzaGFyZWRSZXNvbHZl
cjsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQoIW1fc2hhZG93Um9vdCB8fCAm
bV9kb2N1bWVudCA9PSAmbV9zaGFkb3dSb290LT5kb2N1bWVudCgpKTsKLSAgICBBU1NFUlQoJm1f
cmVzb2x2ZXItPmRvY3VtZW50KCkgPT0gJm1fZG9jdW1lbnQpOwotICAgIHJldHVybiAqbV9yZXNv
bHZlcjsKKworICAgIG1fcmVzb2x2ZXIgPSBSZXNvbHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOwor
CisgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5zZXRVc2VzU2hhcmVkVXNlclN0eWxlKCFpc0Zv
clVzZXJBZ2VudFNoYWRvd1RyZWUoKSk7CisgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5
bGVTaGVldHMobV9hY3RpdmVTdHlsZVNoZWV0cyk7CiB9CiAKLVJlc29sdmVyKiBTY29wZTo6cmVz
b2x2ZXJJZkV4aXN0cygpCit2b2lkIFNjb3BlOjp1bnNoYXJlU2hhZG93VHJlZVJlc29sdmVyQmVm
b3JlTXV0YXRpb24oKQogewotICAgIGlmIChzaG91bGRVc2VTaGFyZWRVc2VyQWdlbnRTaGFkb3dU
cmVlU3R5bGVSZXNvbHZlcigpKQotICAgICAgICByZXR1cm4gJm1fZG9jdW1lbnQudXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKTsKKyAgICBBU1NFUlQobV9zaGFkb3dSb290KTsKKyAg
ICBBU1NFUlQoIW1fcmVzb2x2ZXItPmlzU2hhcmVkQmV0d2VlblNoYWRvd1RyZWVzKCkpOwogCi0g
ICAgcmV0dXJuIG1fcmVzb2x2ZXIuZ2V0KCk7CisgICAgYXV0byYgc2hhcmVkUmVzb2x2ZXIgPSBp
c0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSA/IGRvY3VtZW50U2NvcGUoKS5tX3NoYXJlZFVzZXJB
Z2VudFNoYWRvd1RyZWVSZXNvbHZlciA6IGRvY3VtZW50U2NvcGUoKS5tX3NoYXJlZEVtcHR5QXV0
aG9yU2hhZG93VHJlZVJlc29sdmVyOworICAgIAorICAgIGlmIChtX3Jlc29sdmVyID09IHNoYXJl
ZFJlc29sdmVyKQorICAgICAgICBzaGFyZWRSZXNvbHZlciA9IG51bGxwdHI7CiB9CiAKIHZvaWQg
U2NvcGU6OmNsZWFyUmVzb2x2ZXIoKQogewogICAgIG1fcmVzb2x2ZXIgPSBudWxscHRyOwotCi0g
ICAgaWYgKCFtX3NoYWRvd1Jvb3QpCi0gICAgICAgIG1fZG9jdW1lbnQuZGlkQ2xlYXJTdHlsZVJl
c29sdmVyKCk7CiB9CiAKIHZvaWQgU2NvcGU6OnJlbGVhc2VNZW1vcnkoKQpAQCAtMTQ4LDYgKzE1
OSw5IEBAIHZvaWQgU2NvcGU6OnJlbGVhc2VNZW1vcnkoKQogICAgIH0KICNlbmRpZgogICAgIGNs
ZWFyUmVzb2x2ZXIoKTsKKworICAgIG1fc2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVy
ID0gbnVsbHB0cjsKKyAgICBtX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyID0g
bnVsbHB0cjsKIH0KIAogU2NvcGUmIFNjb3BlOjpmb3JOb2RlKE5vZGUmIG5vZGUpCkBAIC0zODMs
NyArMzk3LDExIEBAIFNjb3BlOjpTdHlsZVNoZWV0Q2hhbmdlIFNjb3BlOjphbmFseXplU3R5bGVT
aGVldENoYW5nZShjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0CiB7CiAgICAgdW5zaWduZWQgbmV3
U3R5bGVzaGVldENvdW50ID0gbmV3U3R5bGVzaGVldHMuc2l6ZSgpOwogCi0gICAgaWYgKCFyZXNv
bHZlcklmRXhpc3RzKCkpCisgICAgYXV0byogcmVzb2x2ZXIgPSByZXNvbHZlcklmRXhpc3RzKCk7
CisgICAgaWYgKCFyZXNvbHZlcikKKyAgICAgICAgcmV0dXJuIHsgUmVzb2x2ZXJVcGRhdGVUeXBl
OjpSZWNvbnN0cnVjdCB9OworCisgICAgaWYgKHJlc29sdmVyLT5pc1NoYXJlZEJldHdlZW5TaGFk
b3dUcmVlcygpKQogICAgICAgICByZXR1cm4geyBSZXNvbHZlclVwZGF0ZVR5cGU6OlJlY29uc3Ry
dWN0IH07CiAKICAgICAvLyBGaW5kIG91dCB3aGljaCBzdHlsZXNoZWV0cyBhcmUgbmV3LgpAQCAt
NDUyLDggKzQ3MCwxMiBAQCB2b2lkIFNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRh
dGVUeXBlIHVwZGF0ZVR5cGUpCiAgICAgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0
eWxlU2hlZXRzKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IGFjdGl2ZUNT
U1N0eWxlU2hlZXRzOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2Rv
Y3VtZW50LmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuaW5qZWN0ZWRBdXRob3JTdHlsZVNoZWV0cygp
KTsKLSAgICBhY3RpdmVDU1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRl
bnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0eWxlU2hlZXRzRm9yVGVzdGluZygpKTsKKworICAg
IGlmICghaXNGb3JVc2VyQWdlbnRTaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgYWN0aXZlQ1NTU3R5
bGVTaGVldHMuYXBwZW5kVmVjdG9yKG1fZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5p
bmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgICAgICBhY3RpdmVDU1NTdHlsZVNoZWV0
cy5hcHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0cygpLmF1dGhvclN0
eWxlU2hlZXRzRm9yVGVzdGluZygpKTsKKyAgICB9CisKICAgICBmaWx0ZXJFbmFibGVkTm9uZW1w
dHlDU1NTdHlsZVNoZWV0cyhhY3RpdmVDU1NTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMp
OwogCiAgICAgYXV0byBzdHlsZVNoZWV0Q2hhbmdlID0gU3R5bGVTaGVldENoYW5nZSB7IFJlc29s
dmVyVXBkYXRlVHlwZTo6UmVjb25zdHJ1Y3QgfTsKQEAgLTQ5NiwxOSArNTE4LDI1IEBAIHZvaWQg
U2NvcGU6OnVwZGF0ZVJlc29sdmVyKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+JiBhY3Rp
dmVTdHlsZVNoZWV0cywgUmVzCiAgICAgICAgIGNsZWFyUmVzb2x2ZXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBhdXRvJiBzdHlsZVJlc29sdmVyID0gcmVzb2x2ZXIoKTsKKworICAg
IGlmIChtX3NoYWRvd1Jvb3QpCisgICAgICAgIHVuc2hhcmVTaGFkb3dUcmVlUmVzb2x2ZXJCZWZv
cmVNdXRhdGlvbigpOwogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNVcGRhdGluZ1N0eWxlUmVz
b2x2ZXIgeyBtX2lzVXBkYXRpbmdTdHlsZVJlc29sdmVyLCB0cnVlIH07CisKICAgICBpZiAodXBk
YXRlVHlwZSA9PSBSZXNvbHZlclVwZGF0ZVR5cGU6OlJlc2V0KSB7Ci0gICAgICAgIHN0eWxlUmVz
b2x2ZXIucnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxlKCk7Ci0gICAgICAgIHN0eWxlUmVzb2x2
ZXIuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoYWN0aXZlU3R5bGVTaGVldHMpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIEFTU0VSVCh1cGRhdGVUeXBlID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRk
aXRpdmUpOwotICAgICAgICB1bnNpZ25lZCBmaXJzdE5ld0luZGV4ID0gbV9hY3RpdmVTdHlsZVNo
ZWV0cy5zaXplKCk7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG5ld1N0
eWxlU2hlZXRzOwotICAgICAgICBuZXdTdHlsZVNoZWV0cy5hcHBlbmRSYW5nZShhY3RpdmVTdHls
ZVNoZWV0cy5iZWdpbigpICsgZmlyc3ROZXdJbmRleCwgYWN0aXZlU3R5bGVTaGVldHMuZW5kKCkp
OwotICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKG5ld1N0eWxl
U2hlZXRzKTsKKyAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNldHMoKS5yZXNldEF1dGhvclN0eWxl
KCk7CisgICAgICAgIG1fcmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKGFjdGl2ZVN0
eWxlU2hlZXRzKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIEFTU0VSVCh1cGRhdGVU
eXBlID09IFJlc29sdmVyVXBkYXRlVHlwZTo6QWRkaXRpdmUpOworICAgIEFTU0VSVChhY3RpdmVT
dHlsZVNoZWV0cy5zaXplKCkgPj0gbV9hY3RpdmVTdHlsZVNoZWV0cy5zaXplKCkpOworCisgICAg
dW5zaWduZWQgZmlyc3ROZXdJbmRleCA9IG1fYWN0aXZlU3R5bGVTaGVldHMuc2l6ZSgpOworICAg
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IG5ld1N0eWxlU2hlZXRzOworICAgIG5ld1N0
eWxlU2hlZXRzLmFwcGVuZFJhbmdlKGFjdGl2ZVN0eWxlU2hlZXRzLmJlZ2luKCkgKyBmaXJzdE5l
d0luZGV4LCBhY3RpdmVTdHlsZVNoZWV0cy5lbmQoKSk7CisgICAgbV9yZXNvbHZlci0+YXBwZW5k
QXV0aG9yU3R5bGVTaGVldHMobmV3U3R5bGVTaGVldHMpOwogfQogCiBjb25zdCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+PiBTY29wZTo6YWN0aXZlU3R5bGVTaGVldHNGb3JJbnNwZWN0b3Io
KQpAQCAtNTgxLDcgKzYwOSw3IEBAIHZvaWQgU2NvcGU6OnNjaGVkdWxlVXBkYXRlKFVwZGF0ZVR5
cGUgdXBkYXRlKQogICAgIGlmICghbV9wZW5kaW5nVXBkYXRlIHx8ICptX3BlbmRpbmdVcGRhdGUg
PCB1cGRhdGUpIHsKICAgICAgICAgbV9wZW5kaW5nVXBkYXRlID0gdXBkYXRlOwogICAgICAgICBp
ZiAobV9zaGFkb3dSb290KQotICAgICAgICAgICAgbV9kb2N1bWVudC5zdHlsZVNjb3BlKCkubV9o
YXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgZG9jdW1l
bnRTY29wZSgpLm1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlID0gdHJ1ZTsKICAgICB9
CiAKICAgICBtX2RvY3VtZW50LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgfSk7CkBAIC01OTIs
NyArNjIwLDcgQEAgdm9pZCBTY29wZTo6aW5zZXJ0ZWRJbkRvY3VtZW50KCkKICAgICBpZiAoIW1f
cGVuZGluZ1VwZGF0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kb2N1bWVudC5zdHlsZVNj
b3BlKCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgPSB0cnVlOworICAgIGRvY3Vt
ZW50U2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSA9IHRydWU7CiAgICAg
bV9kb2N1bWVudC5zY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSh7IH0pOwogfQogCkBAIC02NTksNiAr
Njg3LDkgQEAgdm9pZCBTY29wZTo6ZGlkQ2hhbmdlU3R5bGVTaGVldENvbnRlbnRzKCkKIHZvaWQg
U2NvcGU6OmRpZENoYW5nZVN0eWxlU2hlZXRFbnZpcm9ubWVudCgpCiB7CiAgICAgaWYgKCFtX3No
YWRvd1Jvb3QpIHsKKyAgICAgICAgbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXIg
PSBudWxscHRyOworICAgICAgICBtX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVy
ID0gbnVsbHB0cjsKKwogICAgICAgICBmb3IgKGF1dG8qIGRlc2NlbmRhbnRTaGFkb3dSb290IDog
bV9kb2N1bWVudC5pbkRvY3VtZW50U2hhZG93Um9vdHMoKSkgewogICAgICAgICAgICAgLy8gU3R5
bGVzaGVldHMgaXMgYXV0aG9yIHNoYWRvdyByb290cyBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQu
CiAgICAgICAgICAgICBpZiAoZGVzY2VuZGFudFNoYWRvd1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dS
b290TW9kZTo6VXNlckFnZW50KQpAQCAtNjg2LDUgKzcxNywxNSBAQCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlU2hlZXQ+PiYgU2NvcGU6OnN0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3QoKQog
ICAgIHJldHVybiBtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3Q7CiB9CiAKK1Njb3BlJiBT
Y29wZTo6ZG9jdW1lbnRTY29wZSgpCit7CisgICAgcmV0dXJuIG1fZG9jdW1lbnQuc3R5bGVTY29w
ZSgpOworfQorCitib29sIFNjb3BlOjppc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3NoYWRvd1Jvb3QgJiYgbV9zaGFkb3dSb290LT5tb2RlKCkgPT0gU2hh
ZG93Um9vdE1vZGU6OlVzZXJBZ2VudDsKK30KKwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29w
ZS5oCmluZGV4IDdjMDcyYTU5NTFiNi4uNDQ3YmFjYjBjNTk1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVTY29wZS5oCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBXRUJD
T1JFX0VYUE9SVCBSZXNvbHZlciYgcmVzb2x2ZXIoKTsKLSAgICBSZXNvbHZlciogcmVzb2x2ZXJJ
ZkV4aXN0cygpOworICAgIFJlc29sdmVyKiByZXNvbHZlcklmRXhpc3RzKCkgeyByZXR1cm4gbV9y
ZXNvbHZlci5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJSZXNvbHZlcigpOwogICAgIHZvaWQgcmVs
ZWFzZU1lbW9yeSgpOwogCkBAIC0xMzIsNyArMTMyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBT
Y29wZSogZm9yT3JkaW5hbChFbGVtZW50JiwgU2NvcGVPcmRpbmFsKTsKIAogcHJpdmF0ZToKLSAg
ICBib29sIHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkg
Y29uc3Q7CisgICAgU2NvcGUmIGRvY3VtZW50U2NvcGUoKTsKKyAgICBib29sIGlzRm9yVXNlckFn
ZW50U2hhZG93VHJlZSgpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRSZW1vdmVQZW5kaW5nU3R5bGVz
aGVldCgpOwogCkBAIC0xNjAsNiArMTYxLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRh
dGVTdHlsZUFmdGVyU3R5bGVTaGVldENoYW5nZShjb25zdCBTdHlsZVNoZWV0Q2hhbmdlJik7CiAK
ICAgICB2b2lkIHVwZGF0ZVJlc29sdmVyKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+Jiwg
UmVzb2x2ZXJVcGRhdGVUeXBlKTsKKyAgICB2b2lkIGNyZWF0ZURvY3VtZW50UmVzb2x2ZXIoKTsK
KyAgICB2b2lkIGNyZWF0ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNvbHZlcigpOworICAgIHZv
aWQgdW5zaGFyZVNoYWRvd1RyZWVSZXNvbHZlckJlZm9yZU11dGF0aW9uKCk7CiAKICAgICBEb2N1
bWVudCYgbV9kb2N1bWVudDsKICAgICBTaGFkb3dSb290KiBtX3NoYWRvd1Jvb3QgeyBudWxscHRy
IH07CkBAIC0xODgsNiArMTkyLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc0Rlc2NlbmRh
bnRXaXRoUGVuZGluZ1VwZGF0ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3VzZXNTdHlsZUJhc2Vk
RWRpdGFiaWxpdHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZl
ciB7IGZhbHNlIH07CisKKyAgICAvLyBGSVhNRTogVGhlc2UgKGFuZCBzb21lIHRoaW5ncyBhYm92
ZSkgYXJlIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSByb290IHNjb3BlLgorICAgIFJlZlB0cjxSZXNv
bHZlcj4gbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgUmVmUHRyPFJl
c29sdmVyPiBtX3NoYXJlZEVtcHR5QXV0aG9yU2hhZG93VHJlZVJlc29sdmVyOwogfTsKIAogaW5s
aW5lIGJvb2wgU2NvcGU6Omhhc1BlbmRpbmdTaGVldHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRleCA4ZGVhOTAxYWRhOWYuLjc5YmJkZDFmMmUx
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTY5LDgg
KzY5LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNDb21wbGV4U2VsZWN0b3JzRm9yU3R5bGVB
dHRyaWJ1dGUoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0SXNGb3JTaGFkb3dTY29wZSgpIHsgbV9p
c0ZvclNoYWRvd1Njb3BlID0gdHJ1ZTsgfQotCiAgICAgdm9pZCBzZXRVc2VzU2hhcmVkVXNlclN0
eWxlKGJvb2wgYikgeyBtX3VzZXNTaGFyZWRVc2VyU3R5bGUgPSBiOyB9CiAgICAgdm9pZCBpbml0
aWFsaXplVXNlclN0eWxlKCk7CiAKQEAgLTExMCw3ICsxMDgsNiBAQCBwcml2YXRlOgogICAgIG11
dGFibGUgdW5zaWduZWQgbV91c2VyQWdlbnRNZWRpYVF1ZXJ5UnVsZUNvdW50T25VcGRhdGUgeyAw
IH07CiAKICAgICBib29sIG1fdXNlc1NoYXJlZFVzZXJTdHlsZSB7IGZhbHNlIH07Ci0gICAgYm9v
bCBtX2lzRm9yU2hhZG93U2NvcGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0F1dGhvclN0eWxl
RGVmaW5lZCB7IGZhbHNlIH07CiAKICAgICAvLyBGb3IgY2F0Y2hpbmcgPHJkYXI6Ly9wcm9ibGVt
LzUzNDEzMDEzPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IGIyMzliZTFj
MzcyMC4uNDMyZDk3OTUxOWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBA
IC02MjcyLDQgKzYyNzIsMzkgQEAgYm9vbCBJbnRlcm5hbHM6OnJhbmdlSW50ZXJzZWN0c1Jhbmdl
KGNvbnN0IEFic3RyYWN0UmFuZ2UmIGEsIGNvbnN0IEFic3RyYWN0UmFuZ2UKICAgICByZXR1cm4g
aW50ZXJzZWN0c0ZvclRlc3RpbmcoY29udmVydFR5cGUodHlwZSksIG1ha2VTaW1wbGVSYW5nZShh
KSwgbWFrZVNpbXBsZVJhbmdlKGIpKTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6ZHVtcFN0eWxl
UmVzb2x2ZXJzKCkKK3sKKyAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5kb21XaW5kb3coKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICB1
bnNpZ25lZCBjdXJyZW50SWRlbnRpZmllciA9IDA7CisgICAgSGFzaE1hcDxTdHlsZTo6UmVzb2x2
ZXIqLCB1bnNpZ25lZD4gcmVzb2x2ZXJJZGVudGlmaWVyczsKKworICAgIFN0cmluZ0J1aWxkZXIg
cmVzdWx0OworCisgICAgYXV0byBkdW1wUmVzb2x2ZXIgPSBbJl0oYXV0byBuYW1lLCBhdXRvJiBy
ZXNvbHZlcikgeworICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSByZXNvbHZlcklkZW50aWZpZXJz
LmVuc3VyZSgmcmVzb2x2ZXIsIFsmXSB7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudElkZW50
aWZpZXIrKzsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOworCisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIigiLCBuYW1lLCAiICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIoaWRlbnRpZmll
cj0iLCBpZGVudGlmaWVyLCAiKSAiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKGF1dGhvciBy
dWxlIGNvdW50PSIsIHJlc29sdmVyLnJ1bGVTZXRzKCkuYXV0aG9yU3R5bGUoKS5ydWxlQ291bnQo
KSwgIikiKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiKVxuIik7CisgICAgfTsKKworICAgIGR1
bXBSZXNvbHZlcigiZG9jdW1lbnQgcmVzb2x2ZXIiLCBkb2N1bWVudC0+c3R5bGVTY29wZSgpLnJl
c29sdmVyKCkpOworCisgICAgZm9yIChhdXRvKiBzaGFkb3dSb290IDogZG9jdW1lbnQtPmluRG9j
dW1lbnRTaGFkb3dSb290cygpKSB7CisgICAgICAgIGF1dG8qIG5hbWUgPSBzaGFkb3dSb290LT5t
b2RlKCkgPT0gU2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCA/ICJzaGFkb3cgcm9vdCByZXNvbHZl
ciAodXNlciBhZ2VudCkiIDogInNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIjsKKyAgICAg
ICAgZHVtcFJlc29sdmVyKG5hbWUsIHNoYWRvd1Jvb3QtPnN0eWxlU2NvcGUoKS5yZXNvbHZlcigp
KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjJjZDk1
ZTMwOWU4Li4zNDU1ZDE5MjFjMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAt
MTEzOSw2ICsxMTM5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzeXN0ZW1CZWVwKCk7CiAKKyAg
ICBTdHJpbmcgZHVtcFN0eWxlUmVzb2x2ZXJzKCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
SW50ZXJuYWxzKERvY3VtZW50Jik7CiAgICAgRG9jdW1lbnQqIGNvbnRleHREb2N1bWVudCgpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGExYjM4NTFkMTRiOS4u
ZDdlMWE1ODZjZmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMDE4
LDQgKzEwMTgsNiBAQCBlbnVtIFRyZWVUeXBlIHsKICAgICBib29sZWFuIHJhbmdlSW50ZXJzZWN0
c1JhbmdlKEFic3RyYWN0UmFuZ2Ugb3V0ZXJSYW5nZSwgQWJzdHJhY3RSYW5nZSBpbm5lclJhbmdl
LCBvcHRpb25hbCBUcmVlVHlwZSB0cmVlID0gIlRyZWUiKTsKIAogICAgIHVuZGVmaW5lZCBzeXN0
ZW1CZWVwKCk7CisKKyAgICBET01TdHJpbmcgZHVtcFN0eWxlUmVzb2x2ZXJzKCk7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>427408</attachid>
            <date>2021-04-30 04:04:20 -0700</date>
            <delta_ts>2021-04-30 05:19:38 -0700</delta_ts>
            <desc>patch</desc>
            <filename>shared-resolver-7.patch</filename>
            <type>text/plain</type>
            <size>25138</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4MDJlMDg4OWZiNWMuLmJmNDA0MDE5NDQ4ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA0LTMwICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBTaGFyZSBzdHlsZSByZXNvbHZlcnMgYmV0d2VlbiBhdXRob3Igc2hhZG93IHRyZWVzIHdpdGhv
dXQgc3R5bGUgc2hlZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjUxMDIKKworICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAg
ICAgICogZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXItc2hhcmlu
Zy5odG1sOiBBZGRlZC4KKwogMjAyMS0wNC0yNiAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBF
bWl0IG5ldyBHTElCIGJhc2VsaW5lcyBhZnRlciByMjc2NTg0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0eWxlLXJlc29sdmVyLXNoYXJpbmctZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ZmYTBl
Nzg0N2U0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL3N0
eWxlLXJlc29sdmVyLXNoYXJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjYgQEAKK1Zlcmlm
eSB0aGF0IHNoYWRvdyByb290cyB3aXRoIGlkZW50aWNhbCBzdHlsZXMgc2hhcmUgc3R5bGUgcmVz
b2x2ZXJzIChoYXZlIGVxdWFsIGlkZW50aWZpZXIgYmVsb3cpLgorKGRvY3VtZW50IHJlc29sdmVy
IChpZGVudGlmaWVyPTApIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCByZXNv
bHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNvdW50PTApKQor
KHNoYWRvdyByb290IHJlc29sdmVyICh1c2VyIGFnZW50KSAoaWRlbnRpZmllcj0xKSAoYXV0aG9y
IHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZp
ZXI9MikgKGF1dGhvciBydWxlIGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRo
b3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCBy
ZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCiso
c2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9MikgKGF1dGhvciBydWxl
IGNvdW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTMp
IChhdXRob3IgcnVsZSBjb3VudD0xKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAo
aWRlbnRpZmllcj00KSAoYXV0aG9yIHJ1bGUgY291bnQ9MSkpCisoc2hhZG93IHJvb3QgcmVzb2x2
ZXIgKGF1dGhvcikgKGlkZW50aWZpZXI9NSkgKGF1dGhvciBydWxlIGNvdW50PTEpKQorKHNoYWRv
dyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTYpIChhdXRob3IgcnVsZSBjb3Vu
dD0xKSkKKworQWZ0ZXIgc3R5bGUgbXV0YXRpb24KKyhkb2N1bWVudCByZXNvbHZlciAoaWRlbnRp
Zmllcj0wKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKHVz
ZXIgYWdlbnQpIChpZGVudGlmaWVyPTEpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cg
cm9vdCByZXNvbHZlciAodXNlciBhZ2VudCkgKGlkZW50aWZpZXI9MSkgKGF1dGhvciBydWxlIGNv
dW50PTApKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTIpIChh
dXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRl
bnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIg
KGF1dGhvcikgKGlkZW50aWZpZXI9MykgKGF1dGhvciBydWxlIGNvdW50PTEpKQorKHNoYWRvdyBy
b290IHJlc29sdmVyIChhdXRob3IpIChpZGVudGlmaWVyPTQpIChhdXRob3IgcnVsZSBjb3VudD0x
KSkKKyhzaGFkb3cgcm9vdCByZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj01KSAoYXV0aG9y
IHJ1bGUgY291bnQ9MikpCisoc2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikgKGlkZW50aWZp
ZXI9NikgKGF1dGhvciBydWxlIGNvdW50PTIpKQorKHNoYWRvdyByb290IHJlc29sdmVyIChhdXRo
b3IpIChpZGVudGlmaWVyPTIpIChhdXRob3IgcnVsZSBjb3VudD0wKSkKKyhzaGFkb3cgcm9vdCBy
ZXNvbHZlciAoYXV0aG9yKSAoaWRlbnRpZmllcj0yKSAoYXV0aG9yIHJ1bGUgY291bnQ9MCkpCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1z
aGFyaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vc3R5bGUtcmVzb2x2ZXIt
c2hhcmluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGEw
YjVmZGQ0NzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9t
L3N0eWxlLXJlc29sdmVyLXNoYXJpbmcuaHRtbApAQCAtMCwwICsxLDYyIEBACitWZXJpZnkgdGhh
dCBzaGFkb3cgcm9vdHMgd2l0aCBpZGVudGljYWwgc3R5bGVzIHNoYXJlIHN0eWxlIHJlc29sdmVy
cyAoaGF2ZSBlcXVhbCBpZGVudGlmaWVyIGJlbG93KS4KKzxpbnB1dD48L2lucHV0PgorPHRleHRh
cmVhPjwvdGV4dGFyZWE+Cis8ZGl2IGlkPWE+PC9kaXY+Cis8ZGl2IGlkPWI+PC9kaXY+Cis8ZGl2
IGlkPWM+PC9kaXY+Cis8ZGl2IGlkPWQ+PC9kaXY+Cis8ZGl2IGlkPWU+PC9kaXY+Cis8ZGl2IGlk
PWY+PC9kaXY+Cis8ZGl2IGlkPWc+PC9kaXY+Cis8ZGl2IGlkPWg+PC9kaXY+Cis8cHJlIGlkPWxv
Zz48L3ByZT4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gYXR0YWNoU2hhZG93V2l0aFN0eWxlKGlkLCBz
dHlsZSkKK3sKKyAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyIg
KyBpZCk7CisgICAgY29uc3Qgc2hhZG93ID0gZWxlbWVudC5hdHRhY2hTaGFkb3coeyBtb2RlOiAi
b3BlbiIgfSk7CisgICAgc2hhZG93LmlubmVySFRNTCA9IGAKKyAgICAgICAgPHN0eWxlPiR7IHN0
eWxlIH08L3N0eWxlPgorICAgICAgICA8ZGl2PiR7IGlkIH08L2Rpdj4KKyAgICBgOworfQorCith
dHRhY2hTaGFkb3dXaXRoU3R5bGUoImEiLCAiIik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImIi
LCAiIik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImMiLCAiIik7CithdHRhY2hTaGFkb3dXaXRo
U3R5bGUoImQiLCAiIik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImUiLCAiZGl2IHsgY29sb3I6
IGdyZWVuIH0iKTsKK2F0dGFjaFNoYWRvd1dpdGhTdHlsZSgiZiIsICJkaXYgeyBjb2xvcjogZ3Jl
ZW4gfSIpOworYXR0YWNoU2hhZG93V2l0aFN0eWxlKCJnIiwgImRpdiB7IGNvbG9yOiBncmVlbiB9
Iik7CithdHRhY2hTaGFkb3dXaXRoU3R5bGUoImgiLCAiZGl2IHsgY29sb3I6IGdyZWVuIH0iKTsK
KworaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICBsb2cudGV4dENvbnRlbnQgKz0gaW50ZXJu
YWxzLmR1bXBTdHlsZVJlc29sdmVycygpOworICAgIGxvZy50ZXh0Q29udGVudCArPSAiXG5BZnRl
ciBzdHlsZSBtdXRhdGlvblxuIgorfQorCitjLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcigic3R5
bGUiKS50ZXh0Q29udGVudCA9ICJkaXYgeyBjb2xvcjogZ3JlZW4gfSI7CisKK3sKKyAgICBjb25z
dCBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOworICAgIHN0
eWxlRWxlbWVudC50ZXh0Q29udGVudCA9ICJkaXYgeyBjb2xvcjogZ3JlZW4gfSI7CisgICAgZC5z
aGFkb3dSb290LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7Cit9Cit7CisgICAgY29uc3Qgc3R5
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICBzdHlsZUVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiZGl2IHsgY29sb3I6IGJsdWUgfSI7CisgICAgZS5zaGFkb3dS
b290LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7Cit9CisKK2Yuc2hhZG93Um9vdC5xdWVyeVNl
bGVjdG9yKCJzdHlsZSIpLnNoZWV0LmFkZFJ1bGUoImRpdiIsICJjb2xvcjogYmx1ZSIpOworZy5z
aGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoInN0eWxlIikudGV4dENvbnRlbnQgPSAiIjsKK2guc2hh
ZG93Um9vdC5xdWVyeVNlbGVjdG9yKCJzdHlsZSIpLnJlbW92ZSgpOworCitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICBsb2cudGV4dENvbnRlbnQgKz0gaW50ZXJuYWxzLmR1bXBTdHlsZVJlc29s
dmVycygpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNThhODdlOGE4MDEuLmJmMDkwOTM4
MzBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDIxLTA0LTI5ICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaGFyZSBzdHlsZSByZXNvbHZlcnMg
YmV0d2VlbiBhdXRob3Igc2hhZG93IHRyZWVzIHdpdGhvdXQgc3R5bGUgc2hlZXRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjUxMDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgorCisgICAgICAgIFByZXBhcmUgZm9yIHNoYXJpbmcg
c3R5bGUgcmVzb2x2ZXJzIChhbmQgYWxsIHRoZSByZWxhdGVkIGRhdGEpIGJldHdlZW4gc2hhZG93
IHRyZWVzIGJleW9uZAorICAgICAgICB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCB1c2VyIGFnZW50
IHNoYWRvdyB0cmVlcy4gVGhpcyBwYXRjaCByZWZhY3RvcnMgdGhlIHNoYXJpbmcgY29kZQorICAg
ICAgICBhbmQgYWRkcyBzdXBwb3J0IGZvciBzaGFyaW5nIHJlc29sdmVycyBmb3IgYXV0aG9yIHNo
YWRvdyB0cmVlcyB3aXRob3V0IHN0eWxlIHNoZWV0cy4KKyAgICAgICAgCisgICAgICAgIFRlc3Q6
IGZhc3Qvc2hhZG93LWRvbS9zdHlsZS1yZXNvbHZlci1zaGFyaW5nLmh0bWwKKworICAgICAgICAq
IGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXNlckFnZW50
U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmRpZENsZWFyU3R5bGVSZXNvbHZlcik6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAg
ICBNb3ZlIHRoZSBzaGFyZWQgVUEgcmVzb2x2ZXIgdG8gU3R5bGU6OlNjb3BlLgorICAgICAgICAK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlc29sdmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6Ondhc1NoYXJlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UmVzb2x2ZXI6OnNldFdhc1NoYXJlZCk6CisgICAg
ICAgIAorICAgICAgICBBZGQgYSBiaXQgaW5kaWNhdGluZyBpZiBhIHJlc29sdmVyIGhhcyBiZWVu
IHNoYXJlZCBiZXR3ZWVuIHNoYWRvdyB0cmVlcy4KKworICAgICAgICAqIHN0eWxlL1N0eWxlU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmNyZWF0ZURvY3VtZW50UmVzb2x2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpjcmVhdGVPckZpbmRTaGFyZWRTaGFkb3dUcmVl
UmVzb2x2ZXIpOgorICAgICAgICAKKyAgICAgICAgRmFjdG9yIGludG8gYSBmdW5jdGlvbi4KKyAg
ICAgICAgU2hhcmUgdXNlciBhZ2VudCBzaGFkb3cgdHJlZSByZXNvbHZlciAoYXMgYmVmb3JlKSBh
bmQgYWxzbyByZXNvbHZlciBmb3IgZW1wdHkgYXV0aG9yIHNoYWRvdyB0cmVlcy4KKworICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjp1bnNoYXJlU2hhZG93VHJlZVJlc29sdmVyQmVmb3Jl
TXV0YXRpb24pOgorICAgICAgICAKKyAgICAgICAgSWYgd2UgbXV0YXRlIGFuIGV4aXN0aW5nIHJl
c29sdmVyIHdlIG5lZWQgdG8gbWFrZSBpdCB1bmF2YWlsYWJsZSBmb3Igc2hhcmluZy4KKyAgICAg
ICAgCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGU6OmNsZWFyUmVzb2x2ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZTo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UpOgorICAgICAgICAK
KyAgICAgICAgSWYgd2UgYXJlIGFib3V0IHRvIG11dGF0ZSBhbHJlYWR5IHNoYXJlZCByZXNvbHZl
ciB3ZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBvbmUuCisgICAgICAgIAorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyk6CisgICAgICAgIAorICAg
ICAgICBJZiBzdHlsZSBzaGVldHMgY2hhbmdlIGFuZCB0aGUgcmVzb2x2ZXIgaXMgc2hhcmVkIGFs
d2F5cyBsb29rIGl0IHVwIGFnYWluIChzaW5jZSBpdCBjYW4ndCBiZSBtdXRhdGVkKS4KKworICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjp1cGRhdGVSZXNvbHZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnNjaGVkdWxlVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlOjpTY29wZTo6aW5zZXJ0ZWRJbkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpTY29wZTo6ZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpTY29wZTo6ZG9jdW1lbnRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZTo6U2NvcGU6OmlzRm9yVXNlckFnZW50U2hhZG93VHJlZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZTo6U2NvcGU6OnNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVT
dHlsZVJlc29sdmVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpT
Y29wZTo6cmVzb2x2ZXJJZkV4aXN0cyk6IERlbGV0ZWQuCisgICAgICAgICogc3R5bGUvU3R5bGVT
Y29wZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlOjpyZXNvbHZlcklmRXhpc3Rz
KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjpzZXRJc0ZvclNoYWRvd1Njb3BlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZHVtcFN0eWxlUmVzb2x2ZXJzKToKKyAgICAg
ICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlk
bDoKKyAgICAgICAgCisgICAgICAgIFRlc3Rpbmcgc3VwcG9ydC4KKwogMjAyMS0wNC0yNiAgQW50
dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmY291bnQgU3R5bGU6
OlJlc29sdmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAyYWUzYzNkZWI5MTAuLjFhZDky
N2ZkNmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0yMzgxLDEzICsyMzgxLDYgQEAg
dm9pZCBEb2N1bWVudDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoaW50IHBhZ2VJbmRleCwg
SW50U2l6ZSYgcGFnZVNpemUsIGludCYKICAgICBtYXJnaW5MZWZ0ID0gc3R5bGUtPm1hcmdpbkxl
ZnQoKS5pc0F1dG8oKSA/IG1hcmdpbkxlZnQgOiBpbnRWYWx1ZUZvckxlbmd0aChzdHlsZS0+bWFy
Z2luTGVmdCgpLCB3aWR0aCk7CiB9CiAKLVN0eWxlOjpSZXNvbHZlciYgRG9jdW1lbnQ6OnVzZXJB
Z2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyKCkKLXsKLSAgICBpZiAoIW1fdXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIpCi0gICAgICAgIG1fdXNlckFnZW50U2hhZG93VHJlZVN0eWxl
UmVzb2x2ZXIgPSBTdHlsZTo6UmVzb2x2ZXI6OmNyZWF0ZSgqdGhpcyk7Ci0gICAgcmV0dXJuICpt
X3VzZXJBZ2VudFNoYWRvd1RyZWVTdHlsZVJlc29sdmVyOwotfQotCiB2b2lkIERvY3VtZW50Ojpm
b250c05lZWRVcGRhdGUoRm9udFNlbGVjdG9yJikKIHsKICAgICBpbnZhbGlkYXRlTWF0Y2hlZFBy
b3BlcnRpZXNDYWNoZUFuZEZvcmNlU3R5bGVSZWNhbGMoKTsKQEAgLTI0MDIsMTEgKzIzOTUsNiBA
QCB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFuZEZvcmNl
U3R5bGVSZWNhbGMoKQogICAgIHNjaGVkdWxlRnVsbFN0eWxlUmVidWlsZCgpOwogfQogCi12b2lk
IERvY3VtZW50OjpkaWRDbGVhclN0eWxlUmVzb2x2ZXIoKQotewotICAgIG1fdXNlckFnZW50U2hh
ZG93VHJlZVN0eWxlUmVzb2x2ZXIgPSBudWxscHRyOwotfQotCiB2b2lkIERvY3VtZW50OjpzZXRJ
c1Jlc29sdmluZ1RyZWVTdHlsZShib29sIHZhbHVlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKHZh
bHVlICE9IG1faXNSZXNvbHZpbmdUcmVlU3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCAw
OGYwYTA1NmQxODUuLjZlMTRjY2Y0ZjAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEzMTMs
NyArMTMxMyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGll
c0NhY2hlQW5kRm9yY2VTdHlsZVJlY2FsYygpOwogCiAgICAgdm9pZCBkaWRSZW1vdmVBbGxQZW5k
aW5nU3R5bGVzaGVldCgpOwotICAgIHZvaWQgZGlkQ2xlYXJTdHlsZVJlc29sdmVyKCk7CiAKICAg
ICBib29sIGluU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX2luU3R5bGVSZWNhbGM7IH0K
ICAgICBib29sIGluUmVuZGVyVHJlZVVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5SZW5kZXJU
cmVlVXBkYXRlOyB9CkBAIC0xNDYyLDcgKzE0NjEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRp
ZEluc2VydEluRG9jdW1lbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKTsKICAgICB2b2lkIGRpZFJl
bW92ZUluRG9jdW1lbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QmKTsKLSAgICBjb25zdCBIYXNoU2V0
PFNoYWRvd1Jvb3QqPiYgaW5Eb2N1bWVudFNoYWRvd1Jvb3RzKCkgY29uc3QgeyByZXR1cm4gbV9p
bkRvY3VtZW50U2hhZG93Um9vdHM7IH0KKyAgICBjb25zdCBMaXN0SGFzaFNldDxTaGFkb3dSb290
Kj4mIGluRG9jdW1lbnRTaGFkb3dSb290cygpIGNvbnN0IHsgcmV0dXJuIG1faW5Eb2N1bWVudFNo
YWRvd1Jvb3RzOyB9CiAKICAgICB2b2lkIGF0dGFjaFRvQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWVC
YXNlJik7CiAgICAgdm9pZCBkZXRhY2hGcm9tQ2FjaGVkRnJhbWUoQ2FjaGVkRnJhbWVCYXNlJik7
CkBAIC0xNzQxLDggKzE3NDAsNiBAQCBwcml2YXRlOgogCiAgICAgVW5pcXVlUmVmPFF1aXJrcz4g
bV9xdWlya3M7CiAKLSAgICBSZWZQdHI8U3R5bGU6OlJlc29sdmVyPiBtX3VzZXJBZ2VudFNoYWRv
d1RyZWVTdHlsZVJlc29sdmVyOwotCiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5kb3c7
CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9jb250ZXh0RG9jdW1lbnQ7CiAKQEAgLTE5OTQsNyAr
MTk5MSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha0hhc2hTZXQ8TWVkaWFQcm9kdWNlcj4gbV9hdWRp
b1Byb2R1Y2VyczsKICAgICBXZWFrUHRyPFNwZWVjaFJlY29nbml0aW9uPiBtX2FjdGl2ZVNwZWVj
aFJlY29nbml0aW9uOwogCi0gICAgSGFzaFNldDxTaGFkb3dSb290Kj4gbV9pbkRvY3VtZW50U2hh
ZG93Um9vdHM7CisgICAgTGlzdEhhc2hTZXQ8U2hhZG93Um9vdCo+IG1faW5Eb2N1bWVudFNoYWRv
d1Jvb3RzOwogCiAjaWYgRU5BQkxFKFdJUkVMRVNTX1BMQVlCQUNLX1RBUkdFVCkKICAgICB1c2lu
ZyBUYXJnZXRJZFRvQ2xpZW50TWFwID0gSGFzaE1hcDxQbGF5YmFja1RhcmdldENsaWVudENvbnRl
eHRJZGVudGlmaWVyLCBXZWJDb3JlOjpNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50Kj47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCBkYWIwOThkZWQ3MWYuLjU3MzFiY2YxZGZkOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKIAogICAgIHVzaW5n
IFRyZWVTY29wZTo6cm9vdE5vZGU7CiAKLSAgICBTdHlsZTo6U2NvcGUmIHN0eWxlU2NvcGUoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTdHlsZTo6U2NvcGUmIHN0eWxlU2NvcGUoKTsKICAgICBTdHls
ZVNoZWV0TGlzdCYgc3R5bGVTaGVldHMoKTsKIAogICAgIGJvb2wgcmVzZXRTdHlsZUluaGVyaXRh
bmNlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFN0eWxlSW5oZXJpdGFuY2U7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlUmVzb2x2ZXIuaAppbmRleCA1MTc0OTJjOWU4MzUuLjY5NzdjYzdhM2U3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTQwLDYgKzE0MCw5IEBAIHB1
YmxpYzoKIAogICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMmIGluc3BlY3RvckNTU09NV3JhcHBl
cnMoKSB7IHJldHVybiBtX2luc3BlY3RvckNTU09NV3JhcHBlcnM7IH0KIAorICAgIGJvb2wgaXNT
aGFyZWRCZXR3ZWVuU2hhZG93VHJlZXMoKSBjb25zdCB7IHJldHVybiBtX2lzU2hhcmVkQmV0d2Vl
blNoYWRvd1RyZWVzOyB9CisgICAgdm9pZCBzZXRTaGFyZWRCZXR3ZWVuU2hhZG93VHJlZXMoKSB7
IG1faXNTaGFyZWRCZXR3ZWVuU2hhZG93VHJlZXMgPSB0cnVlOyB9CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIFBhZ2VSdWxlQ29sbGVjdG9yOwogCkBAIC0xOTYsNiArMTk5LDggQEAgcHJp
dmF0ZToKICAgICBNYXRjaGVkRGVjbGFyYXRpb25zQ2FjaGUgbV9tYXRjaGVkRGVjbGFyYXRpb25z
Q2FjaGU7CiAKICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzIHsgdHJ1ZSB9Owor
ICAgIGJvb2wgbV9pc1NoYXJlZEJldHdlZW5TaGFkb3dUcmVlcyB7IGZhbHNlIH07CisKICAgICAv
LyBTZWUgaWYgd2Ugc3RpbGwgaGF2ZSBjcmFzaGVzIHdoZXJlIFJlc29sdmVyIGdldHMgZGVsZXRl
ZCBlYXJseS4KICAgICBib29sIG1faXNEZWxldGVkIHsgZmFsc2UgfTsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlU2NvcGUuY3BwCmluZGV4IGM4YmU4MmMzYWJiMi4uOTllZDI3NTIyNGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmNwcApAQCAtNzQsNjEgKzc0LDcyIEBAIFNjb3BlOjp+
U2NvcGUoKQogICAgIEFTU0VSVCghaGFzUGVuZGluZ1NoZWV0cygpKTsKIH0KIAotYm9vbCBTY29w
ZTo6c2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2ZXIoKSBjb25z
dAorUmVzb2x2ZXImIFNjb3BlOjpyZXNvbHZlcigpCiB7Ci0gICAgaWYgKCFtX3NoYWRvd1Jvb3Qp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAobV9zaGFkb3dSb290LT5tb2RlKCkgIT0g
U2hhZG93Um9vdE1vZGU6OlVzZXJBZ2VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIC8v
IElmIHdlIGhhdmUgc3R5bGVzaGVldHMgaW4gdGhlIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUgdXNl
IHBlci1zY29wZSByZXNvbHZlci4KLSAgICBpZiAoIW1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOworICAg
IGlmICghbV9yZXNvbHZlcikgeworICAgICAgICBpZiAobV9zaGFkb3dSb290KQorICAgICAgICAg
ICAgY3JlYXRlT3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNyZWF0ZURvY3VtZW50UmVzb2x2ZXIoKTsKKyAgICB9CisgICAgcmV0dXJu
ICptX3Jlc29sdmVyOwogfQogCi1SZXNvbHZlciYgU2NvcGU6OnJlc29sdmVyKCkKK3ZvaWQgU2Nv
cGU6OmNyZWF0ZURvY3VtZW50UmVzb2x2ZXIoKQogewotICAgIGlmIChzaG91bGRVc2VTaGFyZWRV
c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpKQotICAgICAgICByZXR1cm4gbV9kb2N1
bWVudC51c2VyQWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOworICAgIEFTU0VSVCghbV9y
ZXNvbHZlcik7CisgICAgQVNTRVJUKCFtX3NoYWRvd1Jvb3QpOwogCi0gICAgaWYgKCFtX3Jlc29s
dmVyKSB7Ci0gICAgICAgIFNldEZvclNjb3BlPGJvb2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVy
IHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwgdHJ1ZSB9OworICAgIFNldEZvclNjb3BlPGJv
b2w+IGlzVXBkYXRpbmdTdHlsZVJlc29sdmVyIHsgbV9pc1VwZGF0aW5nU3R5bGVSZXNvbHZlciwg
dHJ1ZSB9OwogCi0gICAgICAgIG1fcmVzb2x2ZXIgPSBSZXNvbHZlcjo6Y3JlYXRlKG1fZG9jdW1l
bnQpOworICAgIG1fcmVzb2x2ZXIgPSBSZXNvbHZlcjo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogCi0g
ICAgICAgIGlmICghbV9zaGFkb3dSb290KSB7Ci0gICAgICAgICAgICBtX2RvY3VtZW50LmZvbnRT
ZWxlY3RvcigpLmJ1aWxkU3RhcnRlZCgpOwotICAgICAgICAgICAgbV9yZXNvbHZlci0+cnVsZVNl
dHMoKS5pbml0aWFsaXplVXNlclN0eWxlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnNldElzRm9yU2hhZG93U2NvcGUoKTsKLSAgICAgICAg
ICAgIG1fcmVzb2x2ZXItPnJ1bGVTZXRzKCkuc2V0VXNlc1NoYXJlZFVzZXJTdHlsZShtX3NoYWRv
d1Jvb3QtPm1vZGUoKSAhPSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50KTsKLSAgICAgICAgfQor
ICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVpbGRTdGFydGVkKCk7CiAKLSAgICAgICAg
bV9yZXNvbHZlci0+YWRkQ3VycmVudFNWR0ZvbnRGYWNlUnVsZXMoKTsKLSAgICAgICAgbV9yZXNv
bHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9hY3RpdmVTdHlsZVNoZWV0cyk7CisgICAg
bV9yZXNvbHZlci0+cnVsZVNldHMoKS5pbml0aWFsaXplVXNlclN0eWxlKCk7CisgICAgbV9yZXNv
bHZlci0+YWRkQ3VycmVudFNWR0ZvbnRGYWNlUnVsZXMoKTsKKyAgICBtX3Jlc29sdmVyLT5hcHBl
bmRBdXRob3JTdHlsZVNoZWV0cyhtX2FjdGl2ZVN0eWxlU2hlZXRzKTsKIAotICAgICAgICBpZiAo
IW1fc2hhZG93Um9vdCkKLSAgICAgICAgICAgIG1fZG9jdW1lbnQuZm9udFNlbGVjdG9yKCkuYnVp
bGRDb21wbGV0ZWQoKTsKKyAgICBtX2RvY3VtZW50LmZvbnRTZWxlY3RvcigpLmJ1aWxkQ29tcGxl
dGVkKCk7Cit9CisKK3ZvaWQgU2NvcGU6OmNyZWF0ZU9yRmluZFNoYXJlZFNoYWRvd1RyZWVSZXNv
bHZlcigpCit7CisgICAgQVNTRVJUKCFtX3Jlc29sdmVyKTsKKyAgICBBU1NFUlQobV9zaGFkb3dS
b290KTsKKworICAgIGlmIChtX2FjdGl2ZVN0eWxlU2hlZXRzLmlzRW1wdHkoKSkgeworICAgICAg
ICBhdXRvJiBzaGFyZWRSZXNvbHZlciA9IGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpID8gZG9j
dW1lbnRTY29wZSgpLm1fc2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVyIDogZG9jdW1l
bnRTY29wZSgpLm1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgICAg
IGlmICghc2hhcmVkUmVzb2x2ZXIpIHsKKyAgICAgICAgICAgIHNoYXJlZFJlc29sdmVyID0gUmVz
b2x2ZXI6OmNyZWF0ZShtX2RvY3VtZW50KTsKKyAgICAgICAgICAgIHNoYXJlZFJlc29sdmVyLT5y
dWxlU2V0cygpLnNldFVzZXNTaGFyZWRVc2VyU3R5bGUoIWlzRm9yVXNlckFnZW50U2hhZG93VHJl
ZSgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzaGFyZWRSZXNvbHZlci0+c2V0U2hh
cmVkQmV0d2VlblNoYWRvd1RyZWVzKCk7CisKKyAgICAgICAgbV9yZXNvbHZlciA9IHNoYXJlZFJl
c29sdmVyOworICAgICAgICByZXR1cm47CiAgICAgfQotICAgIEFTU0VSVCghbV9zaGFkb3dSb290
IHx8ICZtX2RvY3VtZW50ID09ICZtX3NoYWRvd1Jvb3QtPmRvY3VtZW50KCkpOwotICAgIEFTU0VS
VCgmbV9yZXNvbHZlci0+ZG9jdW1lbnQoKSA9PSAmbV9kb2N1bWVudCk7Ci0gICAgcmV0dXJuICpt
X3Jlc29sdmVyOworCisgICAgbV9yZXNvbHZlciA9IFJlc29sdmVyOjpjcmVhdGUobV9kb2N1bWVu
dCk7CisKKyAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnNldFVzZXNTaGFyZWRVc2VyU3R5bGUo
IWlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpKTsKKyAgICBtX3Jlc29sdmVyLT5hcHBlbmRBdXRo
b3JTdHlsZVNoZWV0cyhtX2FjdGl2ZVN0eWxlU2hlZXRzKTsKIH0KIAotUmVzb2x2ZXIqIFNjb3Bl
OjpyZXNvbHZlcklmRXhpc3RzKCkKK3ZvaWQgU2NvcGU6OnVuc2hhcmVTaGFkb3dUcmVlUmVzb2x2
ZXJCZWZvcmVNdXRhdGlvbigpCiB7Ci0gICAgaWYgKHNob3VsZFVzZVNoYXJlZFVzZXJBZ2VudFNo
YWRvd1RyZWVTdHlsZVJlc29sdmVyKCkpCi0gICAgICAgIHJldHVybiAmbV9kb2N1bWVudC51c2Vy
QWdlbnRTaGFkb3dUcmVlU3R5bGVSZXNvbHZlcigpOworICAgIEFTU0VSVChtX3NoYWRvd1Jvb3Qp
OworICAgIEFTU0VSVCghbV9yZXNvbHZlci0+aXNTaGFyZWRCZXR3ZWVuU2hhZG93VHJlZXMoKSk7
CiAKLSAgICByZXR1cm4gbV9yZXNvbHZlci5nZXQoKTsKKyAgICBhdXRvJiBzaGFyZWRSZXNvbHZl
ciA9IGlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpID8gZG9jdW1lbnRTY29wZSgpLm1fc2hhcmVk
VXNlckFnZW50U2hhZG93VHJlZVJlc29sdmVyIDogZG9jdW1lbnRTY29wZSgpLm1fc2hhcmVkRW1w
dHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2ZXI7CisgICAgCisgICAgaWYgKG1fcmVzb2x2ZXIgPT0g
c2hhcmVkUmVzb2x2ZXIpCisgICAgICAgIHNoYXJlZFJlc29sdmVyID0gbnVsbHB0cjsKIH0KIAog
dm9pZCBTY29wZTo6Y2xlYXJSZXNvbHZlcigpCiB7CiAgICAgbV9yZXNvbHZlciA9IG51bGxwdHI7
Ci0KLSAgICBpZiAoIW1fc2hhZG93Um9vdCkKLSAgICAgICAgbV9kb2N1bWVudC5kaWRDbGVhclN0
eWxlUmVzb2x2ZXIoKTsKIH0KIAogdm9pZCBTY29wZTo6cmVsZWFzZU1lbW9yeSgpCkBAIC0xNDgs
NiArMTU5LDkgQEAgdm9pZCBTY29wZTo6cmVsZWFzZU1lbW9yeSgpCiAgICAgfQogI2VuZGlmCiAg
ICAgY2xlYXJSZXNvbHZlcigpOworCisgICAgbV9zaGFyZWRVc2VyQWdlbnRTaGFkb3dUcmVlUmVz
b2x2ZXIgPSBudWxscHRyOworICAgIG1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2
ZXIgPSBudWxscHRyOwogfQogCiBTY29wZSYgU2NvcGU6OmZvck5vZGUoTm9kZSYgbm9kZSkKQEAg
LTM4Myw3ICszOTcsMTEgQEAgU2NvcGU6OlN0eWxlU2hlZXRDaGFuZ2UgU2NvcGU6OmFuYWx5emVT
dHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3QKIHsKICAgICB1bnNpZ25l
ZCBuZXdTdHlsZXNoZWV0Q291bnQgPSBuZXdTdHlsZXNoZWV0cy5zaXplKCk7CiAKLSAgICBpZiAo
IXJlc29sdmVySWZFeGlzdHMoKSkKKyAgICBhdXRvKiByZXNvbHZlciA9IHJlc29sdmVySWZFeGlz
dHMoKTsKKyAgICBpZiAoIXJlc29sdmVyKQorICAgICAgICByZXR1cm4geyBSZXNvbHZlclVwZGF0
ZVR5cGU6OlJlY29uc3RydWN0IH07CisKKyAgICBpZiAocmVzb2x2ZXItPmlzU2hhcmVkQmV0d2Vl
blNoYWRvd1RyZWVzKCkpCiAgICAgICAgIHJldHVybiB7IFJlc29sdmVyVXBkYXRlVHlwZTo6UmVj
b25zdHJ1Y3QgfTsKIAogICAgIC8vIEZpbmQgb3V0IHdoaWNoIHN0eWxlc2hlZXRzIGFyZSBuZXcu
CkBAIC00NTIsOCArNDcwLDEyIEBAIHZvaWQgU2NvcGU6OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRz
KFVwZGF0ZVR5cGUgdXBkYXRlVHlwZSkKICAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoYWN0
aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gYWN0
aXZlQ1NTU3R5bGVTaGVldHM7Ci0gICAgYWN0aXZlQ1NTU3R5bGVTaGVldHMuYXBwZW5kVmVjdG9y
KG1fZG9jdW1lbnQuZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbmplY3RlZEF1dGhvclN0eWxlU2hl
ZXRzKCkpOwotICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50
LmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuYXV0aG9yU3R5bGVTaGVldHNGb3JUZXN0aW5nKCkpOwor
CisgICAgaWYgKCFpc0ZvclVzZXJBZ2VudFNoYWRvd1RyZWUoKSkgeworICAgICAgICBhY3RpdmVD
U1NTdHlsZVNoZWV0cy5hcHBlbmRWZWN0b3IobV9kb2N1bWVudC5leHRlbnNpb25TdHlsZVNoZWV0
cygpLmluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgICAgIGFjdGl2ZUNTU1N0eWxl
U2hlZXRzLmFwcGVuZFZlY3RvcihtX2RvY3VtZW50LmV4dGVuc2lvblN0eWxlU2hlZXRzKCkuYXV0
aG9yU3R5bGVTaGVldHNGb3JUZXN0aW5nKCkpOworICAgIH0KKwogICAgIGZpbHRlckVuYWJsZWRO
b25lbXB0eUNTU1N0eWxlU2hlZXRzKGFjdGl2ZUNTU1N0eWxlU2hlZXRzLCBhY3RpdmVTdHlsZVNo
ZWV0cyk7CiAKICAgICBhdXRvIHN0eWxlU2hlZXRDaGFuZ2UgPSBTdHlsZVNoZWV0Q2hhbmdlIHsg
UmVzb2x2ZXJVcGRhdGVUeXBlOjpSZWNvbnN0cnVjdCB9OwpAQCAtNDk2LDE5ICs1MTgsMjUgQEAg
dm9pZCBTY29wZTo6dXBkYXRlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4m
IGFjdGl2ZVN0eWxlU2hlZXRzLCBSZXMKICAgICAgICAgY2xlYXJSZXNvbHZlcigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGF1dG8mIHN0eWxlUmVzb2x2ZXIgPSByZXNvbHZlcigpOwor
CisgICAgaWYgKG1fc2hhZG93Um9vdCkKKyAgICAgICAgdW5zaGFyZVNoYWRvd1RyZWVSZXNvbHZl
ckJlZm9yZU11dGF0aW9uKCk7CiAKICAgICBTZXRGb3JTY29wZTxib29sPiBpc1VwZGF0aW5nU3R5
bGVSZXNvbHZlciB7IG1faXNVcGRhdGluZ1N0eWxlUmVzb2x2ZXIsIHRydWUgfTsKKwogICAgIGlm
ICh1cGRhdGVUeXBlID09IFJlc29sdmVyVXBkYXRlVHlwZTo6UmVzZXQpIHsKLSAgICAgICAgc3R5
bGVSZXNvbHZlci5ydWxlU2V0cygpLnJlc2V0QXV0aG9yU3R5bGUoKTsKLSAgICAgICAgc3R5bGVS
ZXNvbHZlci5hcHBlbmRBdXRob3JTdHlsZVNoZWV0cyhhY3RpdmVTdHlsZVNoZWV0cyk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgQVNTRVJUKHVwZGF0ZVR5cGUgPT0gUmVzb2x2ZXJVcGRhdGVUeXBl
OjpBZGRpdGl2ZSk7Ci0gICAgICAgIHVuc2lnbmVkIGZpcnN0TmV3SW5kZXggPSBtX2FjdGl2ZVN0
eWxlU2hlZXRzLnNpemUoKTsKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4g
bmV3U3R5bGVTaGVldHM7Ci0gICAgICAgIG5ld1N0eWxlU2hlZXRzLmFwcGVuZFJhbmdlKGFjdGl2
ZVN0eWxlU2hlZXRzLmJlZ2luKCkgKyBmaXJzdE5ld0luZGV4LCBhY3RpdmVTdHlsZVNoZWV0cy5l
bmQoKSk7Ci0gICAgICAgIHN0eWxlUmVzb2x2ZXIuYXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobmV3
U3R5bGVTaGVldHMpOworICAgICAgICBtX3Jlc29sdmVyLT5ydWxlU2V0cygpLnJlc2V0QXV0aG9y
U3R5bGUoKTsKKyAgICAgICAgbV9yZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMoYWN0
aXZlU3R5bGVTaGVldHMpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgQVNTRVJUKHVw
ZGF0ZVR5cGUgPT0gUmVzb2x2ZXJVcGRhdGVUeXBlOjpBZGRpdGl2ZSk7CisgICAgQVNTRVJUKGFj
dGl2ZVN0eWxlU2hlZXRzLnNpemUoKSA+PSBtX2FjdGl2ZVN0eWxlU2hlZXRzLnNpemUoKSk7CisK
KyAgICB1bnNpZ25lZCBmaXJzdE5ld0luZGV4ID0gbV9hY3RpdmVTdHlsZVNoZWV0cy5zaXplKCk7
CisgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0Pj4gbmV3U3R5bGVTaGVldHM7CisgICAg
bmV3U3R5bGVTaGVldHMuYXBwZW5kUmFuZ2UoYWN0aXZlU3R5bGVTaGVldHMuYmVnaW4oKSArIGZp
cnN0TmV3SW5kZXgsIGFjdGl2ZVN0eWxlU2hlZXRzLmVuZCgpKTsKKyAgICBtX3Jlc29sdmVyLT5h
cHBlbmRBdXRob3JTdHlsZVNoZWV0cyhuZXdTdHlsZVNoZWV0cyk7CiB9CiAKIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4+IFNjb3BlOjphY3RpdmVTdHlsZVNoZWV0c0Zvckluc3Bl
Y3RvcigpCkBAIC01ODEsNyArNjA5LDcgQEAgdm9pZCBTY29wZTo6c2NoZWR1bGVVcGRhdGUoVXBk
YXRlVHlwZSB1cGRhdGUpCiAgICAgaWYgKCFtX3BlbmRpbmdVcGRhdGUgfHwgKm1fcGVuZGluZ1Vw
ZGF0ZSA8IHVwZGF0ZSkgewogICAgICAgICBtX3BlbmRpbmdVcGRhdGUgPSB1cGRhdGU7CiAgICAg
ICAgIGlmIChtX3NoYWRvd1Jvb3QpCi0gICAgICAgICAgICBtX2RvY3VtZW50LnN0eWxlU2NvcGUo
KS5tX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSA9IHRydWU7CisgICAgICAgICAgICBk
b2N1bWVudFNjb3BlKCkubV9oYXNEZXNjZW5kYW50V2l0aFBlbmRpbmdVcGRhdGUgPSB0cnVlOwog
ICAgIH0KIAogICAgIG1fZG9jdW1lbnQuc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoeyB9KTsKQEAg
LTU5Miw3ICs2MjAsNyBAQCB2b2lkIFNjb3BlOjppbnNlcnRlZEluRG9jdW1lbnQoKQogICAgIGlm
ICghbV9wZW5kaW5nVXBkYXRlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RvY3VtZW50LnN0
eWxlU2NvcGUoKS5tX2hhc0Rlc2NlbmRhbnRXaXRoUGVuZGluZ1VwZGF0ZSA9IHRydWU7CisgICAg
ZG9jdW1lbnRTY29wZSgpLm1faGFzRGVzY2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlID0gdHJ1ZTsK
ICAgICBtX2RvY3VtZW50LnNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKHsgfSk7CiB9CiAKQEAgLTY1
OSw2ICs2ODcsOSBAQCB2b2lkIFNjb3BlOjpkaWRDaGFuZ2VTdHlsZVNoZWV0Q29udGVudHMoKQog
dm9pZCBTY29wZTo6ZGlkQ2hhbmdlU3R5bGVTaGVldEVudmlyb25tZW50KCkKIHsKICAgICBpZiAo
IW1fc2hhZG93Um9vdCkgeworICAgICAgICBtX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNv
bHZlciA9IG51bGxwdHI7CisgICAgICAgIG1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVz
b2x2ZXIgPSBudWxscHRyOworCiAgICAgICAgIGZvciAoYXV0byogZGVzY2VuZGFudFNoYWRvd1Jv
b3QgOiBtX2RvY3VtZW50LmluRG9jdW1lbnRTaGFkb3dSb290cygpKSB7CiAgICAgICAgICAgICAv
LyBTdHlsZXNoZWV0cyBpcyBhdXRob3Igc2hhZG93IHJvb3RzIGFyZSBwb3RlbnRpYWxseSBhZmZl
Y3RlZC4KICAgICAgICAgICAgIGlmIChkZXNjZW5kYW50U2hhZG93Um9vdC0+bW9kZSgpICE9IFNo
YWRvd1Jvb3RNb2RlOjpVc2VyQWdlbnQpCkBAIC02ODYsNSArNzE3LDE1IEBAIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U3R5bGVTaGVldD4+JiBTY29wZTo6c3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlz
dCgpCiAgICAgcmV0dXJuIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdDsKIH0KIAorU2Nv
cGUmIFNjb3BlOjpkb2N1bWVudFNjb3BlKCkKK3sKKyAgICByZXR1cm4gbV9kb2N1bWVudC5zdHls
ZVNjb3BlKCk7Cit9CisKK2Jvb2wgU2NvcGU6OmlzRm9yVXNlckFnZW50U2hhZG93VHJlZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2hhZG93Um9vdCAmJiBtX3NoYWRvd1Jvb3QtPm1vZGUoKSA9
PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50OworfQorCiB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVNjb3BlLmgKaW5kZXggN2MwNzJhNTk1MWI2Li40NDdiYWNiMGM1OTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVNjb3BlLmgKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFJlc29sdmVyJiByZXNvbHZlcigpOwotICAgIFJlc29sdmVyKiByZXNv
bHZlcklmRXhpc3RzKCk7CisgICAgUmVzb2x2ZXIqIHJlc29sdmVySWZFeGlzdHMoKSB7IHJldHVy
biBtX3Jlc29sdmVyLmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclJlc29sdmVyKCk7CiAgICAgdm9p
ZCByZWxlYXNlTWVtb3J5KCk7CiAKQEAgLTEzMiw3ICsxMzIsOCBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFNjb3BlKiBmb3JPcmRpbmFsKEVsZW1lbnQmLCBTY29wZU9yZGluYWwpOwogCiBwcml2YXRl
OgotICAgIGJvb2wgc2hvdWxkVXNlU2hhcmVkVXNlckFnZW50U2hhZG93VHJlZVN0eWxlUmVzb2x2
ZXIoKSBjb25zdDsKKyAgICBTY29wZSYgZG9jdW1lbnRTY29wZSgpOworICAgIGJvb2wgaXNGb3JV
c2VyQWdlbnRTaGFkb3dUcmVlKCkgY29uc3Q7CiAKICAgICB2b2lkIGRpZFJlbW92ZVBlbmRpbmdT
dHlsZXNoZWV0KCk7CiAKQEAgLTE2MCw2ICsxNjEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52
YWxpZGF0ZVN0eWxlQWZ0ZXJTdHlsZVNoZWV0Q2hhbmdlKGNvbnN0IFN0eWxlU2hlZXRDaGFuZ2Um
KTsKIAogICAgIHZvaWQgdXBkYXRlUmVzb2x2ZXIoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0
Pj4mLCBSZXNvbHZlclVwZGF0ZVR5cGUpOworICAgIHZvaWQgY3JlYXRlRG9jdW1lbnRSZXNvbHZl
cigpOworICAgIHZvaWQgY3JlYXRlT3JGaW5kU2hhcmVkU2hhZG93VHJlZVJlc29sdmVyKCk7Cisg
ICAgdm9pZCB1bnNoYXJlU2hhZG93VHJlZVJlc29sdmVyQmVmb3JlTXV0YXRpb24oKTsKIAogICAg
IERvY3VtZW50JiBtX2RvY3VtZW50OwogICAgIFNoYWRvd1Jvb3QqIG1fc2hhZG93Um9vdCB7IG51
bGxwdHIgfTsKQEAgLTE4OCw2ICsxOTIsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1faGFzRGVz
Y2VuZGFudFdpdGhQZW5kaW5nVXBkYXRlIHsgZmFsc2UgfTsKICAgICBib29sIG1fdXNlc1N0eWxl
QmFzZWRFZGl0YWJpbGl0eSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVXBkYXRpbmdTdHlsZVJl
c29sdmVyIHsgZmFsc2UgfTsKKworICAgIC8vIEZJWE1FOiBUaGVzZSAoYW5kIHNvbWUgdGhpbmdz
IGFib3ZlKSBhcmUgb25seSByZWxldmFudCBmb3IgdGhlIHJvb3Qgc2NvcGUuCisgICAgUmVmUHRy
PFJlc29sdmVyPiBtX3NoYXJlZFVzZXJBZ2VudFNoYWRvd1RyZWVSZXNvbHZlcjsKKyAgICBSZWZQ
dHI8UmVzb2x2ZXI+IG1fc2hhcmVkRW1wdHlBdXRob3JTaGFkb3dUcmVlUmVzb2x2ZXI7CiB9Owog
CiBpbmxpbmUgYm9vbCBTY29wZTo6aGFzUGVuZGluZ1NoZWV0cygpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5oCmluZGV4IDhkZWE5MDFhZGE5Zi4uNzliYmRk
MWYyZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNl
dHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaApAQCAt
NjksOCArNjksNiBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0NvbXBsZXhTZWxlY3RvcnNGb3JT
dHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogCi0gICAgdm9pZCBzZXRJc0ZvclNoYWRvd1Njb3BlKCkg
eyBtX2lzRm9yU2hhZG93U2NvcGUgPSB0cnVlOyB9Ci0KICAgICB2b2lkIHNldFVzZXNTaGFyZWRV
c2VyU3R5bGUoYm9vbCBiKSB7IG1fdXNlc1NoYXJlZFVzZXJTdHlsZSA9IGI7IH0KICAgICB2b2lk
IGluaXRpYWxpemVVc2VyU3R5bGUoKTsKIApAQCAtMTEwLDcgKzEwOCw2IEBAIHByaXZhdGU6CiAg
ICAgbXV0YWJsZSB1bnNpZ25lZCBtX3VzZXJBZ2VudE1lZGlhUXVlcnlSdWxlQ291bnRPblVwZGF0
ZSB7IDAgfTsKIAogICAgIGJvb2wgbV91c2VzU2hhcmVkVXNlclN0eWxlIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1faXNGb3JTaGFkb3dTY29wZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzQXV0aG9y
U3R5bGVEZWZpbmVkIHsgZmFsc2UgfTsKIAogICAgIC8vIEZvciBjYXRjaGluZyA8cmRhcjovL3By
b2JsZW0vNTM0MTMwMTM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggYjIz
OWJlMWMzNzIwLi40MzJkOTc5NTE5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKQEAgLTYyNzIsNCArNjI3MiwzOSBAQCBib29sIEludGVybmFsczo6cmFuZ2VJbnRlcnNlY3Rz
UmFuZ2UoY29uc3QgQWJzdHJhY3RSYW5nZSYgYSwgY29uc3QgQWJzdHJhY3RSYW5nZQogICAgIHJl
dHVybiBpbnRlcnNlY3RzRm9yVGVzdGluZyhjb252ZXJ0VHlwZSh0eXBlKSwgbWFrZVNpbXBsZVJh
bmdlKGEpLCBtYWtlU2ltcGxlUmFuZ2UoYikpOwogfQogCitTdHJpbmcgSW50ZXJuYWxzOjpkdW1w
U3R5bGVSZXNvbHZlcnMoKQoreworICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50
KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKwor
ICAgIHVuc2lnbmVkIGN1cnJlbnRJZGVudGlmaWVyID0gMDsKKyAgICBIYXNoTWFwPFN0eWxlOjpS
ZXNvbHZlciosIHVuc2lnbmVkPiByZXNvbHZlcklkZW50aWZpZXJzOworCisgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CisKKyAgICBhdXRvIGR1bXBSZXNvbHZlciA9IFsmXShhdXRvIG5hbWUsIGF1
dG8mIHJlc29sdmVyKSB7CisgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IHJlc29sdmVySWRlbnRp
ZmllcnMuZW5zdXJlKCZyZXNvbHZlciwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50
SWRlbnRpZmllcisrOworICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CisKKyAgICAgICAgcmVz
dWx0LmFwcGVuZCgiKCIsIG5hbWUsICIgIik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIihpZGVu
dGlmaWVyPSIsIGlkZW50aWZpZXIsICIpICIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIoYXV0
aG9yIHJ1bGUgY291bnQ9IiwgcmVzb2x2ZXIucnVsZVNldHMoKS5hdXRob3JTdHlsZSgpLnJ1bGVD
b3VudCgpLCAiKSIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIpXG4iKTsKKyAgICB9OworCisg
ICAgZHVtcFJlc29sdmVyKCJkb2N1bWVudCByZXNvbHZlciIsIGRvY3VtZW50LT5zdHlsZVNjb3Bl
KCkucmVzb2x2ZXIoKSk7CisKKyAgICBmb3IgKGF1dG8qIHNoYWRvd1Jvb3QgOiBkb2N1bWVudC0+
aW5Eb2N1bWVudFNoYWRvd1Jvb3RzKCkpIHsKKyAgICAgICAgYXV0byogbmFtZSA9IHNoYWRvd1Jv
b3QtPm1vZGUoKSA9PSBTaGFkb3dSb290TW9kZTo6VXNlckFnZW50ID8gInNoYWRvdyByb290IHJl
c29sdmVyICh1c2VyIGFnZW50KSIgOiAic2hhZG93IHJvb3QgcmVzb2x2ZXIgKGF1dGhvcikiOwor
ICAgICAgICBkdW1wUmVzb2x2ZXIobmFtZSwgc2hhZG93Um9vdC0+c3R5bGVTY29wZSgpLnJlc29s
dmVyKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKK30KKworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAy
MmNkOTVlMzA5ZTguLjM0NTVkMTkyMWMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC0xMTM5LDYgKzExMzksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN5c3RlbUJlZXAoKTsK
IAorICAgIFN0cmluZyBkdW1wU3R5bGVSZXNvbHZlcnMoKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBJbnRlcm5hbHMoRG9jdW1lbnQmKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggYTFiMzg1MWQx
NGI5Li5kN2UxYTU4NmNmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTEwMTgsNCArMTAxOCw2IEBAIGVudW0gVHJlZVR5cGUgewogICAgIGJvb2xlYW4gcmFuZ2VJbnRl
cnNlY3RzUmFuZ2UoQWJzdHJhY3RSYW5nZSBvdXRlclJhbmdlLCBBYnN0cmFjdFJhbmdlIGlubmVy
UmFuZ2UsIG9wdGlvbmFsIFRyZWVUeXBlIHRyZWUgPSAiVHJlZSIpOwogCiAgICAgdW5kZWZpbmVk
IHN5c3RlbUJlZXAoKTsKKworICAgIERPTVN0cmluZyBkdW1wU3R5bGVSZXNvbHZlcnMoKTsKIH07
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>