<?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>123600</bug_id>
          
          <creation_ts>2013-10-31 17:21:29 -0700</creation_ts>
          <short_desc>Remote Layer Tree: Vend layer contents via IOSurfaces</short_desc>
          <delta_ts>2013-11-01 12:45:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945765</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-31 17:21:29 -0700</bug_when>
    <thetext>Instead of ShareableBitmap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945770</commentid>
    <comment_count>1</comment_count>
      <attachid>215696</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-31 17:23:32 -0700</bug_when>
    <thetext>Created attachment 215696
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945771</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 17:25:53 -0700</bug_when>
    <thetext>Attachment 215696 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/WebCore.exp.in&apos;, u&apos;Source/WebCore/WebCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/Configurations/WebKit2.xcconfig&apos;, u&apos;Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm&apos;, u&apos;Source/WebKit2/UIProcess/mac/RemoteLayerTreeHost.mm&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.h&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm&apos;]&quot; exit_code: 1
Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.h:43:  The parameter name &quot;layer&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.h:43:  The parameter name &quot;size&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945773</commentid>
    <comment_count>3</comment_count>
      <attachid>215697</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-31 17:27:09 -0700</bug_when>
    <thetext>Created attachment 215697
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945788</commentid>
    <comment_count>4</comment_count>
      <attachid>215697</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-31 17:46:09 -0700</bug_when>
    <thetext>Comment on attachment 215697
patch

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

Looks like there’s a memory leak somewhere, so I’m going to r-.

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:182
&gt; +    const void* keys[6];
&gt; +    const void* values[6];
&gt; +    keys[0] = kIOSurfaceWidth;
&gt; +    values[0] = CFNumberCreate(0, kCFNumberIntType, &amp;width);
&gt; +    keys[1] = kIOSurfaceHeight;
&gt; +    values[1] = CFNumberCreate(0, kCFNumberIntType, &amp;height);
&gt; +    keys[2] = kIOSurfacePixelFormat;
&gt; +    values[2] = CFNumberCreate(0, kCFNumberIntType, &amp;pixelFormat);
&gt; +    keys[3] = kIOSurfaceBytesPerElement;
&gt; +    values[3] = CFNumberCreate(0, kCFNumberIntType, &amp;bytesPerElement);
&gt; +    keys[4] = kIOSurfaceBytesPerRow;
&gt; +    values[4] = CFNumberCreate(0, kCFNumberLongType, &amp;bytesPerRow);
&gt; +    keys[5] = kIOSurfaceAllocSize;
&gt; +    values[5] = CFNumberCreate(0, kCFNumberLongType, &amp;allocSize);
&gt; +
&gt; +    RetainPtr&lt;CFDictionaryRef&gt; dict = adoptCF(CFDictionaryCreate(0, keys, values, 6, &amp;kCFTypeDictionaryKeyCallBacks, &amp;kCFTypeDictionaryValueCallBacks));
&gt; +    for (unsigned i = 0; i &lt; 6; i++)
&gt; +        CFRelease(values[i]);

This should use the Objective-C literal syntax.

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:207
&gt; +        m_frontBuffer = 0;
&gt; +        m_frontSurface = 0;

These should be nullptr.

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:321
&gt; +    frontImage = 0;
&gt; +    frontContext = 0;

Should be nullptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945790</commentid>
    <comment_count>5</comment_count>
      <attachid>215697</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-31 17:48:20 -0700</bug_when>
    <thetext>Comment on attachment 215697
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:106
&gt; +        result.m_frontSurface = IOSurfaceLookupFromMachPort(machPort.port());

I think the leak is here!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945806</commentid>
    <comment_count>6</comment_count>
      <attachid>215707</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-31 18:06:11 -0700</bug_when>
    <thetext>Created attachment 215707
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945810</commentid>
    <comment_count>7</comment_count>
      <attachid>215707</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-31 18:10:29 -0700</bug_when>
    <thetext>Comment on attachment 215707
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:171
&gt; +        (id)kIOSurfaceAllocSize: @(allocSize) };

} should be on a separate line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945811</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-31 18:15:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/158417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945982</commentid>
    <comment_count>9</comment_count>
      <attachid>215749</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-01 12:39:56 -0700</bug_when>
    <thetext>Created attachment 215749
address darin&apos;s review comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945983</commentid>
    <comment_count>10</comment_count>
      <attachid>215749</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-01 12:41:07 -0700</bug_when>
    <thetext>Comment on attachment 215749
address darin&apos;s review comments

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/RemoteLayerBackingStore.mm:142
&gt;      RetainPtr&lt;CGContextRef&gt; ctx = adoptCF(CGIOSurfaceContextCreate(surface, size.width(), size.height(), bitsPerComponent, bitsPerPixel, colorSpace, bitmapInfo));

Can’ probably jest return adoptCF directly here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945985</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-01 12:45:26 -0700</bug_when>
    <thetext>follow up in http://trac.webkit.org/changeset/158449</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215696</attachid>
            <date>2013-10-31 17:23:32 -0700</date>
            <delta_ts>2013-10-31 17:27:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>surfaces.diff</filename>
            <type>text/plain</type>
            <size>27253</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjUyZTk0Li44MWU5ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMTAtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFZlbmQgbGF5ZXIgY29udGVudHMgdmlhIElPU3Vy
ZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgIEV4cG9ydCBzUkdCQ29sb3JTcGFjZVJlZi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgRXhwb3Nl
IEdyYXBoaWNzQ29udGV4dENHLmguCisKIDIwMTMtMTAtMzAgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4OyBnaXZlIE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgc3RydWN0IGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNmVhZGZmYi4uZTBhNDk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTY5NSw2ICs2OTUsNyBAQCBfX1pON1dlYkNvcmUxN2RyYXdMYXllckNvbnRlbnRz
RVA5Q0dDb250ZXh0UE5TXzE1UGxhdGZvcm1DQUxheWVyRU4zV1RGNlZlY3RvcklOUwogX19aTjdX
ZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlG
aWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9NRVJL
TlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQor
X19aTjdXZWJDb3JlMTdzUkdCQ29sb3JTcGFjZVJlZkV2CiBfX1pON1dlYkNvcmUxN3VzZXJWaXNp
YmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5T
XzVGcmFtZUVSTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtQ0FM
YXllck1hYzE4c2V0R2VvbWV0cnlGbGlwcGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YTliNWUzLi40ZmNlMjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTkxLDcgKzI5OTEsNyBAQAogCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENv
ZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0M0NCODAxMkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCAqLzsgfTsKIAkJOTM0
NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0MkM5RDBEMkIzMzVD
MDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOTM0NDJDQTAw
RDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlGMEQyQjMzNjAwMDMz
OEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTkzNDkwN0U0MTI1
QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdy
YXBoaWNzQ29udGV4dENHLmggKi87IH07CisJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBH
cmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0Mw
RTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBT
Y3JpcHRWYWx1ZS5jcHAgKi87IH07CiAJCTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3Jp
cHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VD
b2RlLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRjMDA4NC4uNTgzMTI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDgwIEBACisyMDEzLTEwLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBWZW5kIGxheWVyIGNvbnRl
bnRzIHZpYSBJT1N1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjM2MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWc6CisgICAgICAgIExp
bmsgV2ViS2l0MiBhZ2FpbnN0IElPU3VyZmFjZS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFuZ2Vk
TGF5ZXJzKToKKyAgICAgICAgRHVtcCB0aGUgc2l6ZSBvZiB0aGUgYmFja2luZyBzdG9yZSBpbnN0
ZWFkIG9mIHRoZSBwb2ludGVyIG9mIGl0cworICAgICAgICBTaGFyZWRCaXRtYXAsIGJlY2F1c2Ug
dGhhdCdzIHNsaWdodGx5IG1vcmUgdXNlZnVsLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0Ojpjb21taXQpOgorICAgICAgICBJZiBhIGxheWVyJ3MgYmFja2luZyBzdG9yZSB1c2VzIGFj
Y2VsZXJhdGVkIGRyYXdpbmcsIGhhbmQgdGhlIElPU3VyZmFjZQorICAgICAgICB0byB0aGUgQ0FM
YXllciBmb3IgZGlzcGxheS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlKToKKyAgICAgICAgSW5pdGlhbGl6ZSBjb250ZW50c1NjYWxl
IHRvIDEgdG8gbWF0Y2ggQ0EuIE90aGVyIHByb3BlcnRpZXMgd2lsbCBmb2xsb3cuCisKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
SW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHdoZW4gaXRz
IHByb3BlcnRpZXMKKyAgICAgICAgY2hhbmdlLCBhbGxvdyBpdCB0byB1cGRhdGUgdGhlbSBvbiB0
aGUgZmx5LiBSZXBsYWNpbmcgdGhlbSBjYXVzZWQKKyAgICAgICAgdXMgdG8gdGhyb3cgYXdheSBy
ZXBhaW50IHJlY3RzIHdoZW4gdGhlIGFjY2VsZXJhdGVkIGRyYXdpbmcKKyAgICAgICAgZmxhZyB3
YXMgZmxpcHBlZC4KKworICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICBTdG9yZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnIGFu
ZCBtYXJrIGl0IGRpcnR5IHdoZW4gaXQgY2hhbmdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aW1hZ2UpOgorICAgICAgICBSZW5hbWUgYml0bWFw
KCkgdG8gaW1hZ2UoKSBhbmQgaGF2ZSBpdCBjcmVhdGUgYSBDR0ltYWdlUmVmIGZyb20KKyAgICAg
ICAgdGhlIFNoYXJlYWJsZUJpdG1hcCwgcmVhZHkgZm9yIGRpcmVjdCBhcHBsaWNhdGlvbiB0byBh
IENBTGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1
cmZhY2UpOgorICAgICAgICBSZXR1cm4gYSBJT1N1cmZhY2UgcmVhZHkgZm9yIGRpcmVjdCBhcHBs
aWNhdGlvbiB0byBhIENBTGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFjY2VsZXJhdGVzRHJhd2luZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZlcik6CisgICAgICAgIFJldHVybiB3aGV0aGVy
IG9yIG5vdCB3ZSBoYXZlIGEgZnJvbnQgYnVmZmVyL3N1cmZhY2UuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICBG
b3J3YXJkLWRlY2xhcmUgc29tZSBDR0lPU3VyZmFjZSBTUEkuCisKKyAgICAgICAgKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgVGhyb3cg
YXdheSBvdXIgZnJvbnQgaW1hZ2UgYW5kIHJlc2V0IGZsYWdzIGlmIG5lZWRlZC4KKworICAgICAg
ICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZSk6CisgICAgICAgIChSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGVjb2RlKToKKyAgICAgICAgRW4vZGVjb2RlIHRoZSBmcm9udCBzdXJm
YWNlIGluc3RlYWQgb2YgdGhlIFNoYXJlYWJsZUJpdG1hcCBpZiBuZWVkZWQsCisgICAgICAgIHVz
aW5nIENvcmVJUEM6Ok1hY2hQb3J0LiBEZXN0cm95IHRoZSBwb3J0IG9uIHJlY2VpcHQuCisKKyAg
ICAgICAgKGNyZWF0ZUlPU3VyZmFjZUNvbnRleHQpOgorICAgICAgICBDcmVhdGUgYSBDR0lPU3Vy
ZmFjZUNvbnRleHQgZnJvbSBhbiBJT1N1cmZhY2UuCisKKyAgICAgICAgKGNyZWF0ZUlPU3VyZmFj
ZSk6CisgICAgICAgIENyZWF0ZSBhbiBJT1N1cmZhY2Ugb2YgdGhlIGdpdmVuIHNpemUuCisKKyAg
ICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjppbWFnZSk6CisgICAgICAgIFJldHVybiBh
IENHSW1hZ2VSZWYsIGlmIHdlJ3JlIG5vdCB1c2luZyBhY2NlbGVyYXRlZCBkcmF3aW5nLgorICAg
ICAgICBNb3ZlZCBmcm9tIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KToKKyAgICAgICAgSWYgdXNpbmcgYWNjZWxlcmF0ZWQgZHJhd2luZywgY3JlYXRl
IGFuZCBwYWludCBpbnRvIGFuIElPU3VyZmFjZS4KKyAgICAgICAgUmVvcmdhbml6ZSBzb21lIGNv
ZGUgdG8gbWFrZSB0aGUgY29weWluZy1mcm9tLXRoZS1mcm9udC1pbWFnZSBjb2RlCisgICAgICAg
IHdvcmsgZm9yIGJvdGggc29mdHdhcmUgYW5kIElPU3VyZmFjZXMuCisgICAgICAgIEZsdXNoIHRo
ZSBjb250ZXh0IHdoZW4gY29tcGxldGVkLCB0byBlbnN1cmUgdGhhdCBhbnkgYXN5bmNocm9ub3Vz
CisgICAgICAgIHBhaW50aW5nIGlzIGNvbXBsZXRlIGJlZm9yZSB3ZSB2ZW5kIHRoZSBzdXJmYWNl
IHRvIHRoZSBVSSBwcm9jZXNzLgorCiAyMDEzLTEwLTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBMb3RzIG9mIEFT
U0VSVChtX2NoaWxkcmVuLmlzRW1wdHkoKSk7IG9uIFBvc3RlciBDaXJjbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcgYi9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4IGQwY2ZmYTMuLjZm
OTI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2Nv
bmZpZwpAQCAtMjksNyArMjksNyBAQCBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJTlNU
QUxMX1BBVEggPSAkKFdFQktJVDJfRlJBTUVXT1JLU19ESVIpOwogRFlMSUJfSU5TVEFMTF9OQU1F
X0JBU0UgPSAkKE5PUk1BTF9XRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIAotRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1MgPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1l
d29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJh
bWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFtZXdv
cmsgUXVhcnR6Q29yZSAtZnJhbWV3b3JrIFNlY3VyaXR5IC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJh
bWV3b3JrIENvcmVBdWRpbzsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1l
d29yayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29j
b2EgLWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEph
dmFTY3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBT
ZWN1cml0eSAtZnJhbWV3b3JrIFdlYkNvcmUgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29y
ayBJT1N1cmZhY2U7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3Ig
bmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcg
ZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMxRU9TNF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUx
MlBvbGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOS1N0
M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xp
Y3lBY3Rpb25FRUU0c3dhcEVSUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9s
aWN5QWN0aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQxRXYgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFj
dGlvbkVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rp
b25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5k
ZXggNWIwY2EzMy4uNWRiNjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC02MjIsNyArNjIyLDcgQEAg
c3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEhhc2hNYXA8UmVtb3QKICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxkb3VibGU+
KHRzLCAidGltZU9mZnNldCIsIGxheWVyUHJvcGVydGllcy50aW1lT2Zmc2V0KTsKIAogICAgICAg
ICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVy
dHk8U2hhcmVhYmxlQml0bWFwKj4odHMsICJiYWNraW5nU3RvcmUiLCBsYXllclByb3BlcnRpZXMu
YmFja2luZ1N0b3JlLmJpdG1hcCgpKTsKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxJbnRTaXpl
Pih0cywgImJhY2tpbmdTdG9yZSIsIGxheWVyUHJvcGVydGllcy5iYWNraW5nU3RvcmUuc2l6ZSgp
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKQogICAgICAgICAgICAgZHVt
cFByb3BlcnR5PEZpbHRlck9wZXJhdGlvbnM+KHRzLCAiZmlsdGVycyIsIGxheWVyUHJvcGVydGll
cy5maWx0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQppbmRleCAyZjQ1OWQ2Li40OTRmMDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yMDAs
OSArMjAwLDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y29tbWl0KGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICAgICAgICAgIGxheWVyLnRp
bWVPZmZzZXQgPSBwcm9wZXJ0aWVzLnRpbWVPZmZzZXQ7CiAKICAgICAgICAgaWYgKHByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2lu
Z1N0b3JlQ2hhbmdlZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgQ29weT8K
LSAgICAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IHByb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKTsKLSAgICAgICAgICAgIGxheWVy
LmNvbnRlbnRzID0gKGlkKWltYWdlLmdldCgpOworICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMu
YmFja2luZ1N0b3JlLmFjY2VsZXJhdGVzRHJhd2luZygpKQorICAgICAgICAgICAgICAgIGxheWVy
LmNvbnRlbnRzID0gKGlkKXByb3BlcnRpZXMuYmFja2luZ1N0b3JlLnN1cmZhY2UoKS5nZXQoKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChpZClw
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5pbWFnZSgpLmdldCgpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5k
ZXggZWU5YzU4NC4uMTNlMjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAt
NjksOCArNjksMTIgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWUKICAgICA6IFBsYXRmb3JtQ0FM
YXllcihsYXllclR5cGUsIG93bmVyKQogICAgICwgbV9sYXllcklEKGdlbmVyYXRlTGF5ZXJJRCgp
KQogICAgICwgbV9zdXBlcmxheWVyKG51bGxwdHIpCisgICAgLCBtX2FjY2VsZXJhdGVzRHJhd2lu
ZyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogeworICAgIC8vIEZJWE1FOiBtYXRj
aCBhbGwgZGVmYXVsdCB2YWx1ZXMgZnJvbSBDQS4KKyAgICBzZXRDb250ZW50c1NjYWxlKDEpOwor
CiAgICAgbV9jb250ZXh0LT5sYXllcldhc0NyZWF0ZWQodGhpcywgbGF5ZXJUeXBlKTsKIH0KIApA
QCAtMTE1LDEyICsxMTksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YW5pbWF0aW9u
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjplbnN1cmVCYWNraW5nU3RvcmUoKQogewotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmxheWVyKCkgPT0gdGhpcwotICAgICAgICAmJiBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlLnNpemUoKSA9PSBtX3Byb3BlcnRpZXMuc2l6ZQotICAgICAgICAmJiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLnNjYWxlKCkgPT0gbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSh0aGlzLCBleHBhbmRlZEludFNpemUobV9wcm9wZXJ0aWVzLnNpemUp
LCBtX3Byb3BlcnRpZXMuY29udGVudHNTY2FsZSk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS5lbnN1cmVCYWNraW5nU3RvcmUodGhpcywgZXhwYW5kZWRJbnRTaXplKG1fcHJvcGVydGll
cy5zaXplKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fYWNjZWxlcmF0ZXNEcmF3aW5n
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheShjb25z
dCBGbG9hdFJlY3QqIHJlY3QpCkBAIC0zNTIsMTEgKzM1MSwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogCiBib29sIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6YWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogfQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wgYWNjZWxlcmF0ZXNE
cmF3aW5nKQogeworICAgIG1fYWNjZWxlcmF0ZXNEcmF3aW5nID0gYWNjZWxlcmF0ZXNEcmF3aW5n
OworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCA4NmZkZGEyLi4xZjVhZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTE1OCw2
ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXMgbV9wcm9wZXJ0aWVzOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckxp
c3QgbV9jaGlsZHJlbjsKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fc3VwZXJsYXllcjsK
KyAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogCiAgICAgUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dCogbV9jb250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCBi
MzkxOGY1Li5jOWViNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC0zOSwx
NiArMzksMTkgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlOwogY2xhc3MgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKCk7
Ci0gICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiwgV2Vi
Q29yZTo6SW50U2l6ZSwgZmxvYXQgc2NhbGUpOworCisgICAgdm9pZCBlbnN1cmVCYWNraW5nU3Rv
cmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllciwgV2ViQ29yZTo6SW50U2l6ZSBzaXplLCBm
bG9hdCBzY2FsZSwgYm9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpOwogCiAgICAgdm9pZCBzZXROZWVk
c0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCk7CiAgICAgdm9pZCBzZXROZWVkc0Rpc3Bs
YXkoKTsKIAogICAgIGJvb2wgZGlzcGxheSgpOwogCi0gICAgU2hhcmVhYmxlQml0bWFwKiBiaXRt
YXAoKSBjb25zdCB7IHJldHVybiBtX2Zyb250QnVmZmVyLmdldCgpOyB9CisgICAgUmV0YWluUHRy
PENHSW1hZ2VSZWY+IGltYWdlKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4g
c3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRTdXJmYWNlLmdldCgpOyB9CiAgICAgV2Vi
Q29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgZmxvYXQg
c2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CisgICAgYm9vbCBhY2NlbGVyYXRlc0Ry
YXdpbmcoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVzRHJhd2luZzsgfQogCiAgICAgUGxh
dGZvcm1DQUxheWVyUmVtb3RlKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXI7IH0KIApA
QCAtNTgsNiArNjEsMTEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0
IG1hcFRvQ29udGVudENvb3JkaW5hdGVzKGNvbnN0IFdlYkNvcmU6OkludFJlY3QpIGNvbnN0Owog
CisgICAgYm9vbCBoYXNGcm9udEJ1ZmZlcigpIHsgcmV0dXJuIG1fYWNjZWxlcmF0ZXNEcmF3aW5n
ID8gISFtX2Zyb250U3VyZmFjZSA6ICEhbV9mcm9udEJ1ZmZlcjsgfQorCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dD4gY3JlYXRlQmFja2luZ1N0b3JlKCk7Cisg
ICAgdm9pZCBkcmF3SW5Db250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYpOworCiAgICAg
UGxhdGZvcm1DQUxheWVyUmVtb3RlKiBtX2xheWVyOwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBt
X3NpemU7CkBAIC02Niw3ICs3NCw5IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6UmVnaW9uIG1f
ZGlydHlSZWdpb247CiAKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBtX2Zyb250QnVmZmVy
OwotICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IG1fYmFja0J1ZmZlcjsKKyAgICBSZXRhaW5Q
dHI8SU9TdXJmYWNlUmVmPiBtX2Zyb250U3VyZmFjZTsKKworICAgIGJvb2wgbV9hY2NlbGVyYXRl
c0RyYXdpbmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFj
a2luZ1N0b3JlLm1tCmluZGV4IDU0NDc2MTVjLi4wODRiYjViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmUubW0KQEAgLTI4LDUxICsyOCw5MCBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQogCi0jaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKICNpbXBv
cnQgIkFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0ICJNYWNoUG9ydC5oIgorI2ltcG9ydCAiUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbXBv
cnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0Nv
bnRleHRDRy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJMYXllci5oPgogCisjaWZkZWYgX19oYXNf
aW5jbHVkZQorI2lmIF9faGFzX2luY2x1ZGUoPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRp
b25TZXJ2aWNlc1ByaXYuaD4pCisjaW1wb3J0IDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0
aW9uU2VydmljZXNQcml2Lmg+CisjZW5kaWYKKyNlbmRpZgorCitleHRlcm4gIkMiIHsKK0NHQ29u
dGV4dFJlZiBDR0lPU3VyZmFjZUNvbnRleHRDcmVhdGUoSU9TdXJmYWNlUmVmLCBzaXplX3QsIHNp
emVfdCwgc2l6ZV90LCBzaXplX3QsIENHQ29sb3JTcGFjZVJlZiwgQ0dCaXRtYXBJbmZvKTsKK0NH
SW1hZ2VSZWYgQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UoQ0dDb250ZXh0UmVmKTsKK30K
KwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1S
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoUGxhdGZvcm1D
QUxheWVyUmVtb3RlKiBsYXllciwgSW50U2l6ZSBzaXplLCBmbG9hdCBzY2FsZSkKLSAgICA6IG1f
bGF5ZXIobGF5ZXIpCi0gICAgLCBtX3NpemUoc2l6ZSkKLSAgICAsIG1fc2NhbGUoc2NhbGUpCitS
ZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKQorICAgIDog
bV9sYXllcihudWxscHRyKQogewotICAgIEFTU0VSVChsYXllcik7CiB9CiAKLVJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZSgpCi0gICAgOiBtX2xheWVyKG51
bGxwdHIpCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUo
UGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllciwgSW50U2l6ZSBzaXplLCBmbG9hdCBzY2FsZSwg
Ym9vbCBhY2NlbGVyYXRlc0RyYXdpbmcpCiB7CisgICAgaWYgKG1fbGF5ZXIgPT0gbGF5ZXIKKyAg
ICAgICAgJiYgbV9zaXplID09IHNpemUKKyAgICAgICAgJiYgbV9zY2FsZSA9PSBzY2FsZQorICAg
ICAgICAmJiBtX2FjY2VsZXJhdGVzRHJhd2luZyA9PSBhY2NlbGVyYXRlc0RyYXdpbmcpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fbGF5ZXIgPSBsYXllcjsKKyAgICBtX3NpemUgPSBzaXplOwor
ICAgIG1fc2NhbGUgPSBzY2FsZTsKKyAgICBtX2FjY2VsZXJhdGVzRHJhd2luZyA9IGFjY2VsZXJh
dGVzRHJhd2luZzsKKworICAgIG1fZnJvbnRTdXJmYWNlID0gbnVsbHB0cjsKKyAgICBtX2Zyb250
QnVmZmVyID0gbnVsbHB0cjsKIH0KIAogdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5j
b2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBTaGFy
ZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7Ci0gICAgbV9mcm9udEJ1ZmZlci0+Y3JlYXRlSGFu
ZGxlKGhhbmRsZSk7Ci0KLSAgICBlbmNvZGVyIDw8IGhhbmRsZTsKICAgICBlbmNvZGVyIDw8IG1f
c2l6ZTsKICAgICBlbmNvZGVyIDw8IG1fc2NhbGU7CisgICAgZW5jb2RlciA8PCBtX2FjY2VsZXJh
dGVzRHJhd2luZzsKKworICAgIGlmIChtX2FjY2VsZXJhdGVzRHJhd2luZykgeworICAgICAgICBt
YWNoX3BvcnRfdCBwb3J0ID0gSU9TdXJmYWNlQ3JlYXRlTWFjaFBvcnQobV9mcm9udFN1cmZhY2Uu
Z2V0KCkpOworICAgICAgICBlbmNvZGVyIDw8IENvcmVJUEM6Ok1hY2hQb3J0KHBvcnQsIE1BQ0hf
TVNHX1RZUEVfTU9WRV9TRU5EKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fZnJvbnRCdWZmZXItPmNyZWF0ZUhhbmRsZSho
YW5kbGUpOworICAgICAgICBlbmNvZGVyIDw8IGhhbmRsZTsKKyAgICB9CiB9CiAKIGJvb2wgUmVt
b3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJiByZXN1bHQpCiB7Ci0gICAgU2hhcmVhYmxl
Qml0bWFwOjpIYW5kbGUgaGFuZGxlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJlc3VsdC5tX2Zyb250QnVmZmVyID0gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKLQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0Lm1fc2l6ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm1fc2NhbGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2FjY2VsZXJhdGVzRHJhd2luZykpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGlmIChyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKKyAg
ICAgICAgQ29yZUlQQzo6TWFjaFBvcnQgbWFjaFBvcnQ7CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUobWFjaFBvcnQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXN1
bHQubV9mcm9udFN1cmZhY2UgPSBJT1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQobWFjaFBvcnQu
cG9ydCgpKTsKKyAgICAgICAgbWFjaF9wb3J0X2RlYWxsb2NhdGUobWFjaF90YXNrX3NlbGYoKSwg
bWFjaFBvcnQucG9ydCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSBoYW5kbGU7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZGxlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0Lm1fZnJvbnRCdWZmZXIgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZShoYW5kbGUpOworICAgIH0KKwogICAgIHJldHVybiB0cnVl
OwogfQogCkBAIC05NSw2ICsxMzQsNjUgQEAgdm9pZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6
c2V0TmVlZHNEaXNwbGF5KCkKICAgICBzZXROZWVkc0Rpc3BsYXkoSW50UmVjdChJbnRQb2ludCgp
LCBtX3NpemUpKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNyZWF0ZUlP
U3VyZmFjZUNvbnRleHQoSU9TdXJmYWNlUmVmIHN1cmZhY2UsIEludFNpemUgc2l6ZSwgQ0dDb2xv
clNwYWNlUmVmIGNvbG9yU3BhY2UpCit7CisgICAgaWYgKCFzdXJmYWNlKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIENHQml0bWFwSW5mbyBiaXRtYXBJbmZvID0ga0NHSW1hZ2VBbHBo
YVByZW11bHRpcGxpZWRGaXJzdCB8IGtDR0JpdG1hcEJ5dGVPcmRlcjMySG9zdDsKKyAgICBzaXpl
X3QgYml0c1BlckNvbXBvbmVudCA9IDg7CisgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IDMyOwor
ICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGN0eCA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250
ZXh0Q3JlYXRlKHN1cmZhY2UsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgYml0c1BlckNv
bXBvbmVudCwgYml0c1BlclBpeGVsLCBjb2xvclNwYWNlLCBiaXRtYXBJbmZvKSk7CisgICAgaWYg
KCFjdHgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGN0eDsKK30KKwor
c3RhdGljIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IGNyZWF0ZUlPU3VyZmFjZShJbnRTaXplIHNp
emUpCit7CisgICAgdW5zaWduZWQgcGl4ZWxGb3JtYXQgPSAnQkdSQSc7CisgICAgdW5zaWduZWQg
Ynl0ZXNQZXJFbGVtZW50ID0gNDsKKyAgICBpbnQgd2lkdGggPSBzaXplLndpZHRoKCk7CisgICAg
aW50IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGJ5dGVzUGVy
Um93ID0gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9TdXJmYWNlQnl0ZXNQZXJSb3csIHdpZHRo
ICogYnl0ZXNQZXJFbGVtZW50KTsKKyAgICBBU1NFUlQoYnl0ZXNQZXJSb3cpOworCisgICAgdW5z
aWduZWQgbG9uZyBhbGxvY1NpemUgPSBJT1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VB
bGxvY1NpemUsIGhlaWdodCAqIGJ5dGVzUGVyUm93KTsKKyAgICBBU1NFUlQoYWxsb2NTaXplKTsK
KworICAgIGNvbnN0IHZvaWQqIGtleXNbNl07CisgICAgY29uc3Qgdm9pZCogdmFsdWVzWzZdOwor
ICAgIGtleXNbMF0gPSBrSU9TdXJmYWNlV2lkdGg7CisgICAgdmFsdWVzWzBdID0gQ0ZOdW1iZXJD
cmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJndpZHRoKTsKKyAgICBrZXlzWzFdID0ga0lPU3Vy
ZmFjZUhlaWdodDsKKyAgICB2YWx1ZXNbMV0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJ
bnRUeXBlLCAmaGVpZ2h0KTsKKyAgICBrZXlzWzJdID0ga0lPU3VyZmFjZVBpeGVsRm9ybWF0Owor
ICAgIHZhbHVlc1syXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZwaXhl
bEZvcm1hdCk7CisgICAga2V5c1szXSA9IGtJT1N1cmZhY2VCeXRlc1BlckVsZW1lbnQ7CisgICAg
dmFsdWVzWzNdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmJ5dGVzUGVy
RWxlbWVudCk7CisgICAga2V5c1s0XSA9IGtJT1N1cmZhY2VCeXRlc1BlclJvdzsKKyAgICB2YWx1
ZXNbNF0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwgJmJ5dGVzUGVyUm93
KTsKKyAgICBrZXlzWzVdID0ga0lPU3VyZmFjZUFsbG9jU2l6ZTsKKyAgICB2YWx1ZXNbNV0gPSBD
Rk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJMb25nVHlwZSwgJmFsbG9jU2l6ZSk7CisKKyAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkaWN0ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGUoMCwga2V5cywgdmFsdWVzLCA2LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IDY7IGkrKykKKyAgICAgICAgQ0ZSZWxlYXNlKHZhbHVlc1tpXSk7CisKKyAgICByZXR1
cm4gYWRvcHRDRihJT1N1cmZhY2VDcmVhdGUoZGljdC5nZXQoKSkpOworfQorCitSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmltYWdlKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZnJvbnRCdWZmZXIgfHwgbV9hY2NlbGVyYXRlc0RyYXdpbmcpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgQ29weT8KKyAgICByZXR1
cm4gbV9mcm9udEJ1ZmZlci0+bWFrZUNHSW1hZ2VDb3B5KCk7Cit9CisKIGJvb2wgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIGlmICghbV9sYXllcikKQEAgLTEwMiw0
NSArMjAwLDg1IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogCiAg
ICAgLy8gSWYgd2UgcHJldmlvdXNseSB3ZXJlIGRyYXdzQ29udGVudD1ZRVMsIGFuZCBub3cgYXJl
IG5vdCwgd2UgbmVlZAogICAgIC8vIHRvIG5vdGUgdGhhdCBvdXIgYmFja2luZyBzdG9yZSBoYXMg
YmVlbiBjbGVhcmVkLgotICAgIGlmICghbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVy
RHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBtX2Zyb250QnVmZmVyOworICAgIGlmICgh
bV9sYXllci0+b3duZXIoKSB8fCAhbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJh
d3NDb250ZW50KCkpIHsKKyAgICAgICAgYm9vbCBwcmV2aW91c2x5RHJld0NvbnRlbnRzID0gaGFz
RnJvbnRCdWZmZXIoKTsKIAotICAgIGlmIChtX2RpcnR5UmVnaW9uLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2Zyb250QnVmZmVyID0gMDsKKyAgICAgICAgbV9m
cm9udFN1cmZhY2UgPSAwOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSBtX3NpemU7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX3NjYWxlKTsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzbHlE
cmV3Q29udGVudHM7CisgICAgfQogCi0gICAgSW50UmVjdCBsYXllckJvdW5kcyhJbnRQb2ludCgp
LCBtX3NpemUpOworICAgIGlmICghaGFzRnJvbnRCdWZmZXIoKSkKKyAgICAgICAgbV9kaXJ0eVJl
Z2lvbi51bml0ZShJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkpOwogCi0gICAgbV9iYWNrQnVm
ZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhwYW5kZWRJbnRTaXplKHNj
YWxlZFNpemUpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIGlmICghbV9m
cm9udEJ1ZmZlcikKLSAgICAgICAgbV9kaXJ0eVJlZ2lvbi51bml0ZShsYXllckJvdW5kcyk7Cisg
ICAgaWYgKG1fZGlydHlSZWdpb24uaXNFbXB0eSgpIHx8IG1fc2l6ZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNB
TGF5ZXJTaG93UmVwYWludENvdW50ZXIobV9sYXllcikpIHsKICAgICAgICAgSW50UmVjdCBpbmRp
Y2F0b3JSZWN0ID0gbWFwVG9Db250ZW50Q29vcmRpbmF0ZXMoSW50UmVjdCgwLCAwLCA1MiwgMjcp
KTsKICAgICAgICAgbV9kaXJ0eVJlZ2lvbi51bml0ZShpbmRpY2F0b3JSZWN0KTsKICAgICB9CiAK
LSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9iYWNrQnVm
ZmVyLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhp
Y3NDb250ZXh0PiBjb250ZXh0OworCisgICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSBtX3NpemU7
CisgICAgc2NhbGVkU2l6ZS5zY2FsZShtX3NjYWxlKTsKKyAgICBJbnRTaXplIGV4cGFuZGVkU2Nh
bGVkU2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShzY2FsZWRTaXplKTsKKworICAgIFJlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IGJhY2tCdWZmZXI7CisgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gYmFj
a1N1cmZhY2U7CisKKyAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKKyAgICAgICAgYmFj
a1N1cmZhY2UgPSBjcmVhdGVJT1N1cmZhY2UoZXhwYW5kZWRTY2FsZWRTaXplKTsKKyAgICAgICAg
UmV0YWluUHRyPENHQ29udGV4dFJlZj4gY2dDb250ZXh0ID0gY3JlYXRlSU9TdXJmYWNlQ29udGV4
dChiYWNrU3VyZmFjZS5nZXQoKSwgZXhwYW5kZWRTY2FsZWRTaXplLCBzUkdCQ29sb3JTcGFjZVJl
ZigpKTsKKyAgICAgICAgY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0
PihjZ0NvbnRleHQuZ2V0KCkpOworICAgICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0
LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAsIGV4cGFuZGVkU2NhbGVkU2l6ZS53aWR0aCgpLCBleHBh
bmRlZFNjYWxlZFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRT
aXplKDEsIC0xKSk7CisgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgwLCAtZXhwYW5kZWRTY2Fs
ZWRTaXplLmhlaWdodCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBiYWNrQnVmZmVyID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUp
LCBTaGFyZWFibGVCaXRtYXA6OlN1cHBvcnRzQWxwaGEpOworICAgICAgICBjb250ZXh0ID0gYmFj
a0J1ZmZlci0+Y3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CisgICAgfQorCisgICAgZHJhd0luQ29u
dGV4dCgqY29udGV4dCk7CisKKyAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpCisgICAgICAg
IG1fZnJvbnRTdXJmYWNlID0gYmFja1N1cmZhY2U7CisgICAgZWxzZQorICAgICAgICBtX2Zyb250
QnVmZmVyID0gYmFja0J1ZmZlcjsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKK3sKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZnJvbnRJbWFnZTsKKyAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBmcm9udENvbnRleHQ7CisKKyAgICBpZiAobV9hY2NlbGVyYXRlc0Ry
YXdpbmcpIHsKKyAgICAgICAgZnJvbnRDb250ZXh0ID0gY3JlYXRlSU9TdXJmYWNlQ29udGV4dCht
X2Zyb250U3VyZmFjZS5nZXQoKSwgZXhwYW5kZWRJbnRTaXplKG1fc2l6ZSAqIG1fc2NhbGUpLCBz
UkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgZnJvbnRJbWFnZSA9IGFkb3B0Q0YoQ0dJT1N1
cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2UoZnJvbnRDb250ZXh0LmdldCgpKSk7CisgICAgfSBlbHNl
CisgICAgICAgIGZyb250SW1hZ2UgPSBpbWFnZSgpOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IGRp
cnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9uLnJlY3RzKCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGxl
c3MgdGhhbiB3ZWJMYXllck1heFJlY3RzVG9QYWludCByZWN0cyB0byBwYWludCBhbmQgdGhleSBj
b3ZlciBsZXNzCiAgICAgLy8gdGhhbiB3ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkIG9mIHRo
ZSBhcmVhLCB3ZSdsbCBkbyBhIHBhcnRpYWwgcmVwYWludC4KKwogICAgIFZlY3RvcjxGbG9hdFJl
Y3QsIHdlYkxheWVyTWF4UmVjdHNUb1BhaW50PiByZWN0c1RvUGFpbnQ7Ci0gICAgaWYgKGRpcnR5
UmVjdHMuc2l6ZSgpIDw9IHdlYkxheWVyTWF4UmVjdHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24u
dG90YWxBcmVhKCkgPD0gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCAqIGxheWVyQm91bmRz
LndpZHRoKCkgKiBsYXllckJvdW5kcy5oZWlnaHQoKSkgeworICAgIGlmIChkaXJ0eVJlY3RzLnNp
emUoKSA8PSB3ZWJMYXllck1heFJlY3RzVG9QYWludCAmJiBtX2RpcnR5UmVnaW9uLnRvdGFsQXJl
YSgpIDw9IHdlYkxheWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQgKiBtX3NpemUud2lkdGgoKSAqIG1f
c2l6ZS5oZWlnaHQoKSkgewogICAgICAgICAvLyBDb3B5IG92ZXIgdGhlIHBhcnRzIG9mIHRoZSBm
cm9udCBidWZmZXIgdGhhdCB3ZSdyZSBub3QgZ29pbmcgdG8gcmVwYWludC4KLSAgICAgICAgaWYg
KG1fZnJvbnRCdWZmZXIpIHsKLSAgICAgICAgICAgIFJlZ2lvbiBjbGVhblJlZ2lvbihsYXllckJv
dW5kcyk7CisgICAgICAgIGlmIChmcm9udEltYWdlKSB7CisgICAgICAgICAgICBSZWdpb24gY2xl
YW5SZWdpb24oSW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpKTsKICAgICAgICAgICAgIGNsZWFu
UmVnaW9uLnN1YnRyYWN0KG1fZGlydHlSZWdpb24pOwogCi0gICAgICAgICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gZnJvbnRJbWFnZSA9IG1fZnJvbnRCdWZmZXItPm1ha2VDR0ltYWdlKCk7Ci0K
ICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IGNsZWFuUmVnaW9uLnJlY3RzKCkp
IHsKICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qgc2NhbGVkUmVjdCA9IHJlY3Q7CiAgICAgICAg
ICAgICAgICAgc2NhbGVkUmVjdC5zY2FsZShtX3NjYWxlKTsKLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoZnJvbnRJbWFnZS5nZXQoKSwgbV9mcm9udEJ1ZmZlci0+c2l6
ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzY2FsZWRSZWN0LCBzY2FsZWRSZWN0KTsKKyAgICAg
ICAgICAgICAgICBGbG9hdFNpemUgaW1hZ2VTaXplKENHSW1hZ2VHZXRXaWR0aChmcm9udEltYWdl
LmdldCgpKSwgQ0dJbWFnZUdldEhlaWdodChmcm9udEltYWdlLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC5kcmF3TmF0aXZlSW1hZ2UoZnJvbnRJbWFnZS5nZXQoKSwgaW1hZ2VTaXpl
LCBDb2xvclNwYWNlRGV2aWNlUkdCLCBzY2FsZWRSZWN0LCBzY2FsZWRSZWN0KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogCkBAIC0xNDgsMTggKzI4NiwxOCBAQCBib29sIFJlbW90ZUxheWVy
QmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgICAgIHJlY3RzVG9QYWludC5hcHBlbmQo
cmVjdCk7CiAgICAgfQogCi0gICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKG1fc2NhbGUsIG1f
c2NhbGUpKTsKKyAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZShtX3NjYWxlLCBtX3NjYWxlKSk7
CiAKLSAgICBzd2l0Y2ggKGxheWVyKCktPmxheWVyVHlwZSgpKSB7CisgICAgc3dpdGNoIChtX2xh
eWVyLT5sYXllclR5cGUoKSkgewogICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlU2ltcGxlTGF5ZXI6CiAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVU
aWxlZEJhY2tpbmdUaWxlTGF5ZXI6CiAgICAgICAgICAgICBpZiAocmVjdHNUb1BhaW50LmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZWN0c1RvUGFpbnQuYXBwZW5kKGxheWVyQm91bmRzKTsK
KyAgICAgICAgICAgICAgICByZWN0c1RvUGFpbnQuYXBwZW5kKEludFJlY3QoSW50UG9pbnQoKSwg
bV9zaXplKSk7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0c1RvUGFp
bnQpCi0gICAgICAgICAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFp
bnRDb250ZW50cyhtX2xheWVyLCAqY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7Cisg
ICAgICAgICAgICAgICAgbV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250
ZW50cyhtX2xheWVyLCBjb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5
ZXI6Ci0gICAgICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRl
eHQoKSwgbV9sYXllciwgcmVjdHNUb1BhaW50KTsKKyAgICAgICAgICAgIGRyYXdMYXllckNvbnRl
bnRzKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIG1fbGF5ZXIsIHJlY3RzVG9QYWludCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZUxheWVyOgogICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3Jt
TGF5ZXI6CkBAIC0xNjksMTYgKzMwNywxOCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3Jl
OjpkaXNwbGF5KCkKICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RM
YXllcjoKICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5
ZXI6CiAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH07
CiAKICAgICBtX2RpcnR5UmVnaW9uID0gUmVnaW9uKCk7CiAKLSAgICBtX2Zyb250QnVmZmVyID0g
bV9iYWNrQnVmZmVyOwotICAgIG1fYmFja0J1ZmZlciA9IG51bGxwdHI7CisgICAgQ0dDb250ZXh0
Rmx1c2goY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAvLyBJZiBvdXIgZnJvbnRJbWFnZSBpcyBkZXJpdmVkIGZyb20gYW4gSU9TdXJmYWNlLCB3ZSBu
ZWVkIHRvCisgICAgLy8gZGVzdHJveSB0aGUgaW1hZ2UgYmVmb3JlIHRoZSBDR0NvbnRleHQgaXQn
cyBkZXJpdmVkIGZyb20sCisgICAgLy8gc28gdGhhdCB0aGUgY29udGV4dCBkb2Vzbid0IG1ha2Ug
YSBDUFUgY29weSBvZiB0aGUgc3VyZmFjZSBkYXRhLgorICAgIGZyb250SW1hZ2UgPSAwOworICAg
IGZyb250Q29udGV4dCA9IDA7CiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215697</attachid>
            <date>2013-10-31 17:27:09 -0700</date>
            <delta_ts>2013-10-31 18:06:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>surfaces.diff</filename>
            <type>text/plain</type>
            <size>27242</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjUyZTk0Li44MWU5ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMTAtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFZlbmQgbGF5ZXIgY29udGVudHMgdmlhIElPU3Vy
ZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgIEV4cG9ydCBzUkdCQ29sb3JTcGFjZVJlZi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgRXhwb3Nl
IEdyYXBoaWNzQ29udGV4dENHLmguCisKIDIwMTMtMTAtMzAgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4OyBnaXZlIE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgc3RydWN0IGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNmVhZGZmYi4uZTBhNDk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTY5NSw2ICs2OTUsNyBAQCBfX1pON1dlYkNvcmUxN2RyYXdMYXllckNvbnRlbnRz
RVA5Q0dDb250ZXh0UE5TXzE1UGxhdGZvcm1DQUxheWVyRU4zV1RGNlZlY3RvcklOUwogX19aTjdX
ZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlG
aWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9NRVJL
TlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQor
X19aTjdXZWJDb3JlMTdzUkdCQ29sb3JTcGFjZVJlZkV2CiBfX1pON1dlYkNvcmUxN3VzZXJWaXNp
YmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5T
XzVGcmFtZUVSTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtQ0FM
YXllck1hYzE4c2V0R2VvbWV0cnlGbGlwcGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YTliNWUzLi40ZmNlMjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTkxLDcgKzI5OTEsNyBAQAogCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENv
ZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0M0NCODAxMkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCAqLzsgfTsKIAkJOTM0
NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0MkM5RDBEMkIzMzVD
MDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOTM0NDJDQTAw
RDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlGMEQyQjMzNjAwMDMz
OEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTkzNDkwN0U0MTI1
QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdy
YXBoaWNzQ29udGV4dENHLmggKi87IH07CisJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBH
cmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0Mw
RTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBT
Y3JpcHRWYWx1ZS5jcHAgKi87IH07CiAJCTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3Jp
cHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VD
b2RlLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRjMDA4NC4uNTgzMTI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDgwIEBACisyMDEzLTEwLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBWZW5kIGxheWVyIGNvbnRl
bnRzIHZpYSBJT1N1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjM2MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWc6CisgICAgICAgIExp
bmsgV2ViS2l0MiBhZ2FpbnN0IElPU3VyZmFjZS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFuZ2Vk
TGF5ZXJzKToKKyAgICAgICAgRHVtcCB0aGUgc2l6ZSBvZiB0aGUgYmFja2luZyBzdG9yZSBpbnN0
ZWFkIG9mIHRoZSBwb2ludGVyIG9mIGl0cworICAgICAgICBTaGFyZWRCaXRtYXAsIGJlY2F1c2Ug
dGhhdCdzIHNsaWdodGx5IG1vcmUgdXNlZnVsLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0Ojpjb21taXQpOgorICAgICAgICBJZiBhIGxheWVyJ3MgYmFja2luZyBzdG9yZSB1c2VzIGFj
Y2VsZXJhdGVkIGRyYXdpbmcsIGhhbmQgdGhlIElPU3VyZmFjZQorICAgICAgICB0byB0aGUgQ0FM
YXllciBmb3IgZGlzcGxheS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlKToKKyAgICAgICAgSW5pdGlhbGl6ZSBjb250ZW50c1NjYWxl
IHRvIDEgdG8gbWF0Y2ggQ0EuIE90aGVyIHByb3BlcnRpZXMgd2lsbCBmb2xsb3cuCisKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
SW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHdoZW4gaXRz
IHByb3BlcnRpZXMKKyAgICAgICAgY2hhbmdlLCBhbGxvdyBpdCB0byB1cGRhdGUgdGhlbSBvbiB0
aGUgZmx5LiBSZXBsYWNpbmcgdGhlbSBjYXVzZWQKKyAgICAgICAgdXMgdG8gdGhyb3cgYXdheSBy
ZXBhaW50IHJlY3RzIHdoZW4gdGhlIGFjY2VsZXJhdGVkIGRyYXdpbmcKKyAgICAgICAgZmxhZyB3
YXMgZmxpcHBlZC4KKworICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICBTdG9yZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnIGFu
ZCBtYXJrIGl0IGRpcnR5IHdoZW4gaXQgY2hhbmdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aW1hZ2UpOgorICAgICAgICBSZW5hbWUgYml0bWFw
KCkgdG8gaW1hZ2UoKSBhbmQgaGF2ZSBpdCBjcmVhdGUgYSBDR0ltYWdlUmVmIGZyb20KKyAgICAg
ICAgdGhlIFNoYXJlYWJsZUJpdG1hcCwgcmVhZHkgZm9yIGRpcmVjdCBhcHBsaWNhdGlvbiB0byBh
IENBTGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1
cmZhY2UpOgorICAgICAgICBSZXR1cm4gYSBJT1N1cmZhY2UgcmVhZHkgZm9yIGRpcmVjdCBhcHBs
aWNhdGlvbiB0byBhIENBTGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFjY2VsZXJhdGVzRHJhd2luZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZlcik6CisgICAgICAgIFJldHVybiB3aGV0aGVy
IG9yIG5vdCB3ZSBoYXZlIGEgZnJvbnQgYnVmZmVyL3N1cmZhY2UuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICBG
b3J3YXJkLWRlY2xhcmUgc29tZSBDR0lPU3VyZmFjZSBTUEkuCisKKyAgICAgICAgKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgVGhyb3cg
YXdheSBvdXIgZnJvbnQgaW1hZ2UgYW5kIHJlc2V0IGZsYWdzIGlmIG5lZWRlZC4KKworICAgICAg
ICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZSk6CisgICAgICAgIChSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGVjb2RlKToKKyAgICAgICAgRW4vZGVjb2RlIHRoZSBmcm9udCBzdXJm
YWNlIGluc3RlYWQgb2YgdGhlIFNoYXJlYWJsZUJpdG1hcCBpZiBuZWVkZWQsCisgICAgICAgIHVz
aW5nIENvcmVJUEM6Ok1hY2hQb3J0LiBEZXN0cm95IHRoZSBwb3J0IG9uIHJlY2VpcHQuCisKKyAg
ICAgICAgKGNyZWF0ZUlPU3VyZmFjZUNvbnRleHQpOgorICAgICAgICBDcmVhdGUgYSBDR0lPU3Vy
ZmFjZUNvbnRleHQgZnJvbSBhbiBJT1N1cmZhY2UuCisKKyAgICAgICAgKGNyZWF0ZUlPU3VyZmFj
ZSk6CisgICAgICAgIENyZWF0ZSBhbiBJT1N1cmZhY2Ugb2YgdGhlIGdpdmVuIHNpemUuCisKKyAg
ICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjppbWFnZSk6CisgICAgICAgIFJldHVybiBh
IENHSW1hZ2VSZWYsIGlmIHdlJ3JlIG5vdCB1c2luZyBhY2NlbGVyYXRlZCBkcmF3aW5nLgorICAg
ICAgICBNb3ZlZCBmcm9tIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KToKKyAgICAgICAgSWYgdXNpbmcgYWNjZWxlcmF0ZWQgZHJhd2luZywgY3JlYXRl
IGFuZCBwYWludCBpbnRvIGFuIElPU3VyZmFjZS4KKyAgICAgICAgUmVvcmdhbml6ZSBzb21lIGNv
ZGUgdG8gbWFrZSB0aGUgY29weWluZy1mcm9tLXRoZS1mcm9udC1pbWFnZSBjb2RlCisgICAgICAg
IHdvcmsgZm9yIGJvdGggc29mdHdhcmUgYW5kIElPU3VyZmFjZXMuCisgICAgICAgIEZsdXNoIHRo
ZSBjb250ZXh0IHdoZW4gY29tcGxldGVkLCB0byBlbnN1cmUgdGhhdCBhbnkgYXN5bmNocm9ub3Vz
CisgICAgICAgIHBhaW50aW5nIGlzIGNvbXBsZXRlIGJlZm9yZSB3ZSB2ZW5kIHRoZSBzdXJmYWNl
IHRvIHRoZSBVSSBwcm9jZXNzLgorCiAyMDEzLTEwLTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBMb3RzIG9mIEFT
U0VSVChtX2NoaWxkcmVuLmlzRW1wdHkoKSk7IG9uIFBvc3RlciBDaXJjbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcgYi9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4IGQwY2ZmYTMuLjZm
OTI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2Nv
bmZpZwpAQCAtMjksNyArMjksNyBAQCBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJTlNU
QUxMX1BBVEggPSAkKFdFQktJVDJfRlJBTUVXT1JLU19ESVIpOwogRFlMSUJfSU5TVEFMTF9OQU1F
X0JBU0UgPSAkKE5PUk1BTF9XRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIAotRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1MgPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1l
d29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJh
bWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFtZXdv
cmsgUXVhcnR6Q29yZSAtZnJhbWV3b3JrIFNlY3VyaXR5IC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJh
bWV3b3JrIENvcmVBdWRpbzsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1l
d29yayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29j
b2EgLWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEph
dmFTY3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBT
ZWN1cml0eSAtZnJhbWV3b3JrIFdlYkNvcmUgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29y
ayBJT1N1cmZhY2U7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3Ig
bmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcg
ZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMxRU9TNF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUx
MlBvbGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOS1N0
M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xp
Y3lBY3Rpb25FRUU0c3dhcEVSUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9s
aWN5QWN0aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQxRXYgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFj
dGlvbkVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rp
b25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5k
ZXggNWIwY2EzMy4uNWRiNjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC02MjIsNyArNjIyLDcgQEAg
c3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEhhc2hNYXA8UmVtb3QKICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxkb3VibGU+
KHRzLCAidGltZU9mZnNldCIsIGxheWVyUHJvcGVydGllcy50aW1lT2Zmc2V0KTsKIAogICAgICAg
ICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVy
dHk8U2hhcmVhYmxlQml0bWFwKj4odHMsICJiYWNraW5nU3RvcmUiLCBsYXllclByb3BlcnRpZXMu
YmFja2luZ1N0b3JlLmJpdG1hcCgpKTsKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxJbnRTaXpl
Pih0cywgImJhY2tpbmdTdG9yZSIsIGxheWVyUHJvcGVydGllcy5iYWNraW5nU3RvcmUuc2l6ZSgp
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKQogICAgICAgICAgICAgZHVt
cFByb3BlcnR5PEZpbHRlck9wZXJhdGlvbnM+KHRzLCAiZmlsdGVycyIsIGxheWVyUHJvcGVydGll
cy5maWx0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQppbmRleCAyZjQ1OWQ2Li40OTRmMDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yMDAs
OSArMjAwLDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y29tbWl0KGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICAgICAgICAgIGxheWVyLnRp
bWVPZmZzZXQgPSBwcm9wZXJ0aWVzLnRpbWVPZmZzZXQ7CiAKICAgICAgICAgaWYgKHByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2lu
Z1N0b3JlQ2hhbmdlZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgQ29weT8K
LSAgICAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IHByb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKTsKLSAgICAgICAgICAgIGxheWVy
LmNvbnRlbnRzID0gKGlkKWltYWdlLmdldCgpOworICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMu
YmFja2luZ1N0b3JlLmFjY2VsZXJhdGVzRHJhd2luZygpKQorICAgICAgICAgICAgICAgIGxheWVy
LmNvbnRlbnRzID0gKGlkKXByb3BlcnRpZXMuYmFja2luZ1N0b3JlLnN1cmZhY2UoKS5nZXQoKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChpZClw
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5pbWFnZSgpLmdldCgpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5k
ZXggZWU5YzU4NC4uMTNlMjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAt
NjksOCArNjksMTIgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWUKICAgICA6IFBsYXRmb3JtQ0FM
YXllcihsYXllclR5cGUsIG93bmVyKQogICAgICwgbV9sYXllcklEKGdlbmVyYXRlTGF5ZXJJRCgp
KQogICAgICwgbV9zdXBlcmxheWVyKG51bGxwdHIpCisgICAgLCBtX2FjY2VsZXJhdGVzRHJhd2lu
ZyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogeworICAgIC8vIEZJWE1FOiBtYXRj
aCBhbGwgZGVmYXVsdCB2YWx1ZXMgZnJvbSBDQS4KKyAgICBzZXRDb250ZW50c1NjYWxlKDEpOwor
CiAgICAgbV9jb250ZXh0LT5sYXllcldhc0NyZWF0ZWQodGhpcywgbGF5ZXJUeXBlKTsKIH0KIApA
QCAtMTE1LDEyICsxMTksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YW5pbWF0aW9u
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjplbnN1cmVCYWNraW5nU3RvcmUoKQogewotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmxheWVyKCkgPT0gdGhpcwotICAgICAgICAmJiBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlLnNpemUoKSA9PSBtX3Byb3BlcnRpZXMuc2l6ZQotICAgICAgICAmJiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLnNjYWxlKCkgPT0gbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSh0aGlzLCBleHBhbmRlZEludFNpemUobV9wcm9wZXJ0aWVzLnNpemUp
LCBtX3Byb3BlcnRpZXMuY29udGVudHNTY2FsZSk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS5lbnN1cmVCYWNraW5nU3RvcmUodGhpcywgZXhwYW5kZWRJbnRTaXplKG1fcHJvcGVydGll
cy5zaXplKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fYWNjZWxlcmF0ZXNEcmF3aW5n
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheShjb25z
dCBGbG9hdFJlY3QqIHJlY3QpCkBAIC0zNTIsMTEgKzM1MSwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogCiBib29sIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6YWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogfQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wgYWNjZWxlcmF0ZXNE
cmF3aW5nKQogeworICAgIG1fYWNjZWxlcmF0ZXNEcmF3aW5nID0gYWNjZWxlcmF0ZXNEcmF3aW5n
OworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCA4NmZkZGEyLi4xZjVhZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTE1OCw2
ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXMgbV9wcm9wZXJ0aWVzOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckxp
c3QgbV9jaGlsZHJlbjsKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fc3VwZXJsYXllcjsK
KyAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogCiAgICAgUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dCogbV9jb250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCBi
MzkxOGY1Li42ODgwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC0zOSwx
NiArMzksMTkgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlOwogY2xhc3MgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKCk7
Ci0gICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiwgV2Vi
Q29yZTo6SW50U2l6ZSwgZmxvYXQgc2NhbGUpOworCisgICAgdm9pZCBlbnN1cmVCYWNraW5nU3Rv
cmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiwgV2ViQ29yZTo6SW50U2l6ZSwgZmxvYXQgc2NhbGUs
IGJvb2wgYWNjZWxlcmF0ZXNEcmF3aW5nKTsKIAogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAKICAg
ICBib29sIGRpc3BsYXkoKTsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9mcm9udEJ1ZmZlci5nZXQoKTsgfQorICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZSgpIGNvbnN0OworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UoKSBj
b25zdCB7IHJldHVybiBtX2Zyb250U3VyZmFjZS5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGZsb2F0IHNjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zY2FsZTsgfQorICAgIGJvb2wgYWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlc0RyYXdpbmc7IH0KIAogICAgIFBsYXRmb3JtQ0FMYXll
clJlbW90ZSogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CiAKQEAgLTU4LDYgKzYx
LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtYXBUb0NvbnRl
bnRDb29yZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0KSBjb25zdDsKIAorICAgIGJvb2wg
aGFzRnJvbnRCdWZmZXIoKSB7IHJldHVybiBtX2FjY2VsZXJhdGVzRHJhd2luZyA/ICEhbV9mcm9u
dFN1cmZhY2UgOiAhIW1fZnJvbnRCdWZmZXI7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgZHJh
d0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKwogICAgIFBsYXRmb3JtQ0FM
YXllclJlbW90ZSogbV9sYXllcjsKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwpAQCAt
NjYsNyArNzQsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlZ2lvbiBtX2RpcnR5UmVnaW9u
OwogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9mcm9udEJ1ZmZlcjsKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tCdWZmZXI7CisgICAgUmV0YWluUHRyPElPU3VyZmFj
ZVJlZj4gbV9mcm9udFN1cmZhY2U7CisKKyAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQppbmRleCA1NDQ3NjE1Yy4uMDg0YmI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCkBAIC0yOCw1MSArMjgsOTAgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIAotI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJBcmd1bWVu
dENvZGVycy5oIgorI2ltcG9ydCAiTWFjaFBvcnQuaCIKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXll
clJlbW90ZS5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KIAorI2lmZGVmIF9faGFzX2luY2x1ZGUKKyNp
ZiBfX2hhc19pbmNsdWRlKDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXNQ
cml2Lmg+KQorI2ltcG9ydCA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
UHJpdi5oPgorI2VuZGlmCisjZW5kaWYKKworZXh0ZXJuICJDIiB7CitDR0NvbnRleHRSZWYgQ0dJ
T1N1cmZhY2VDb250ZXh0Q3JlYXRlKElPU3VyZmFjZVJlZiwgc2l6ZV90LCBzaXplX3QsIHNpemVf
dCwgc2l6ZV90LCBDR0NvbG9yU3BhY2VSZWYsIENHQml0bWFwSW5mbyk7CitDR0ltYWdlUmVmIENH
SU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKENHQ29udGV4dFJlZik7Cit9CisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlKFBsYXRmb3JtQ0FMYXllclJlbW90
ZSogbGF5ZXIsIEludFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUpCi0gICAgOiBtX2xheWVyKGxheWVy
KQotICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBtX3NjYWxlKHNjYWxlKQorUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlKCkKKyAgICA6IG1fbGF5ZXIobnVs
bHB0cikKIHsKLSAgICBBU1NFUlQobGF5ZXIpOwogfQogCi1SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKQotICAgIDogbV9sYXllcihudWxscHRyKQordm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFBsYXRmb3JtQ0FM
YXllclJlbW90ZSogbGF5ZXIsIEludFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUsIGJvb2wgYWNjZWxl
cmF0ZXNEcmF3aW5nKQogeworICAgIGlmIChtX2xheWVyID09IGxheWVyCisgICAgICAgICYmIG1f
c2l6ZSA9PSBzaXplCisgICAgICAgICYmIG1fc2NhbGUgPT0gc2NhbGUKKyAgICAgICAgJiYgbV9h
Y2NlbGVyYXRlc0RyYXdpbmcgPT0gYWNjZWxlcmF0ZXNEcmF3aW5nKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2xheWVyID0gbGF5ZXI7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX3NjYWxl
ID0gc2NhbGU7CisgICAgbV9hY2NlbGVyYXRlc0RyYXdpbmcgPSBhY2NlbGVyYXRlc0RyYXdpbmc7
CisKKyAgICBtX2Zyb250U3VyZmFjZSA9IG51bGxwdHI7CisgICAgbV9mcm9udEJ1ZmZlciA9IG51
bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwotICAgIG1fZnJvbnRCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUp
OwotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7CiAgICAgZW5jb2RlciA8PCBtX3NpemU7CiAgICAg
ZW5jb2RlciA8PCBtX3NjYWxlOworICAgIGVuY29kZXIgPDwgbV9hY2NlbGVyYXRlc0RyYXdpbmc7
CisKKyAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKKyAgICAgICAgbWFjaF9wb3J0X3Qg
cG9ydCA9IElPU3VyZmFjZUNyZWF0ZU1hY2hQb3J0KG1fZnJvbnRTdXJmYWNlLmdldCgpKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBDb3JlSVBDOjpNYWNoUG9ydChwb3J0LCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
aGFuZGxlOworICAgICAgICBtX2Zyb250QnVmZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisgICAgfQogfQogCiBib29sIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZSYgcmVzdWx0KQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXN1bHQubV9mcm9udEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGhhbmRsZSk7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3NpemUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tX3NjYWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAocmVzdWx0Lm1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CisgICAgICAgIENvcmVJ
UEM6Ok1hY2hQb3J0IG1hY2hQb3J0OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hY2hQ
b3J0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0Lm1fZnJvbnRT
dXJmYWNlID0gSU9TdXJmYWNlTG9va3VwRnJvbU1hY2hQb3J0KG1hY2hQb3J0LnBvcnQoKSk7Cisg
ICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1hY2hQb3J0LnBv
cnQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdC5tX2Zyb250QnVmZmVyID0gU2hhcmVhYmxlQml0
bWFwOjpjcmVhdGUoaGFuZGxlKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
OTUsNiArMTM0LDY1IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNldE5lZWRzRGlz
cGxheSgpCiAgICAgc2V0TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXplKSk7
CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVJT1N1cmZhY2VDb250
ZXh0KElPU3VyZmFjZVJlZiBzdXJmYWNlLCBJbnRTaXplIHNpemUsIENHQ29sb3JTcGFjZVJlZiBj
b2xvclNwYWNlKQoreworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyA9IGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBs
aWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7CisgICAgc2l6ZV90IGJpdHNQZXJD
b21wb25lbnQgPSA4OworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSAzMjsKKyAgICBSZXRhaW5Q
dHI8Q0dDb250ZXh0UmVmPiBjdHggPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4dENyZWF0ZShz
dXJmYWNlLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21wb25lbnQsIGJp
dHNQZXJQaXhlbCwgY29sb3JTcGFjZSwgYml0bWFwSW5mbykpOworICAgIGlmICghY3R4KQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjdHg7Cit9CisKK3N0YXRpYyBSZXRh
aW5QdHI8SU9TdXJmYWNlUmVmPiBjcmVhdGVJT1N1cmZhY2UoSW50U2l6ZSBzaXplKQoreworICAg
IHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOworICAgIHVuc2lnbmVkIGJ5dGVzUGVyRWxl
bWVudCA9IDQ7CisgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGludCBoZWlnaHQg
PSBzaXplLmhlaWdodCgpOworCisgICAgdW5zaWduZWQgbG9uZyBieXRlc1BlclJvdyA9IElPU3Vy
ZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCB3aWR0aCAqIGJ5dGVzUGVy
RWxlbWVudCk7CisgICAgQVNTRVJUKGJ5dGVzUGVyUm93KTsKKworICAgIHVuc2lnbmVkIGxvbmcg
YWxsb2NTaXplID0gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9TdXJmYWNlQWxsb2NTaXplLCBo
ZWlnaHQgKiBieXRlc1BlclJvdyk7CisgICAgQVNTRVJUKGFsbG9jU2l6ZSk7CisKKyAgICBjb25z
dCB2b2lkKiBrZXlzWzZdOworICAgIGNvbnN0IHZvaWQqIHZhbHVlc1s2XTsKKyAgICBrZXlzWzBd
ID0ga0lPU3VyZmFjZVdpZHRoOworICAgIHZhbHVlc1swXSA9IENGTnVtYmVyQ3JlYXRlKDAsIGtD
Rk51bWJlckludFR5cGUsICZ3aWR0aCk7CisgICAga2V5c1sxXSA9IGtJT1N1cmZhY2VIZWlnaHQ7
CisgICAgdmFsdWVzWzFdID0gQ0ZOdW1iZXJDcmVhdGUoMCwga0NGTnVtYmVySW50VHlwZSwgJmhl
aWdodCk7CisgICAga2V5c1syXSA9IGtJT1N1cmZhY2VQaXhlbEZvcm1hdDsKKyAgICB2YWx1ZXNb
Ml0gPSBDRk51bWJlckNyZWF0ZSgwLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmcGl4ZWxGb3JtYXQpOwor
ICAgIGtleXNbM10gPSBrSU9TdXJmYWNlQnl0ZXNQZXJFbGVtZW50OworICAgIHZhbHVlc1szXSA9
IENGTnVtYmVyQ3JlYXRlKDAsIGtDRk51bWJlckludFR5cGUsICZieXRlc1BlckVsZW1lbnQpOwor
ICAgIGtleXNbNF0gPSBrSU9TdXJmYWNlQnl0ZXNQZXJSb3c7CisgICAgdmFsdWVzWzRdID0gQ0ZO
dW1iZXJDcmVhdGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZieXRlc1BlclJvdyk7CisgICAga2V5
c1s1XSA9IGtJT1N1cmZhY2VBbGxvY1NpemU7CisgICAgdmFsdWVzWzVdID0gQ0ZOdW1iZXJDcmVh
dGUoMCwga0NGTnVtYmVyTG9uZ1R5cGUsICZhbGxvY1NpemUpOworCisgICAgUmV0YWluUHRyPENG
RGljdGlvbmFyeVJlZj4gZGljdCA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKDAsIGtleXMs
IHZhbHVlcywgNiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA2OyBp
KyspCisgICAgICAgIENGUmVsZWFzZSh2YWx1ZXNbaV0pOworCisgICAgcmV0dXJuIGFkb3B0Q0Yo
SU9TdXJmYWNlQ3JlYXRlKGRpY3QuZ2V0KCkpKTsKK30KKworUmV0YWluUHRyPENHSW1hZ2VSZWY+
IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjppbWFnZSgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Zy
b250QnVmZmVyIHx8IG1fYWNjZWxlcmF0ZXNEcmF3aW5nKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIENvcHk/CisgICAgcmV0dXJuIG1fZnJvbnRC
dWZmZXItPm1ha2VDR0ltYWdlQ29weSgpOworfQorCiBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0
b3JlOjpkaXNwbGF5KCkKIHsKICAgICBpZiAoIW1fbGF5ZXIpCkBAIC0xMDIsNDUgKzIwMCw4NSBA
QCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKIAogICAgIC8vIElmIHdl
IHByZXZpb3VzbHkgd2VyZSBkcmF3c0NvbnRlbnQ9WUVTLCBhbmQgbm93IGFyZSBub3QsIHdlIG5l
ZWQKICAgICAvLyB0byBub3RlIHRoYXQgb3VyIGJhY2tpbmcgc3RvcmUgaGFzIGJlZW4gY2xlYXJl
ZC4KLSAgICBpZiAoIW1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVu
dCgpKQotICAgICAgICByZXR1cm4gbV9mcm9udEJ1ZmZlcjsKKyAgICBpZiAoIW1fbGF5ZXItPm93
bmVyKCkgfHwgIW1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllckRyYXdzQ29udGVudCgp
KSB7CisgICAgICAgIGJvb2wgcHJldmlvdXNseURyZXdDb250ZW50cyA9IGhhc0Zyb250QnVmZmVy
KCk7CiAKLSAgICBpZiAobV9kaXJ0eVJlZ2lvbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IDA7CisgICAgICAgIG1fZnJvbnRTdXJmYWNl
ID0gMDsKIAotICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbV9zaXplOwotICAgIHNjYWxlZFNp
emUuc2NhbGUobV9zY2FsZSk7CisgICAgICAgIHJldHVybiBwcmV2aW91c2x5RHJld0NvbnRlbnRz
OworICAgIH0KIAotICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoSW50UG9pbnQoKSwgbV9zaXplKTsK
KyAgICBpZiAoIWhhc0Zyb250QnVmZmVyKCkpCisgICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUo
SW50UmVjdChJbnRQb2ludCgpLCBtX3NpemUpKTsKIAotICAgIG1fYmFja0J1ZmZlciA9IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkSW50U2l6ZShzY2FsZWRTaXplKSwg
U2hhcmVhYmxlQml0bWFwOjpTdXBwb3J0c0FscGhhKTsKLSAgICBpZiAoIW1fZnJvbnRCdWZmZXIp
Ci0gICAgICAgIG1fZGlydHlSZWdpb24udW5pdGUobGF5ZXJCb3VuZHMpOworICAgIGlmIChtX2Rp
cnR5UmVnaW9uLmlzRW1wdHkoKSB8fCBtX3NpemUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICBpZiAobV9sYXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyU2hvd1Jl
cGFpbnRDb3VudGVyKG1fbGF5ZXIpKSB7CiAgICAgICAgIEludFJlY3QgaW5kaWNhdG9yUmVjdCA9
IG1hcFRvQ29udGVudENvb3JkaW5hdGVzKEludFJlY3QoMCwgMCwgNTIsIDI3KSk7CiAgICAgICAg
IG1fZGlydHlSZWdpb24udW5pdGUoaW5kaWNhdG9yUmVjdCk7CiAgICAgfQogCi0gICAgc3RkOjp1
bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4gY29udGV4dCA9IG1fYmFja0J1ZmZlci0+Y3JlYXRl
R3JhcGhpY3NDb250ZXh0KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dD4g
Y29udGV4dDsKKworICAgIEZsb2F0U2l6ZSBzY2FsZWRTaXplID0gbV9zaXplOworICAgIHNjYWxl
ZFNpemUuc2NhbGUobV9zY2FsZSk7CisgICAgSW50U2l6ZSBleHBhbmRlZFNjYWxlZFNpemUgPSBl
eHBhbmRlZEludFNpemUoc2NhbGVkU2l6ZSk7CisKKyAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFw
PiBiYWNrQnVmZmVyOworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IGJhY2tTdXJmYWNlOwor
CisgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CisgICAgICAgIGJhY2tTdXJmYWNlID0g
Y3JlYXRlSU9TdXJmYWNlKGV4cGFuZGVkU2NhbGVkU2l6ZSk7CisgICAgICAgIFJldGFpblB0cjxD
R0NvbnRleHRSZWY+IGNnQ29udGV4dCA9IGNyZWF0ZUlPU3VyZmFjZUNvbnRleHQoYmFja1N1cmZh
Y2UuZ2V0KCksIGV4cGFuZGVkU2NhbGVkU2l6ZSwgc1JHQkNvbG9yU3BhY2VSZWYoKSk7CisgICAg
ICAgIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdyYXBoaWNzQ29udGV4dD4oY2dDb250ZXh0
LmdldCgpKTsKKyAgICAgICAgQ0dDb250ZXh0Q2xlYXJSZWN0KGNnQ29udGV4dC5nZXQoKSwgQ0dS
ZWN0TWFrZSgwLCAwLCBleHBhbmRlZFNjYWxlZFNpemUud2lkdGgoKSwgZXhwYW5kZWRTY2FsZWRT
aXplLmhlaWdodCgpKSk7CisgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkp
OworICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoMCwgLWV4cGFuZGVkU2NhbGVkU2l6ZS5oZWln
aHQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYmFja0J1ZmZlciA9IFNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlU2hhcmVhYmxlKGV4cGFuZGVkSW50U2l6ZShzY2FsZWRTaXplKSwgU2hhcmVhYmxl
Qml0bWFwOjpTdXBwb3J0c0FscGhhKTsKKyAgICAgICAgY29udGV4dCA9IGJhY2tCdWZmZXItPmNy
ZWF0ZUdyYXBoaWNzQ29udGV4dCgpOworICAgIH0KKworICAgIGRyYXdJbkNvbnRleHQoKmNvbnRl
eHQpOworCisgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKQorICAgICAgICBtX2Zyb250U3Vy
ZmFjZSA9IGJhY2tTdXJmYWNlOworICAgIGVsc2UKKyAgICAgICAgbV9mcm9udEJ1ZmZlciA9IGJh
Y2tCdWZmZXI7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZHJhd0luQ29udGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCit7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGZyb250SW1hZ2U7CisgICAgUmV0YWluUHRyPENHQ29udGV4
dFJlZj4gZnJvbnRDb250ZXh0OworCisgICAgaWYgKG1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7Cisg
ICAgICAgIGZyb250Q29udGV4dCA9IGNyZWF0ZUlPU3VyZmFjZUNvbnRleHQobV9mcm9udFN1cmZh
Y2UuZ2V0KCksIGV4cGFuZGVkSW50U2l6ZShtX3NpemUgKiBtX3NjYWxlKSwgc1JHQkNvbG9yU3Bh
Y2VSZWYoKSk7CisgICAgICAgIGZyb250SW1hZ2UgPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4
dENyZWF0ZUltYWdlKGZyb250Q29udGV4dC5nZXQoKSkpOworICAgIH0gZWxzZQorICAgICAgICBm
cm9udEltYWdlID0gaW1hZ2UoKTsKIAogICAgIFZlY3RvcjxJbnRSZWN0PiBkaXJ0eVJlY3RzID0g
bV9kaXJ0eVJlZ2lvbi5yZWN0cygpOwogCiAgICAgLy8gSWYgd2UgaGF2ZSBsZXNzIHRoYW4gd2Vi
TGF5ZXJNYXhSZWN0c1RvUGFpbnQgcmVjdHMgdG8gcGFpbnQgYW5kIHRoZXkgY292ZXIgbGVzcwog
ICAgIC8vIHRoYW4gd2ViTGF5ZXJXYXN0ZWRTcGFjZVRocmVzaG9sZCBvZiB0aGUgYXJlYSwgd2Un
bGwgZG8gYSBwYXJ0aWFsIHJlcGFpbnQuCisKICAgICBWZWN0b3I8RmxvYXRSZWN0LCB3ZWJMYXll
ck1heFJlY3RzVG9QYWludD4gcmVjdHNUb1BhaW50OwotICAgIGlmIChkaXJ0eVJlY3RzLnNpemUo
KSA8PSB3ZWJMYXllck1heFJlY3RzVG9QYWludCAmJiBtX2RpcnR5UmVnaW9uLnRvdGFsQXJlYSgp
IDw9IHdlYkxheWVyV2FzdGVkU3BhY2VUaHJlc2hvbGQgKiBsYXllckJvdW5kcy53aWR0aCgpICog
bGF5ZXJCb3VuZHMuaGVpZ2h0KCkpIHsKKyAgICBpZiAoZGlydHlSZWN0cy5zaXplKCkgPD0gd2Vi
TGF5ZXJNYXhSZWN0c1RvUGFpbnQgJiYgbV9kaXJ0eVJlZ2lvbi50b3RhbEFyZWEoKSA8PSB3ZWJM
YXllcldhc3RlZFNwYWNlVGhyZXNob2xkICogbV9zaXplLndpZHRoKCkgKiBtX3NpemUuaGVpZ2h0
KCkpIHsKICAgICAgICAgLy8gQ29weSBvdmVyIHRoZSBwYXJ0cyBvZiB0aGUgZnJvbnQgYnVmZmVy
IHRoYXQgd2UncmUgbm90IGdvaW5nIHRvIHJlcGFpbnQuCi0gICAgICAgIGlmIChtX2Zyb250QnVm
ZmVyKSB7Ci0gICAgICAgICAgICBSZWdpb24gY2xlYW5SZWdpb24obGF5ZXJCb3VuZHMpOworICAg
ICAgICBpZiAoZnJvbnRJbWFnZSkgeworICAgICAgICAgICAgUmVnaW9uIGNsZWFuUmVnaW9uKElu
dFJlY3QoSW50UG9pbnQoKSwgbV9zaXplKSk7CiAgICAgICAgICAgICBjbGVhblJlZ2lvbi5zdWJ0
cmFjdChtX2RpcnR5UmVnaW9uKTsKIAotICAgICAgICAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+
IGZyb250SW1hZ2UgPSBtX2Zyb250QnVmZmVyLT5tYWtlQ0dJbWFnZSgpOwotCiAgICAgICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHJlY3QgOiBjbGVhblJlZ2lvbi5yZWN0cygpKSB7CiAgICAgICAg
ICAgICAgICAgRmxvYXRSZWN0IHNjYWxlZFJlY3QgPSByZWN0OwogICAgICAgICAgICAgICAgIHNj
YWxlZFJlY3Quc2NhbGUobV9zY2FsZSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZHJhd05h
dGl2ZUltYWdlKGZyb250SW1hZ2UuZ2V0KCksIG1fZnJvbnRCdWZmZXItPnNpemUoKSwgQ29sb3JT
cGFjZURldmljZVJHQiwgc2NhbGVkUmVjdCwgc2NhbGVkUmVjdCk7CisgICAgICAgICAgICAgICAg
RmxvYXRTaXplIGltYWdlU2l6ZShDR0ltYWdlR2V0V2lkdGgoZnJvbnRJbWFnZS5nZXQoKSksIENH
SW1hZ2VHZXRIZWlnaHQoZnJvbnRJbWFnZS5nZXQoKSkpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQuZHJhd05hdGl2ZUltYWdlKGZyb250SW1hZ2UuZ2V0KCksIGltYWdlU2l6ZSwgQ29sb3JTcGFj
ZURldmljZVJHQiwgc2NhbGVkUmVjdCwgc2NhbGVkUmVjdCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtMTQ4LDE4ICsyODYsMTggQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6ZGlzcGxheSgpCiAgICAgICAgICAgICByZWN0c1RvUGFpbnQuYXBwZW5kKHJlY3QpOwogICAg
IH0KIAotICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZShtX3NjYWxlLCBtX3NjYWxlKSk7Cisg
ICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUobV9zY2FsZSwgbV9zY2FsZSkpOwogCi0gICAgc3dp
dGNoIChsYXllcigpLT5sYXllclR5cGUoKSkgeworICAgIHN3aXRjaCAobV9sYXllci0+bGF5ZXJU
eXBlKCkpIHsKICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxh
eWVyOgogICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5n
VGlsZUxheWVyOgogICAgICAgICAgICAgaWYgKHJlY3RzVG9QYWludC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmVjdHNUb1BhaW50LmFwcGVuZChsYXllckJvdW5kcyk7CisgICAgICAgICAg
ICAgICAgcmVjdHNUb1BhaW50LmFwcGVuZChJbnRSZWN0KEludFBvaW50KCksIG1fc2l6ZSkpOwog
ICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiByZWN0IDogcmVjdHNUb1BhaW50KQotICAgICAg
ICAgICAgICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMo
bV9sYXllciwgKmNvbnRleHQsIGVuY2xvc2luZ0ludFJlY3QocmVjdCkpOworICAgICAgICAgICAg
ICAgIG1fbGF5ZXItPm93bmVyKCktPnBsYXRmb3JtQ0FMYXllclBhaW50Q29udGVudHMobV9sYXll
ciwgY29udGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgotICAgICAg
ICAgICAgZHJhd0xheWVyQ29udGVudHMoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fbGF5
ZXIsIHJlY3RzVG9QYWludCk7CisgICAgICAgICAgICBkcmF3TGF5ZXJDb250ZW50cyhjb250ZXh0
LnBsYXRmb3JtQ29udGV4dCgpLCBtX2xheWVyLCByZWN0c1RvUGFpbnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKICAg
ICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgpAQCAt
MTY5LDE2ICszMDcsMTggQEAgYm9vbCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlzcGxheSgp
CiAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5ZXI6CiAgICAg
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgogICAgICAg
ICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQ3VzdG9tOgotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9OwogCiAgICAgbV9k
aXJ0eVJlZ2lvbiA9IFJlZ2lvbigpOwogCi0gICAgbV9mcm9udEJ1ZmZlciA9IG1fYmFja0J1ZmZl
cjsKLSAgICBtX2JhY2tCdWZmZXIgPSBudWxscHRyOworICAgIENHQ29udGV4dEZsdXNoKGNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCkpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgb3Vy
IGZyb250SW1hZ2UgaXMgZGVyaXZlZCBmcm9tIGFuIElPU3VyZmFjZSwgd2UgbmVlZCB0bworICAg
IC8vIGRlc3Ryb3kgdGhlIGltYWdlIGJlZm9yZSB0aGUgQ0dDb250ZXh0IGl0J3MgZGVyaXZlZCBm
cm9tLAorICAgIC8vIHNvIHRoYXQgdGhlIGNvbnRleHQgZG9lc24ndCBtYWtlIGEgQ1BVIGNvcHkg
b2YgdGhlIHN1cmZhY2UgZGF0YS4KKyAgICBmcm9udEltYWdlID0gMDsKKyAgICBmcm9udENvbnRl
eHQgPSAwOwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQo=
</data>
<flag name="review"
          id="238488"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215707</attachid>
            <date>2013-10-31 18:06:11 -0700</date>
            <delta_ts>2013-10-31 18:10:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>surfaces.diff</filename>
            <type>text/plain</type>
            <size>26728</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhMjUyZTk0Li44MWU5ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMTAtMzEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFZlbmQgbGF5ZXIgY29udGVudHMgdmlhIElPU3Vy
ZmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MzYwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgIEV4cG9ydCBzUkdCQ29sb3JTcGFjZVJlZi4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgRXhwb3Nl
IEdyYXBoaWNzQ29udGV4dENHLmguCisKIDIwMTMtMTAtMzAgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4OyBnaXZlIE1l
ZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMgc3RydWN0IGEgZGVmYXVsdCBjb25zdHJ1Y3Rvci4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggNmVhZGZmYi4uZTBhNDk2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTY5NSw2ICs2OTUsNyBAQCBfX1pON1dlYkNvcmUxN2RyYXdMYXllckNvbnRlbnRz
RVA5Q0dDb250ZXh0UE5TXzE1UGxhdGZvcm1DQUxheWVyRU4zV1RGNlZlY3RvcklOUwogX19aTjdX
ZWJDb3JlMTdsYW5ndWFnZURpZENoYW5nZUV2CiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3JhcnlG
aWxlRVJLTjNXVEY2U3RyaW5nRVJpCiBfX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9NRVJL
TlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU18zVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQor
X19aTjdXZWJDb3JlMTdzUkdCQ29sb3JTcGFjZVJlZkV2CiBfX1pON1dlYkNvcmUxN3VzZXJWaXNp
YmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4RE9NV2luZG93RXh0ZW5zaW9uQzFFUE5T
XzVGcmFtZUVSTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtQ0FM
YXllck1hYzE4c2V0R2VvbWV0cnlGbGlwcGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0YTliNWUzLi40ZmNlMjBmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTkxLDcgKzI5OTEsNyBAQAogCQk5MzQzQ0I4MjEyRjI1RTUxMDAzM0M1RUUgLyogVGV4dENv
ZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0M0NCODAxMkYyNUU1MTAwMzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCAqLzsgfTsKIAkJOTM0
NDJDOUUwRDJCMzM1QzAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzQ0MkM5RDBEMkIzMzVD
MDAzMzhGRjkgLyogSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaCAqLzsgfTsKIAkJOTM0NDJDQTAw
RDJCMzM2MDAwMzM4RkY5IC8qIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNDQyQzlGMEQyQjMzNjAwMDMz
OEZGOSAvKiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAgKi87IH07Ci0JCTkzNDkwN0U0MTI1
QkJCQzgwMDdGMjNBMCAvKiBHcmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdy
YXBoaWNzQ29udGV4dENHLmggKi87IH07CisJCTkzNDkwN0U0MTI1QkJCQzgwMDdGMjNBMCAvKiBH
cmFwaGljc0NvbnRleHRDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTM0OTA3RTMxMjVCQkJDODAwN0YyM0EwIC8qIEdyYXBoaWNzQ29udGV4dENHLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0Mw
RTEwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNENDMERGMEVEMzlENkYwMEE2NThGMiAvKiBT
Y3JpcHRWYWx1ZS5jcHAgKi87IH07CiAJCTkzNENDMEUyMEVEMzlENkYwMEE2NThGMiAvKiBTY3Jp
cHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTM0Q0MwRTAwRUQzOUQ2RjAwQTY1OEYyIC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM0Q0MxMEEwRURCMjIzOTAwQTY1
OEYyIC8qIFNjcmlwdFNvdXJjZUNvZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzNENDMTA5MEVEQjIyMzkwMEE2NThGMiAvKiBTY3JpcHRTb3VyY2VD
b2RlLmggKi87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMWRjMDA4NC4uNTgzMTI4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDgwIEBACisyMDEzLTEwLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25A
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBWZW5kIGxheWVyIGNvbnRl
bnRzIHZpYSBJT1N1cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjM2MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWc6CisgICAgICAgIExp
bmsgV2ViS2l0MiBhZ2FpbnN0IElPU3VyZmFjZS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OmR1bXBDaGFuZ2Vk
TGF5ZXJzKToKKyAgICAgICAgRHVtcCB0aGUgc2l6ZSBvZiB0aGUgYmFja2luZyBzdG9yZSBpbnN0
ZWFkIG9mIHRoZSBwb2ludGVyIG9mIGl0cworICAgICAgICBTaGFyZWRCaXRtYXAsIGJlY2F1c2Ug
dGhhdCdzIHNsaWdodGx5IG1vcmUgdXNlZnVsLgorCisgICAgICAgICogVUlQcm9jZXNzL21hYy9S
ZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVI
b3N0Ojpjb21taXQpOgorICAgICAgICBJZiBhIGxheWVyJ3MgYmFja2luZyBzdG9yZSB1c2VzIGFj
Y2VsZXJhdGVkIGRyYXdpbmcsIGhhbmQgdGhlIElPU3VyZmFjZQorICAgICAgICB0byB0aGUgQ0FM
YXllciBmb3IgZGlzcGxheS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
UGxhdGZvcm1DQUxheWVyUmVtb3RlKToKKyAgICAgICAgSW5pdGlhbGl6ZSBjb250ZW50c1NjYWxl
IHRvIDEgdG8gbWF0Y2ggQ0EuIE90aGVyIHByb3BlcnRpZXMgd2lsbCBmb2xsb3cuCisKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAg
SW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlIHdoZW4gaXRz
IHByb3BlcnRpZXMKKyAgICAgICAgY2hhbmdlLCBhbGxvdyBpdCB0byB1cGRhdGUgdGhlbSBvbiB0
aGUgZmx5LiBSZXBsYWNpbmcgdGhlbSBjYXVzZWQKKyAgICAgICAgdXMgdG8gdGhyb3cgYXdheSBy
ZXBhaW50IHJlY3RzIHdoZW4gdGhlIGFjY2VsZXJhdGVkIGRyYXdpbmcKKyAgICAgICAgZmxhZyB3
YXMgZmxpcHBlZC4KKworICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRBY2NlbGVyYXRl
c0RyYXdpbmcpOgorICAgICAgICBTdG9yZSB0aGUgYWNjZWxlcmF0ZWQgZHJhd2luZyBmbGFnIGFu
ZCBtYXJrIGl0IGRpcnR5IHdoZW4gaXQgY2hhbmdlcy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6aW1hZ2UpOgorICAgICAgICBSZW5hbWUgYml0bWFw
KCkgdG8gaW1hZ2UoKSBhbmQgaGF2ZSBpdCBjcmVhdGUgYSBDR0ltYWdlUmVmIGZyb20KKyAgICAg
ICAgdGhlIFNoYXJlYWJsZUJpdG1hcCwgcmVhZHkgZm9yIGRpcmVjdCBhcHBsaWNhdGlvbiB0byBh
IENBTGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1
cmZhY2UpOgorICAgICAgICBSZXR1cm4gYSBJT1N1cmZhY2UgcmVhZHkgZm9yIGRpcmVjdCBhcHBs
aWNhdGlvbiB0byBhIENBTGF5ZXIuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNr
aW5nU3RvcmU6OmFjY2VsZXJhdGVzRHJhd2luZyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpoYXNGcm9udEJ1ZmZlcik6CisgICAgICAgIFJldHVybiB3aGV0aGVy
IG9yIG5vdCB3ZSBoYXZlIGEgZnJvbnQgYnVmZmVyL3N1cmZhY2UuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tOgorICAgICAgICBG
b3J3YXJkLWRlY2xhcmUgc29tZSBDR0lPU3VyZmFjZSBTUEkuCisKKyAgICAgICAgKFJlbW90ZUxh
eWVyQmFja2luZ1N0b3JlOjpSZW1vdGVMYXllckJhY2tpbmdTdG9yZSk6CisgICAgICAgIChSZW1v
dGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgVGhyb3cg
YXdheSBvdXIgZnJvbnQgaW1hZ2UgYW5kIHJlc2V0IGZsYWdzIGlmIG5lZWRlZC4KKworICAgICAg
ICAoUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZSk6CisgICAgICAgIChSZW1vdGVMYXll
ckJhY2tpbmdTdG9yZTo6ZGVjb2RlKToKKyAgICAgICAgRW4vZGVjb2RlIHRoZSBmcm9udCBzdXJm
YWNlIGluc3RlYWQgb2YgdGhlIFNoYXJlYWJsZUJpdG1hcCBpZiBuZWVkZWQsCisgICAgICAgIHVz
aW5nIENvcmVJUEM6Ok1hY2hQb3J0LiBEZXN0cm95IHRoZSBwb3J0IG9uIHJlY2VpcHQuCisKKyAg
ICAgICAgKGNyZWF0ZUlPU3VyZmFjZUNvbnRleHQpOgorICAgICAgICBDcmVhdGUgYSBDR0lPU3Vy
ZmFjZUNvbnRleHQgZnJvbSBhbiBJT1N1cmZhY2UuCisKKyAgICAgICAgKGNyZWF0ZUlPU3VyZmFj
ZSk6CisgICAgICAgIENyZWF0ZSBhbiBJT1N1cmZhY2Ugb2YgdGhlIGdpdmVuIHNpemUuCisKKyAg
ICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjppbWFnZSk6CisgICAgICAgIFJldHVybiBh
IENHSW1hZ2VSZWYsIGlmIHdlJ3JlIG5vdCB1c2luZyBhY2NlbGVyYXRlZCBkcmF3aW5nLgorICAg
ICAgICBNb3ZlZCBmcm9tIHRoZSBoZWFkZXIuCisKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2lu
Z1N0b3JlOjpkaXNwbGF5KToKKyAgICAgICAgKFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KToKKyAgICAgICAgSWYgdXNpbmcgYWNjZWxlcmF0ZWQgZHJhd2luZywgY3JlYXRl
IGFuZCBwYWludCBpbnRvIGFuIElPU3VyZmFjZS4KKyAgICAgICAgUmVvcmdhbml6ZSBzb21lIGNv
ZGUgdG8gbWFrZSB0aGUgY29weWluZy1mcm9tLXRoZS1mcm9udC1pbWFnZSBjb2RlCisgICAgICAg
IHdvcmsgZm9yIGJvdGggc29mdHdhcmUgYW5kIElPU3VyZmFjZXMuCisgICAgICAgIEZsdXNoIHRo
ZSBjb250ZXh0IHdoZW4gY29tcGxldGVkLCB0byBlbnN1cmUgdGhhdCBhbnkgYXN5bmNocm9ub3Vz
CisgICAgICAgIHBhaW50aW5nIGlzIGNvbXBsZXRlIGJlZm9yZSB3ZSB2ZW5kIHRoZSBzdXJmYWNl
IHRvIHRoZSBVSSBwcm9jZXNzLgorCiAyMDEzLTEwLTMwICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBMb3RzIG9mIEFT
U0VSVChtX2NoaWxkcmVuLmlzRW1wdHkoKSk7IG9uIFBvc3RlciBDaXJjbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIueGNjb25maWcgYi9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9XZWJLaXQyLnhjY29uZmlnCmluZGV4IGQwY2ZmYTMuLjZm
OTI3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NvbmZpZ3VyYXRpb25zL1dlYktpdDIu
eGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvV2ViS2l0Mi54Y2Nv
bmZpZwpAQCAtMjksNyArMjksNyBAQCBJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7CiBJTlNU
QUxMX1BBVEggPSAkKFdFQktJVDJfRlJBTUVXT1JLU19ESVIpOwogRFlMSUJfSU5TVEFMTF9OQU1F
X0JBU0UgPSAkKE5PUk1BTF9XRUJLSVQyX0ZSQU1FV09SS1NfRElSKTsKIAotRlJBTUVXT1JLX0FO
RF9MSUJSQVJZX0xERkxBR1MgPSAtZnJhbWV3b3JrIEFwcGxpY2F0aW9uU2VydmljZXMgLWZyYW1l
d29yayBDYXJib24gLWZyYW1ld29yayBDb2NvYSAtZnJhbWV3b3JrIENvcmVTZXJ2aWNlcyAtZnJh
bWV3b3JrIElPS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUgLWxpY3Vjb3JlIC1mcmFtZXdv
cmsgUXVhcnR6Q29yZSAtZnJhbWV3b3JrIFNlY3VyaXR5IC1mcmFtZXdvcmsgV2ViQ29yZSAtZnJh
bWV3b3JrIENvcmVBdWRpbzsKK0ZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWZyYW1l
d29yayBBcHBsaWNhdGlvblNlcnZpY2VzIC1mcmFtZXdvcmsgQ2FyYm9uIC1mcmFtZXdvcmsgQ29j
b2EgLWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIEph
dmFTY3JpcHRDb3JlIC1saWN1Y29yZSAtZnJhbWV3b3JrIFF1YXJ0ekNvcmUgLWZyYW1ld29yayBT
ZWN1cml0eSAtZnJhbWV3b3JrIFdlYkNvcmUgLWZyYW1ld29yayBDb3JlQXVkaW8gLWZyYW1ld29y
ayBJT1N1cmZhY2U7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJkIGxpYnJhcnkgb3BlcmF0b3Ig
bmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcg
ZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRUMyRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9f
Wk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMxRU9TNF8gLVds
LC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUx
MlBvbGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOS1N0
M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFY2xFUzJfIC1XbCwtdW5l
eHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xp
Y3lBY3Rpb25FRUU0c3dhcEVSUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wsIC1XbCxfX1pOU3Qz
X18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVu
ZXhwb3J0ZWRfc3ltYm9sLCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9s
aWN5QWN0aW9uRUVFQzJFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNf
XzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQxRXYgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFj
dGlvbkVFRUQyRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCwgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rp
b25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRWFTRVJLUzRfOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5k
ZXggNWIwY2EzMy4uNWRiNjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21h
Yy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBAIC02MjIsNyArNjIyLDcgQEAg
c3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IEhhc2hNYXA8UmVtb3QKICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxkb3VibGU+
KHRzLCAidGltZU9mZnNldCIsIGxheWVyUHJvcGVydGllcy50aW1lT2Zmc2V0KTsKIAogICAgICAg
ICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVy
dHk8U2hhcmVhYmxlQml0bWFwKj4odHMsICJiYWNraW5nU3RvcmUiLCBsYXllclByb3BlcnRpZXMu
YmFja2luZ1N0b3JlLmJpdG1hcCgpKTsKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxJbnRTaXpl
Pih0cywgImJhY2tpbmdTdG9yZSIsIGxheWVyUHJvcGVydGllcy5iYWNraW5nU3RvcmUuc2l6ZSgp
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKQogICAgICAgICAgICAgZHVt
cFByb3BlcnR5PEZpbHRlck9wZXJhdGlvbnM+KHRzLCAiZmlsdGVycyIsIGxheWVyUHJvcGVydGll
cy5maWx0ZXJzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
TGF5ZXJUcmVlSG9zdC5tbQppbmRleCAyZjQ1OWQ2Li40OTRmMDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tCkBAIC0yMDAs
OSArMjAwLDEwIEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y29tbWl0KGNvbnN0IFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICAgICAgICAgIGxheWVyLnRp
bWVPZmZzZXQgPSBwcm9wZXJ0aWVzLnRpbWVPZmZzZXQ7CiAKICAgICAgICAgaWYgKHByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2lu
Z1N0b3JlQ2hhbmdlZCkgewotICAgICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgQ29weT8K
LSAgICAgICAgICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IHByb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKTsKLSAgICAgICAgICAgIGxheWVy
LmNvbnRlbnRzID0gKGlkKWltYWdlLmdldCgpOworICAgICAgICAgICAgaWYgKHByb3BlcnRpZXMu
YmFja2luZ1N0b3JlLmFjY2VsZXJhdGVzRHJhd2luZygpKQorICAgICAgICAgICAgICAgIGxheWVy
LmNvbnRlbnRzID0gKGlkKXByb3BlcnRpZXMuYmFja2luZ1N0b3JlLnN1cmZhY2UoKS5nZXQoKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsYXllci5jb250ZW50cyA9IChpZClw
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5pbWFnZSgpLmdldCgpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5k
ZXggZWU5YzU4NC4uMTNlMjU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAt
NjksOCArNjksMTIgQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWUKICAgICA6IFBsYXRmb3JtQ0FM
YXllcihsYXllclR5cGUsIG93bmVyKQogICAgICwgbV9sYXllcklEKGdlbmVyYXRlTGF5ZXJJRCgp
KQogICAgICwgbV9zdXBlcmxheWVyKG51bGxwdHIpCisgICAgLCBtX2FjY2VsZXJhdGVzRHJhd2lu
ZyhmYWxzZSkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQogeworICAgIC8vIEZJWE1FOiBtYXRj
aCBhbGwgZGVmYXVsdCB2YWx1ZXMgZnJvbSBDQS4KKyAgICBzZXRDb250ZW50c1NjYWxlKDEpOwor
CiAgICAgbV9jb250ZXh0LT5sYXllcldhc0NyZWF0ZWQodGhpcywgbGF5ZXJUeXBlKTsKIH0KIApA
QCAtMTE1LDEyICsxMTksNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YW5pbWF0aW9u
U3RhcnRlZChDRlRpbWVJbnRlcnZhbCBiZWdpblRpbWUpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVy
UmVtb3RlOjplbnN1cmVCYWNraW5nU3RvcmUoKQogewotICAgIGlmIChtX3Byb3BlcnRpZXMuYmFj
a2luZ1N0b3JlLmxheWVyKCkgPT0gdGhpcwotICAgICAgICAmJiBtX3Byb3BlcnRpZXMuYmFja2lu
Z1N0b3JlLnNpemUoKSA9PSBtX3Byb3BlcnRpZXMuc2l6ZQotICAgICAgICAmJiBtX3Byb3BlcnRp
ZXMuYmFja2luZ1N0b3JlLnNjYWxlKCkgPT0gbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fcHJvcGVydGllcy5iYWNraW5nU3RvcmUgPSBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZSh0aGlzLCBleHBhbmRlZEludFNpemUobV9wcm9wZXJ0aWVzLnNpemUp
LCBtX3Byb3BlcnRpZXMuY29udGVudHNTY2FsZSk7CisgICAgbV9wcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS5lbnN1cmVCYWNraW5nU3RvcmUodGhpcywgZXhwYW5kZWRJbnRTaXplKG1fcHJvcGVydGll
cy5zaXplKSwgbV9wcm9wZXJ0aWVzLmNvbnRlbnRzU2NhbGUsIG1fYWNjZWxlcmF0ZXNEcmF3aW5n
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE5lZWRzRGlzcGxheShjb25z
dCBGbG9hdFJlY3QqIHJlY3QpCkBAIC0zNTIsMTEgKzM1MSwxMyBAQCB2b2lkIFBsYXRmb3JtQ0FM
YXllclJlbW90ZTo6c2V0TWFza3NUb0JvdW5kcyhib29sIHZhbHVlKQogCiBib29sIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6YWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogfQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0QWNjZWxlcmF0ZXNEcmF3aW5nKGJvb2wgYWNjZWxlcmF0ZXNE
cmF3aW5nKQogeworICAgIG1fYWNjZWxlcmF0ZXNEcmF3aW5nID0gYWNjZWxlcmF0ZXNEcmF3aW5n
OworICAgIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwogfQogCiBDRlR5cGVSZWYgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpjb250ZW50cygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRl
eCA4NmZkZGEyLi4xZjVhZmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTE1OCw2
ICsxNTgsNyBAQCBwcml2YXRlOgogICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXMgbV9wcm9wZXJ0aWVzOwogICAgIFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckxp
c3QgbV9jaGlsZHJlbjsKICAgICBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIG1fc3VwZXJsYXllcjsK
KyAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwogCiAgICAgUmVtb3RlTGF5ZXJUcmVlQ29u
dGV4dCogbV9jb250ZXh0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAppbmRleCBi
MzkxOGY1Li42ODgwYzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCkBAIC0zOSwx
NiArMzksMTkgQEAgY2xhc3MgUGxhdGZvcm1DQUxheWVyUmVtb3RlOwogY2xhc3MgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUgewogcHVibGljOgogICAgIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlKCk7
Ci0gICAgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiwgV2Vi
Q29yZTo6SW50U2l6ZSwgZmxvYXQgc2NhbGUpOworCisgICAgdm9pZCBlbnN1cmVCYWNraW5nU3Rv
cmUoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiwgV2ViQ29yZTo6SW50U2l6ZSwgZmxvYXQgc2NhbGUs
IGJvb2wgYWNjZWxlcmF0ZXNEcmF3aW5nKTsKIAogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QpOwogICAgIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAKICAg
ICBib29sIGRpc3BsYXkoKTsKIAotICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwKCkgY29uc3Qg
eyByZXR1cm4gbV9mcm9udEJ1ZmZlci5nZXQoKTsgfQorICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZSgpIGNvbnN0OworICAgIFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IHN1cmZhY2UoKSBj
b25zdCB7IHJldHVybiBtX2Zyb250U3VyZmFjZS5nZXQoKTsgfQogICAgIFdlYkNvcmU6OkludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGZsb2F0IHNjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9zY2FsZTsgfQorICAgIGJvb2wgYWNjZWxlcmF0ZXNEcmF3aW5nKCkgY29u
c3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlc0RyYXdpbmc7IH0KIAogICAgIFBsYXRmb3JtQ0FMYXll
clJlbW90ZSogbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyOyB9CiAKQEAgLTU4LDYgKzYx
LDExIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtYXBUb0NvbnRl
bnRDb29yZGluYXRlcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0KSBjb25zdDsKIAorICAgIGJvb2wg
aGFzRnJvbnRCdWZmZXIoKSB7IHJldHVybiBtX2FjY2VsZXJhdGVzRHJhd2luZyA/ICEhbV9mcm9u
dFN1cmZhY2UgOiAhIW1fZnJvbnRCdWZmZXI7IH0KKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ+IGNyZWF0ZUJhY2tpbmdTdG9yZSgpOworICAgIHZvaWQgZHJh
d0luQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmKTsKKwogICAgIFBsYXRmb3JtQ0FM
YXllclJlbW90ZSogbV9sYXllcjsKIAogICAgIFdlYkNvcmU6OkludFNpemUgbV9zaXplOwpAQCAt
NjYsNyArNzQsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlJlZ2lvbiBtX2RpcnR5UmVnaW9u
OwogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gbV9mcm9udEJ1ZmZlcjsKLSAgICBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBtX2JhY2tCdWZmZXI7CisgICAgUmV0YWluUHRyPElPU3VyZmFj
ZVJlZj4gbV9mcm9udFN1cmZhY2U7CisKKyAgICBib29sIG1fYWNjZWxlcmF0ZXNEcmF3aW5nOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5t
bQppbmRleCA1NDQ3NjE1Yy4uOGJlNWVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3Jl
Lm1tCkBAIC0yOCw1MSArMjgsOTAgQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIAotI2ltcG9ydCAiUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgiCiAjaW1wb3J0ICJBcmd1bWVu
dENvZGVycy5oIgorI2ltcG9ydCAiTWFjaFBvcnQuaCIKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXll
clJlbW90ZS5oIgogI2ltcG9ydCAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW1wb3J0ICJXZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaCIKKyNpbXBvcnQgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Q0cuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvV2ViTGF5ZXIuaD4KIAorI2lmZGVmIF9faGFzX2luY2x1ZGUKKyNp
ZiBfX2hhc19pbmNsdWRlKDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXNQ
cml2Lmg+KQorI2ltcG9ydCA8QXBwbGljYXRpb25TZXJ2aWNlcy9BcHBsaWNhdGlvblNlcnZpY2Vz
UHJpdi5oPgorI2VuZGlmCisjZW5kaWYKKworZXh0ZXJuICJDIiB7CitDR0NvbnRleHRSZWYgQ0dJ
T1N1cmZhY2VDb250ZXh0Q3JlYXRlKElPU3VyZmFjZVJlZiwgc2l6ZV90LCBzaXplX3QsIHNpemVf
dCwgc2l6ZV90LCBDR0NvbG9yU3BhY2VSZWYsIENHQml0bWFwSW5mbyk7CitDR0ltYWdlUmVmIENH
SU9TdXJmYWNlQ29udGV4dENyZWF0ZUltYWdlKENHQ29udGV4dFJlZik7Cit9CisKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAotUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlKFBsYXRmb3JtQ0FMYXllclJlbW90
ZSogbGF5ZXIsIEludFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUpCi0gICAgOiBtX2xheWVyKGxheWVy
KQotICAgICwgbV9zaXplKHNpemUpCi0gICAgLCBtX3NjYWxlKHNjYWxlKQorUmVtb3RlTGF5ZXJC
YWNraW5nU3RvcmU6OlJlbW90ZUxheWVyQmFja2luZ1N0b3JlKCkKKyAgICA6IG1fbGF5ZXIobnVs
bHB0cikKIHsKLSAgICBBU1NFUlQobGF5ZXIpOwogfQogCi1SZW1vdGVMYXllckJhY2tpbmdTdG9y
ZTo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKQotICAgIDogbV9sYXllcihudWxscHRyKQordm9p
ZCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKFBsYXRmb3JtQ0FM
YXllclJlbW90ZSogbGF5ZXIsIEludFNpemUgc2l6ZSwgZmxvYXQgc2NhbGUsIGJvb2wgYWNjZWxl
cmF0ZXNEcmF3aW5nKQogeworICAgIGlmIChtX2xheWVyID09IGxheWVyCisgICAgICAgICYmIG1f
c2l6ZSA9PSBzaXplCisgICAgICAgICYmIG1fc2NhbGUgPT0gc2NhbGUKKyAgICAgICAgJiYgbV9h
Y2NlbGVyYXRlc0RyYXdpbmcgPT0gYWNjZWxlcmF0ZXNEcmF3aW5nKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2xheWVyID0gbGF5ZXI7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX3NjYWxl
ID0gc2NhbGU7CisgICAgbV9hY2NlbGVyYXRlc0RyYXdpbmcgPSBhY2NlbGVyYXRlc0RyYXdpbmc7
CisKKyAgICBtX2Zyb250U3VyZmFjZSA9IG51bGxwdHI7CisgICAgbV9mcm9udEJ1ZmZlciA9IG51
bGxwdHI7CiB9CiAKIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmVuY29kZShDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgU2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgaGFuZGxlOwotICAgIG1fZnJvbnRCdWZmZXItPmNyZWF0ZUhhbmRsZShoYW5kbGUp
OwotCi0gICAgZW5jb2RlciA8PCBoYW5kbGU7CiAgICAgZW5jb2RlciA8PCBtX3NpemU7CiAgICAg
ZW5jb2RlciA8PCBtX3NjYWxlOworICAgIGVuY29kZXIgPDwgbV9hY2NlbGVyYXRlc0RyYXdpbmc7
CisKKyAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKKyAgICAgICAgbWFjaF9wb3J0X3Qg
cG9ydCA9IElPU3VyZmFjZUNyZWF0ZU1hY2hQb3J0KG1fZnJvbnRTdXJmYWNlLmdldCgpKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBDb3JlSVBDOjpNYWNoUG9ydChwb3J0LCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUg
aGFuZGxlOworICAgICAgICBtX2Zyb250QnVmZmVyLT5jcmVhdGVIYW5kbGUoaGFuZGxlKTsKKyAg
ICAgICAgZW5jb2RlciA8PCBoYW5kbGU7CisgICAgfQogfQogCiBib29sIFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZW1v
dGVMYXllckJhY2tpbmdTdG9yZSYgcmVzdWx0KQogewotICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICByZXN1bHQubV9mcm9udEJ1ZmZlciA9IFNoYXJlYWJsZUJpdG1hcDo6
Y3JlYXRlKGhhbmRsZSk7Ci0KICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3NpemUp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5tX3NjYWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQubV9hY2NlbGVyYXRlc0RyYXdpbmcpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBpZiAocmVzdWx0Lm1fYWNjZWxlcmF0ZXNEcmF3aW5nKSB7CisgICAgICAgIENvcmVJ
UEM6Ok1hY2hQb3J0IG1hY2hQb3J0OworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1hY2hQ
b3J0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0Lm1fZnJvbnRT
dXJmYWNlID0gYWRvcHRDRihJT1N1cmZhY2VMb29rdXBGcm9tTWFjaFBvcnQobWFjaFBvcnQucG9y
dCgpKSk7CisgICAgICAgIG1hY2hfcG9ydF9kZWFsbG9jYXRlKG1hY2hfdGFza19zZWxmKCksIG1h
Y2hQb3J0LnBvcnQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgU2hhcmVhYmxlQml0bWFwOjpI
YW5kbGUgaGFuZGxlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhhbmRsZSkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdC5tX2Zyb250QnVmZmVyID0gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGUoaGFuZGxlKTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtOTUsNiArMTM0LDU0IEBAIHZvaWQgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnNl
dE5lZWRzRGlzcGxheSgpCiAgICAgc2V0TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoKSwg
bV9zaXplKSk7CiB9CiAKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjcmVhdGVJT1N1
cmZhY2VDb250ZXh0KElPU3VyZmFjZVJlZiBzdXJmYWNlLCBJbnRTaXplIHNpemUsIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlKQoreworICAgIGlmICghc3VyZmFjZSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBDR0JpdG1hcEluZm8gYml0bWFwSW5mbyA9IGtDR0ltYWdlQWxwaGFQ
cmVtdWx0aXBsaWVkRmlyc3QgfCBrQ0dCaXRtYXBCeXRlT3JkZXIzMkhvc3Q7CisgICAgc2l6ZV90
IGJpdHNQZXJDb21wb25lbnQgPSA4OworICAgIHNpemVfdCBiaXRzUGVyUGl4ZWwgPSAzMjsKKyAg
ICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjdHggPSBhZG9wdENGKENHSU9TdXJmYWNlQ29udGV4
dENyZWF0ZShzdXJmYWNlLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIGJpdHNQZXJDb21w
b25lbnQsIGJpdHNQZXJQaXhlbCwgY29sb3JTcGFjZSwgYml0bWFwSW5mbykpOworICAgIGlmICgh
Y3R4KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBjdHg7Cit9CisKK3N0
YXRpYyBSZXRhaW5QdHI8SU9TdXJmYWNlUmVmPiBjcmVhdGVJT1N1cmZhY2UoSW50U2l6ZSBzaXpl
KQoreworICAgIHVuc2lnbmVkIHBpeGVsRm9ybWF0ID0gJ0JHUkEnOworICAgIHVuc2lnbmVkIGJ5
dGVzUGVyRWxlbWVudCA9IDQ7CisgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aCgpOworICAgIGlu
dCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOworCisgICAgdW5zaWduZWQgbG9uZyBieXRlc1BlclJv
dyA9IElPU3VyZmFjZUFsaWduUHJvcGVydHkoa0lPU3VyZmFjZUJ5dGVzUGVyUm93LCB3aWR0aCAq
IGJ5dGVzUGVyRWxlbWVudCk7CisgICAgQVNTRVJUKGJ5dGVzUGVyUm93KTsKKworICAgIHVuc2ln
bmVkIGxvbmcgYWxsb2NTaXplID0gSU9TdXJmYWNlQWxpZ25Qcm9wZXJ0eShrSU9TdXJmYWNlQWxs
b2NTaXplLCBoZWlnaHQgKiBieXRlc1BlclJvdyk7CisgICAgQVNTRVJUKGFsbG9jU2l6ZSk7CisK
KyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkaWN0ID0gQHsKKyAgICAgICAgKGlkKWtJT1N1
cmZhY2VXaWR0aDogQCh3aWR0aCksCisgICAgICAgIChpZClrSU9TdXJmYWNlSGVpZ2h0OiBAKGhl
aWdodCksCisgICAgICAgIChpZClrSU9TdXJmYWNlUGl4ZWxGb3JtYXQ6IEAocGl4ZWxGb3JtYXQp
LAorICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5dGVzUGVyRWxlbWVudDogQChieXRlc1BlckVsZW1l
bnQpLAorICAgICAgICAoaWQpa0lPU3VyZmFjZUJ5dGVzUGVyUm93OiBAKGJ5dGVzUGVyUm93KSwK
KyAgICAgICAgKGlkKWtJT1N1cmZhY2VBbGxvY1NpemU6IEAoYWxsb2NTaXplKSB9OworCisgICAg
cmV0dXJuIGFkb3B0Q0YoSU9TdXJmYWNlQ3JlYXRlKChDRkRpY3Rpb25hcnlSZWYpZGljdC5nZXQo
KSkpOworfQorCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6
OmltYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZnJvbnRCdWZmZXIgfHwgbV9hY2NlbGVyYXRl
c0RyYXdpbmcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gRklYTUU6IERvIHdl
IG5lZWQgQ29weT8KKyAgICByZXR1cm4gbV9mcm9udEJ1ZmZlci0+bWFrZUNHSW1hZ2VDb3B5KCk7
Cit9CisKIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmRpc3BsYXkoKQogewogICAgIGlm
ICghbV9sYXllcikKQEAgLTEwMiw0NSArMTg5LDg1IEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5n
U3RvcmU6OmRpc3BsYXkoKQogCiAgICAgLy8gSWYgd2UgcHJldmlvdXNseSB3ZXJlIGRyYXdzQ29u
dGVudD1ZRVMsIGFuZCBub3cgYXJlIG5vdCwgd2UgbmVlZAogICAgIC8vIHRvIG5vdGUgdGhhdCBv
dXIgYmFja2luZyBzdG9yZSBoYXMgYmVlbiBjbGVhcmVkLgotICAgIGlmICghbV9sYXllci0+b3du
ZXIoKS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybiBtX2Zy
b250QnVmZmVyOworICAgIGlmICghbV9sYXllci0+b3duZXIoKSB8fCAhbV9sYXllci0+b3duZXIo
KS0+cGxhdGZvcm1DQUxheWVyRHJhd3NDb250ZW50KCkpIHsKKyAgICAgICAgYm9vbCBwcmV2aW91
c2x5RHJld0NvbnRlbnRzID0gaGFzRnJvbnRCdWZmZXIoKTsKIAotICAgIGlmIChtX2RpcnR5UmVn
aW9uLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBtX2Zyb250QnVm
ZmVyID0gbnVsbHB0cjsKKyAgICAgICAgbV9mcm9udFN1cmZhY2UgPSBudWxscHRyOwogCi0gICAg
RmxvYXRTaXplIHNjYWxlZFNpemUgPSBtX3NpemU7Ci0gICAgc2NhbGVkU2l6ZS5zY2FsZShtX3Nj
YWxlKTsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzbHlEcmV3Q29udGVudHM7CisgICAgfQogCi0g
ICAgSW50UmVjdCBsYXllckJvdW5kcyhJbnRQb2ludCgpLCBtX3NpemUpOworICAgIGlmICghaGFz
RnJvbnRCdWZmZXIoKSkKKyAgICAgICAgbV9kaXJ0eVJlZ2lvbi51bml0ZShJbnRSZWN0KEludFBv
aW50KCksIG1fc2l6ZSkpOwogCi0gICAgbV9iYWNrQnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpj
cmVhdGVTaGFyZWFibGUoZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUpLCBTaGFyZWFibGVCaXRt
YXA6OlN1cHBvcnRzQWxwaGEpOwotICAgIGlmICghbV9mcm9udEJ1ZmZlcikKLSAgICAgICAgbV9k
aXJ0eVJlZ2lvbi51bml0ZShsYXllckJvdW5kcyk7CisgICAgaWYgKG1fZGlydHlSZWdpb24uaXNF
bXB0eSgpIHx8IG1fc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChtX2xheWVyLT5vd25lcigpLT5wbGF0Zm9ybUNBTGF5ZXJTaG93UmVwYWludENvdW50ZXIo
bV9sYXllcikpIHsKICAgICAgICAgSW50UmVjdCBpbmRpY2F0b3JSZWN0ID0gbWFwVG9Db250ZW50
Q29vcmRpbmF0ZXMoSW50UmVjdCgwLCAwLCA1MiwgMjcpKTsKICAgICAgICAgbV9kaXJ0eVJlZ2lv
bi51bml0ZShpbmRpY2F0b3JSZWN0KTsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8R3Jh
cGhpY3NDb250ZXh0PiBjb250ZXh0ID0gbV9iYWNrQnVmZmVyLT5jcmVhdGVHcmFwaGljc0NvbnRl
eHQoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R3JhcGhpY3NDb250ZXh0PiBjb250ZXh0OworCisg
ICAgRmxvYXRTaXplIHNjYWxlZFNpemUgPSBtX3NpemU7CisgICAgc2NhbGVkU2l6ZS5zY2FsZSht
X3NjYWxlKTsKKyAgICBJbnRTaXplIGV4cGFuZGVkU2NhbGVkU2l6ZSA9IGV4cGFuZGVkSW50U2l6
ZShzY2FsZWRTaXplKTsKKworICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGJhY2tCdWZmZXI7
CisgICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gYmFja1N1cmZhY2U7CisKKyAgICBpZiAobV9h
Y2NlbGVyYXRlc0RyYXdpbmcpIHsKKyAgICAgICAgYmFja1N1cmZhY2UgPSBjcmVhdGVJT1N1cmZh
Y2UoZXhwYW5kZWRTY2FsZWRTaXplKTsKKyAgICAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4g
Y2dDb250ZXh0ID0gY3JlYXRlSU9TdXJmYWNlQ29udGV4dChiYWNrU3VyZmFjZS5nZXQoKSwgZXhw
YW5kZWRTY2FsZWRTaXplLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAgICAgICAgY29udGV4dCA9
IHN0ZDo6bWFrZV91bmlxdWU8R3JhcGhpY3NDb250ZXh0PihjZ0NvbnRleHQuZ2V0KCkpOworICAg
ICAgICBDR0NvbnRleHRDbGVhclJlY3QoY2dDb250ZXh0LmdldCgpLCBDR1JlY3RNYWtlKDAsIDAs
IGV4cGFuZGVkU2NhbGVkU2l6ZS53aWR0aCgpLCBleHBhbmRlZFNjYWxlZFNpemUuaGVpZ2h0KCkp
KTsKKyAgICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgIGNv
bnRleHQtPnRyYW5zbGF0ZSgwLCAtZXhwYW5kZWRTY2FsZWRTaXplLmhlaWdodCgpKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBiYWNrQnVmZmVyID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFy
ZWFibGUoZXhwYW5kZWRJbnRTaXplKHNjYWxlZFNpemUpLCBTaGFyZWFibGVCaXRtYXA6OlN1cHBv
cnRzQWxwaGEpOworICAgICAgICBjb250ZXh0ID0gYmFja0J1ZmZlci0+Y3JlYXRlR3JhcGhpY3ND
b250ZXh0KCk7CisgICAgfQorCisgICAgZHJhd0luQ29udGV4dCgqY29udGV4dCk7CisKKyAgICBp
ZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpCisgICAgICAgIG1fZnJvbnRTdXJmYWNlID0gYmFja1N1
cmZhY2U7CisgICAgZWxzZQorICAgICAgICBtX2Zyb250QnVmZmVyID0gYmFja0J1ZmZlcjsKKwor
ICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkcmF3
SW5Db250ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gZnJvbnRJbWFnZTsKKyAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBmcm9udENv
bnRleHQ7CisKKyAgICBpZiAobV9hY2NlbGVyYXRlc0RyYXdpbmcpIHsKKyAgICAgICAgZnJvbnRD
b250ZXh0ID0gY3JlYXRlSU9TdXJmYWNlQ29udGV4dChtX2Zyb250U3VyZmFjZS5nZXQoKSwgZXhw
YW5kZWRJbnRTaXplKG1fc2l6ZSAqIG1fc2NhbGUpLCBzUkdCQ29sb3JTcGFjZVJlZigpKTsKKyAg
ICAgICAgZnJvbnRJbWFnZSA9IGFkb3B0Q0YoQ0dJT1N1cmZhY2VDb250ZXh0Q3JlYXRlSW1hZ2Uo
ZnJvbnRDb250ZXh0LmdldCgpKSk7CisgICAgfSBlbHNlCisgICAgICAgIGZyb250SW1hZ2UgPSBp
bWFnZSgpOwogCiAgICAgVmVjdG9yPEludFJlY3Q+IGRpcnR5UmVjdHMgPSBtX2RpcnR5UmVnaW9u
LnJlY3RzKCk7CiAKICAgICAvLyBJZiB3ZSBoYXZlIGxlc3MgdGhhbiB3ZWJMYXllck1heFJlY3Rz
VG9QYWludCByZWN0cyB0byBwYWludCBhbmQgdGhleSBjb3ZlciBsZXNzCiAgICAgLy8gdGhhbiB3
ZWJMYXllcldhc3RlZFNwYWNlVGhyZXNob2xkIG9mIHRoZSBhcmVhLCB3ZSdsbCBkbyBhIHBhcnRp
YWwgcmVwYWludC4KKwogICAgIFZlY3RvcjxGbG9hdFJlY3QsIHdlYkxheWVyTWF4UmVjdHNUb1Bh
aW50PiByZWN0c1RvUGFpbnQ7Ci0gICAgaWYgKGRpcnR5UmVjdHMuc2l6ZSgpIDw9IHdlYkxheWVy
TWF4UmVjdHNUb1BhaW50ICYmIG1fZGlydHlSZWdpb24udG90YWxBcmVhKCkgPD0gd2ViTGF5ZXJX
YXN0ZWRTcGFjZVRocmVzaG9sZCAqIGxheWVyQm91bmRzLndpZHRoKCkgKiBsYXllckJvdW5kcy5o
ZWlnaHQoKSkgeworICAgIGlmIChkaXJ0eVJlY3RzLnNpemUoKSA8PSB3ZWJMYXllck1heFJlY3Rz
VG9QYWludCAmJiBtX2RpcnR5UmVnaW9uLnRvdGFsQXJlYSgpIDw9IHdlYkxheWVyV2FzdGVkU3Bh
Y2VUaHJlc2hvbGQgKiBtX3NpemUud2lkdGgoKSAqIG1fc2l6ZS5oZWlnaHQoKSkgewogICAgICAg
ICAvLyBDb3B5IG92ZXIgdGhlIHBhcnRzIG9mIHRoZSBmcm9udCBidWZmZXIgdGhhdCB3ZSdyZSBu
b3QgZ29pbmcgdG8gcmVwYWludC4KLSAgICAgICAgaWYgKG1fZnJvbnRCdWZmZXIpIHsKLSAgICAg
ICAgICAgIFJlZ2lvbiBjbGVhblJlZ2lvbihsYXllckJvdW5kcyk7CisgICAgICAgIGlmIChmcm9u
dEltYWdlKSB7CisgICAgICAgICAgICBSZWdpb24gY2xlYW5SZWdpb24oSW50UmVjdChJbnRQb2lu
dCgpLCBtX3NpemUpKTsKICAgICAgICAgICAgIGNsZWFuUmVnaW9uLnN1YnRyYWN0KG1fZGlydHlS
ZWdpb24pOwogCi0gICAgICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZnJvbnRJbWFnZSA9
IG1fZnJvbnRCdWZmZXItPm1ha2VDR0ltYWdlKCk7Ci0KICAgICAgICAgICAgIGZvciAoY29uc3Qg
YXV0byYgcmVjdCA6IGNsZWFuUmVnaW9uLnJlY3RzKCkpIHsKICAgICAgICAgICAgICAgICBGbG9h
dFJlY3Qgc2NhbGVkUmVjdCA9IHJlY3Q7CiAgICAgICAgICAgICAgICAgc2NhbGVkUmVjdC5zY2Fs
ZShtX3NjYWxlKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5kcmF3TmF0aXZlSW1hZ2UoZnJv
bnRJbWFnZS5nZXQoKSwgbV9mcm9udEJ1ZmZlci0+c2l6ZSgpLCBDb2xvclNwYWNlRGV2aWNlUkdC
LCBzY2FsZWRSZWN0LCBzY2FsZWRSZWN0KTsKKyAgICAgICAgICAgICAgICBGbG9hdFNpemUgaW1h
Z2VTaXplKENHSW1hZ2VHZXRXaWR0aChmcm9udEltYWdlLmdldCgpKSwgQ0dJbWFnZUdldEhlaWdo
dChmcm9udEltYWdlLmdldCgpKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kcmF3TmF0aXZl
SW1hZ2UoZnJvbnRJbWFnZS5nZXQoKSwgaW1hZ2VTaXplLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBz
Y2FsZWRSZWN0LCBzY2FsZWRSZWN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0x
NDgsMTggKzI3NSwxOCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkK
ICAgICAgICAgICAgIHJlY3RzVG9QYWludC5hcHBlbmQocmVjdCk7CiAgICAgfQogCi0gICAgY29u
dGV4dC0+c2NhbGUoRmxvYXRTaXplKG1fc2NhbGUsIG1fc2NhbGUpKTsKKyAgICBjb250ZXh0LnNj
YWxlKEZsb2F0U2l6ZShtX3NjYWxlLCBtX3NjYWxlKSk7CiAKLSAgICBzd2l0Y2ggKGxheWVyKCkt
PmxheWVyVHlwZSgpKSB7CisgICAgc3dpdGNoIChtX2xheWVyLT5sYXllclR5cGUoKSkgewogICAg
ICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2ltcGxlTGF5ZXI6CiAgICAgICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdUaWxlTGF5ZXI6CiAg
ICAgICAgICAgICBpZiAocmVjdHNUb1BhaW50LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBy
ZWN0c1RvUGFpbnQuYXBwZW5kKGxheWVyQm91bmRzKTsKKyAgICAgICAgICAgICAgICByZWN0c1Rv
UGFpbnQuYXBwZW5kKEludFJlY3QoSW50UG9pbnQoKSwgbV9zaXplKSk7CiAgICAgICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIHJlY3QgOiByZWN0c1RvUGFpbnQpCi0gICAgICAgICAgICAgICAgbV9s
YXllci0+b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCAqY29u
dGV4dCwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CisgICAgICAgICAgICAgICAgbV9sYXllci0+
b3duZXIoKS0+cGxhdGZvcm1DQUxheWVyUGFpbnRDb250ZW50cyhtX2xheWVyLCBjb250ZXh0LCBl
bmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5ZXI6Ci0gICAgICAgICAgICBkcmF3TGF5
ZXJDb250ZW50cyhjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgbV9sYXllciwgcmVjdHNUb1Bh
aW50KTsKKyAgICAgICAgICAgIGRyYXdMYXllckNvbnRlbnRzKGNvbnRleHQucGxhdGZvcm1Db250
ZXh0KCksIG1fbGF5ZXIsIHJlY3RzVG9QYWludCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgogICAgICAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CkBAIC0xNjksMTYgKzI5Niwx
OCBAQCBib29sIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlOjpkaXNwbGF5KCkKICAgICAgICAgY2Fz
ZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoKICAgICAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CiAgICAgICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH07CiAKICAgICBtX2RpcnR5UmVnaW9uID0g
UmVnaW9uKCk7CiAKLSAgICBtX2Zyb250QnVmZmVyID0gbV9iYWNrQnVmZmVyOwotICAgIG1fYmFj
a0J1ZmZlciA9IG51bGxwdHI7CisgICAgQ0dDb250ZXh0Rmx1c2goY29udGV4dC5wbGF0Zm9ybUNv
bnRleHQoKSk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiBvdXIgZnJvbnRJbWFnZSBp
cyBkZXJpdmVkIGZyb20gYW4gSU9TdXJmYWNlLCB3ZSBuZWVkIHRvCisgICAgLy8gZGVzdHJveSB0
aGUgaW1hZ2UgYmVmb3JlIHRoZSBDR0NvbnRleHQgaXQncyBkZXJpdmVkIGZyb20sCisgICAgLy8g
c28gdGhhdCB0aGUgY29udGV4dCBkb2Vzbid0IG1ha2UgYSBDUFUgY29weSBvZiB0aGUgc3VyZmFj
ZSBkYXRhLgorICAgIGZyb250SW1hZ2UgPSBudWxscHRyOworICAgIGZyb250Q29udGV4dCA9IG51
bGxwdHI7CiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCg==
</data>
<flag name="review"
          id="238502"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215749</attachid>
            <date>2013-11-01 12:39:56 -0700</date>
            <delta_ts>2013-11-01 12:41:06 -0700</delta_ts>
            <desc>address darin&apos;s review comments</desc>
            <filename>darinreview.diff</filename>
            <type>text/plain</type>
            <size>4201</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1ODMxMjg3Li40N2JlZWRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEzLTExLTAxICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgor
CisgICAgICAgIFJlbW90ZSBMYXllciBUcmVlOiBWZW5kIGxheWVyIGNvbnRlbnRzIHZpYSBJT1N1
cmZhY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjM2MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OnN1cmZhY2UpOgorICAgICAgICBO
byBuZWVkIGZvciAuZ2V0KCkgaGVyZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW06CisgICAgICAgIChSZW1vdGVMYXllckJhY2tp
bmdTdG9yZTo6ZW5zdXJlQmFja2luZ1N0b3JlKToKKyAgICAgICAgQWxsIG9uIG9uZSBsaW5lIGZv
ciByZWFkYWJpbGl0eS4KKworICAgICAgICAoY3JlYXRlSU9TdXJmYWNlQ29udGV4dCk6CisgICAg
ICAgIFRoaXMgJ2lmJyBpcyBtZWFuaW5nbGVzcy4KKworICAgICAgICAoY3JlYXRlSU9TdXJmYWNl
KToKKyAgICAgICAgTm8gbmVlZCBmb3IgYSBSZXRhaW5QdHIgaGVyZSwgdGhlIGRpY3Rpb25hcnkg
aXMgYXV0b3JlbGVhc2VkLgorCisgICAgICAgIChSZW1vdGVMYXllckJhY2tpbmdTdG9yZTo6ZGlz
cGxheSk6CisgICAgICAgIFNudWdnbGUgJ2NvbnRleHQnIHVwIG5leHQgdG8gdGhlIG90aGVyIGRl
Y2xhcmF0aW9ucy4KKwogMjAxMy0xMC0zMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdGUgTGF5ZXIgVHJlZTogVmVuZCBsYXllciBjb250ZW50
cyB2aWEgSU9TdXJmYWNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oCmluZGV4IDY4ODBj
NjUuLjViZTIwMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIGJvb2wgZGlzcGxheSgpOwogCiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IGltYWdlKCkgY29uc3Q7Ci0gICAgUmV0YWluUHRyPElPU3VyZmFjZVJlZj4gc3VyZmFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRTdXJmYWNlLmdldCgpOyB9CisgICAgUmV0YWluUHRy
PElPU3VyZmFjZVJlZj4gc3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJvbnRTdXJmYWNlOyB9
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAg
ICAgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9CiAgICAgYm9vbCBhY2Nl
bGVyYXRlc0RyYXdpbmcoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVzRHJhd2luZzsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllckJhY2tpbmdTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUubW0KaW5kZXggNmZlNWI3NS4uYjcwYWIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
ckJhY2tpbmdTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1JlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tCkBAIC01NywxMCArNTcsNyBAQCBSZW1vdGVM
YXllckJhY2tpbmdTdG9yZTo6UmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUoKQogCiB2b2lkIFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlOjplbnN1cmVCYWNraW5nU3RvcmUoUGxhdGZvcm1DQUxheWVyUmVt
b3RlKiBsYXllciwgSW50U2l6ZSBzaXplLCBmbG9hdCBzY2FsZSwgYm9vbCBhY2NlbGVyYXRlc0Ry
YXdpbmcpCiB7Ci0gICAgaWYgKG1fbGF5ZXIgPT0gbGF5ZXIKLSAgICAgICAgJiYgbV9zaXplID09
IHNpemUKLSAgICAgICAgJiYgbV9zY2FsZSA9PSBzY2FsZQotICAgICAgICAmJiBtX2FjY2VsZXJh
dGVzRHJhd2luZyA9PSBhY2NlbGVyYXRlc0RyYXdpbmcpCisgICAgaWYgKG1fbGF5ZXIgPT0gbGF5
ZXIgJiYgbV9zaXplID09IHNpemUgJiYgbV9zY2FsZSA9PSBzY2FsZSAmJiBtX2FjY2VsZXJhdGVz
RHJhd2luZyA9PSBhY2NlbGVyYXRlc0RyYXdpbmcpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
bGF5ZXIgPSBsYXllcjsKQEAgLTE0Myw5ICsxNDAsNiBAQCBzdGF0aWMgUmV0YWluUHRyPENHQ29u
dGV4dFJlZj4gY3JlYXRlSU9TdXJmYWNlQ29udGV4dChJT1N1cmZhY2VSZWYgc3VyZmFjZSwgSW50
UwogICAgIHNpemVfdCBiaXRzUGVyQ29tcG9uZW50ID0gODsKICAgICBzaXplX3QgYml0c1BlclBp
eGVsID0gMzI7CiAgICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gY3R4ID0gYWRvcHRDRihDR0lP
U3VyZmFjZUNvbnRleHRDcmVhdGUoc3VyZmFjZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
LCBiaXRzUGVyQ29tcG9uZW50LCBiaXRzUGVyUGl4ZWwsIGNvbG9yU3BhY2UsIGJpdG1hcEluZm8p
KTsKLSAgICBpZiAoIWN0eCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KICAgICByZXR1cm4g
Y3R4OwogfQogCkBAIC0xNjIsNyArMTU2LDcgQEAgc3RhdGljIFJldGFpblB0cjxJT1N1cmZhY2VS
ZWY+IGNyZWF0ZUlPU3VyZmFjZShJbnRTaXplIHNpemUpCiAgICAgdW5zaWduZWQgbG9uZyBhbGxv
Y1NpemUgPSBJT1N1cmZhY2VBbGlnblByb3BlcnR5KGtJT1N1cmZhY2VBbGxvY1NpemUsIGhlaWdo
dCAqIGJ5dGVzUGVyUm93KTsKICAgICBBU1NFUlQoYWxsb2NTaXplKTsKIAotICAgIFJldGFpblB0
cjxOU0RpY3Rpb25hcnk+IGRpY3QgPSBAeworICAgIE5TRGljdGlvbmFyeSAqZGljdCA9IEB7CiAg
ICAgICAgIChpZClrSU9TdXJmYWNlV2lkdGg6IEAod2lkdGgpLAogICAgICAgICAoaWQpa0lPU3Vy
ZmFjZUhlaWdodDogQChoZWlnaHQpLAogICAgICAgICAoaWQpa0lPU3VyZmFjZVBpeGVsRm9ybWF0
OiBAKHBpeGVsRm9ybWF0KSwKQEAgLTE3MSw3ICsxNjUsNyBAQCBzdGF0aWMgUmV0YWluUHRyPElP
U3VyZmFjZVJlZj4gY3JlYXRlSU9TdXJmYWNlKEludFNpemUgc2l6ZSkKICAgICAgICAgKGlkKWtJ
T1N1cmZhY2VBbGxvY1NpemU6IEAoYWxsb2NTaXplKQogICAgIH07CiAKLSAgICByZXR1cm4gYWRv
cHRDRihJT1N1cmZhY2VDcmVhdGUoKENGRGljdGlvbmFyeVJlZilkaWN0LmdldCgpKSk7CisgICAg
cmV0dXJuIGFkb3B0Q0YoSU9TdXJmYWNlQ3JlYXRlKChDRkRpY3Rpb25hcnlSZWYpZGljdCkpOwog
fQogCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmU6OmltYWdl
KCkgY29uc3QKQEAgLTIxMCwxMiArMjA0LDExIEBAIGJvb2wgUmVtb3RlTGF5ZXJCYWNraW5nU3Rv
cmU6OmRpc3BsYXkoKQogICAgICAgICBtX2RpcnR5UmVnaW9uLnVuaXRlKGluZGljYXRvclJlY3Qp
OwogICAgIH0KIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQ+IGNvbnRleHQ7
Ci0KICAgICBGbG9hdFNpemUgc2NhbGVkU2l6ZSA9IG1fc2l6ZTsKICAgICBzY2FsZWRTaXplLnNj
YWxlKG1fc2NhbGUpOwogICAgIEludFNpemUgZXhwYW5kZWRTY2FsZWRTaXplID0gZXhwYW5kZWRJ
bnRTaXplKHNjYWxlZFNpemUpOwogCisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4
dD4gY29udGV4dDsKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiYWNrQnVmZmVyOwogICAg
IFJldGFpblB0cjxJT1N1cmZhY2VSZWY+IGJhY2tTdXJmYWNlOwogCg==
</data>
<flag name="review"
          id="238559"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>