<?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>161092</bug_id>
          
          <creation_ts>2016-08-23 10:38:43 -0700</creation_ts>
          <short_desc>[MediaStream] Templatize MediaConstraint</short_desc>
          <delta_ts>2016-08-23 12:04:37 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222274</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-23 10:38:43 -0700</bug_when>
    <thetext>Templatize MediaConstraint</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222275</commentid>
    <comment_count>1</comment_count>
      <attachid>286731</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-23 10:42:49 -0700</bug_when>
    <thetext>Created attachment 286731
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222280</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 10:50:33 -0700</bug_when>
    <thetext>Attachment 286731 did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/MediaConstraints.h:96:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mediastream/MediaConstraints.h:105:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mediastream/MediaConstraints.h:114:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/mediastream/MediaConstraints.h:123:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 3 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>1222305</commentid>
    <comment_count>3</comment_count>
      <attachid>286744</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2016-08-23 11:13:16 -0700</bug_when>
    <thetext>Created attachment 286744
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222344</commentid>
    <comment_count>4</comment_count>
      <attachid>286744</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 12:04:31 -0700</bug_when>
    <thetext>Comment on attachment 286744
Patch for landing.

Clearing flags on attachment: 286744

Committed r204847: &lt;http://trac.webkit.org/changeset/204847&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222345</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 12:04:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286731</attachid>
            <date>2016-08-23 10:42:49 -0700</date>
            <delta_ts>2016-08-23 11:13:16 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>refactor_constraints_patch_3.txt</filename>
            <type>text/plain</type>
            <size>15977</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDgyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE2LTA4LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
VGVtcGxhdGl6ZSBNZWRpYUNvbnN0cmFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJvb2xlYW5Db25zdHJhaW50OjpnZXRFeGFjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRlYWwpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb25zdHJhaW50OjpnZXRNaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFDb25zdHJhaW50OjpnZXRNYXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b25zdHJhaW50OjpnZXRFeGFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnN0cmFpbnQ6OmdldElkZWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0
cmFpbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50
OjpzZXRNaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3RyYWludDo6c2V0
TWF4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OnNldEV4YWN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OnNldElkZWFsKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OmdldE1pbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpnZXRNYXgpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3RyYWludDo6Z2V0RXhhY3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW50Q29uc3RyYWludDo6Z2V0SWRlYWwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6RG91YmxlQ29uc3RyYWludDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OnNldE1pbik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNYXgpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RG91YmxlQ29uc3RyYWludDo6Z2V0TWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1heCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpnZXRFeGFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkJvb2xlYW5Db25zdHJhaW50OjpzZXRFeGFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpCb29sZWFuQ29uc3RyYWludDo6c2V0SWRlYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6U3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YUNvbnN0cmFpbnQ6OmdldE1pbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6
OmdldE1heCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwpOgorICAgICAgICAo
V2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldE1pbik6CisgICAgICAgIChXZWJDb3JlOjpO
dW1lcmljQ29uc3RyYWludDo6c2V0TWF4KToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25z
dHJhaW50OjpzZXRFeGFjdCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6
c2V0SWRlYWwpOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc01p
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFz
TWF4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRI
YXNFeGFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6
c2V0SGFzSWRlYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFp
bnQ6Omhhc01pbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWlu
dDo6aGFzTWF4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50
OjpoYXNFeGFjdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWlu
dDo6aGFzSWRlYWwpOiBEZWxldGVkLgorCiAyMDE2LTA4LTIzICBGcmVkZXJpYyBXYW5nICA8Zndh
bmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW5hbWUgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxl
bWVudCB0byBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmNwcAko
cmV2aXNpb24gMjA0ODI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFDb25zdHJhaW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDI3MiArNjIsMjQgQEAg
UmVmUHRyPE1lZGlhQ29uc3RyYWludD4gTWVkaWFDb25zdHJhaW50OgogICAgIH0KIH0KIAotYm9v
bCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1pbihpbnQmKSBjb25zdAotewotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnQ6
OmdldE1heChpbnQmKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KGludCYpIGNv
bnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci1ib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0SWRlYWwoaW50JikgY29uc3QKLXsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25z
dHJhaW50OjpnZXRNaW4oZG91YmxlJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgo
ZG91YmxlJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChkb3VibGUmKSBjb25z
dAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ym9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGRvdWJsZSYpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlhQ29u
c3RyYWludDo6Z2V0TWluKGJvb2wmKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1heChi
b29sJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChib29sJikgY29uc3QKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChib29sJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50
OjpnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldE1h
eChWZWN0b3I8U3RyaW5nPiYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoVmVj
dG9yPFN0cmluZz4mKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKFZlY3RvcjxT
dHJpbmc+JikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLVJlZjxJbnRDb25zdHJhaW50PiBJbnRDb25zdHJhaW50OjpjcmVhdGUoTWVk
aWFDb25zdHJhaW50VHlwZSB0eXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEludENv
bnN0cmFpbnQodHlwZSkpOwotfQotCi12b2lkIEludENvbnN0cmFpbnQ6OnNldE1pbihpbnQgdmFs
dWUpCi17Ci0gICAgbV9taW4gPSB2YWx1ZTsKLSAgICBzZXRIYXNNaW4odHJ1ZSk7Ci19Ci0KLXZv
aWQgSW50Q29uc3RyYWludDo6c2V0TWF4KGludCB2YWx1ZSkKLXsKLSAgICBtX21heCA9IHZhbHVl
OwotICAgIHNldEhhc01heCh0cnVlKTsKLX0KLQotdm9pZCBJbnRDb25zdHJhaW50OjpzZXRFeGFj
dChpbnQgdmFsdWUpCi17Ci0gICAgbV9leGFjdCA9IHZhbHVlOwotICAgIHNldEhhc0V4YWN0KHRy
dWUpOwotfQotCi12b2lkIEludENvbnN0cmFpbnQ6OnNldElkZWFsKGludCB2YWx1ZSkKLXsKLSAg
ICBtX2lkZWFsID0gdmFsdWU7Ci0gICAgc2V0SGFzSWRlYWwodHJ1ZSk7Ci19Ci0KLWJvb2wgSW50
Q29uc3RyYWludDo6Z2V0TWluKGludCYgbWluKSBjb25zdAotewotICAgIGlmICghaGFzTWluKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1pbiA9IG1fbWluOwotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIEludENvbnN0cmFpbnQ6OmdldE1heChpbnQmIG1heCkgY29uc3QKLXsK
LSAgICBpZiAoIWhhc01heCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtYXggPSBt
X21heDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBJbnRDb25zdHJhaW50OjpnZXRFeGFj
dChpbnQmIGV4YWN0KSBjb25zdAotewotICAgIGlmICghaGFzRXhhY3QoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgZXhhY3QgPSBtX2V4YWN0OwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIEludENvbnN0cmFpbnQ6OmdldElkZWFsKGludCYgaWRlYWwpIGNvbnN0Ci17Ci0gICAg
aWYgKCFoYXNJZGVhbCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZGVhbCA9IG1f
aWRlYWw7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVJlZjxEb3VibGVDb25zdHJhaW50PiBEb3Vi
bGVDb25zdHJhaW50OjpjcmVhdGUoTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlKQotewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IERvdWJsZUNvbnN0cmFpbnQodHlwZSkpOwotfQotCi12b2lkIERv
dWJsZUNvbnN0cmFpbnQ6OnNldE1pbihkb3VibGUgdmFsdWUpCi17Ci0gICAgbV9taW4gPSB2YWx1
ZTsKLSAgICBzZXRIYXNNaW4odHJ1ZSk7Ci19Ci0KLXZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0
TWF4KGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBtX21heCA9IHZhbHVlOwotICAgIHNldEhhc01heCh0
cnVlKTsKLX0KLQotdm9pZCBEb3VibGVDb25zdHJhaW50OjpzZXRFeGFjdChkb3VibGUgdmFsdWUp
Ci17Ci0gICAgbV9leGFjdCA9IHZhbHVlOwotICAgIHNldEhhc0V4YWN0KHRydWUpOwotfQotCi12
b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKGRvdWJsZSB2YWx1ZSkKLXsKLSAgICBtX2lk
ZWFsID0gdmFsdWU7Ci0gICAgc2V0SGFzSWRlYWwodHJ1ZSk7Ci19Ci0KLWJvb2wgRG91YmxlQ29u
c3RyYWludDo6Z2V0TWluKGRvdWJsZSYgbWluKSBjb25zdAotewotICAgIGlmICghaGFzTWluKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBtaW4gPSBtX21pbjsKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRNYXgoZG91YmxlJiBtYXgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNNYXgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IAotICAgIG1heCA9IG1fbWF4OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERvdWJsZUNv
bnN0cmFpbnQ6OmdldEV4YWN0KGRvdWJsZSYgZXhhY3QpIGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNF
eGFjdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgZXhhY3QgPSBtX2V4YWN0
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIERvdWJsZUNvbnN0cmFpbnQ6OmdldElkZWFs
KGRvdWJsZSYgaWRlYWwpIGNvbnN0Ci17Ci0gICAgaWYgKCFoYXNJZGVhbCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWRlYWwgPSBtX2lkZWFsOwotICAgIHJldHVybiB0cnVl
OwotfQotCi1SZWY8Qm9vbGVhbkNvbnN0cmFpbnQ+IEJvb2xlYW5Db25zdHJhaW50OjpjcmVhdGUo
TWVkaWFDb25zdHJhaW50VHlwZSB0eXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJv
b2xlYW5Db25zdHJhaW50KHR5cGUpKTsKLX0KLQotdm9pZCBCb29sZWFuQ29uc3RyYWludDo6c2V0
RXhhY3QoYm9vbCB2YWx1ZSkKLXsKLSAgICBtX2V4YWN0ID0gdmFsdWU7Ci0gICAgbV9oYXNFeGFj
dCA9IHRydWU7Ci19Ci0KLXZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldElkZWFsKGJvb2wgdmFs
dWUpCi17Ci0gICAgbV9pZGVhbCA9IHZhbHVlOwotICAgIG1faGFzSWRlYWwgPSB0cnVlOwotfQot
CiBib29sIEJvb2xlYW5Db25zdHJhaW50OjpnZXRFeGFjdChib29sJiBleGFjdCkgY29uc3QKIHsK
LSAgICBpZiAoIW1faGFzRXhhY3QpCisgICAgaWYgKCFtX2V4YWN0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgZXhhY3QgPSBtX2V4YWN0OworICAgIGV4YWN0ID0gbV9leGFjdC52
YWx1ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEJvb2xlYW5Db25zdHJhaW50Ojpn
ZXRJZGVhbChib29sJiBpZGVhbCkgY29uc3QKIHsKLSAgICBpZiAoIW1faGFzSWRlYWwpCisgICAg
aWYgKCFtX2lkZWFsKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaWRlYWwgPSBt
X2lkZWFsOworICAgIGlkZWFsID0gbV9pZGVhbC52YWx1ZSgpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1SZWY8U3RyaW5nQ29uc3RyYWludD4gU3RyaW5nQ29uc3RyYWludDo6Y3JlYXRlKE1lZGlh
Q29uc3RyYWludFR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdD
b25zdHJhaW50KHR5cGUpKTsKLX0KLQogdm9pZCBTdHJpbmdDb25zdHJhaW50OjpzZXRFeGFjdChj
b25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIG1fZXhhY3QuY2xlYXIoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFp
bnRzLmgJKHJldmlzaW9uIDIwNDgyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhQ29uc3RyYWludHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMjkgKzQ5LDI4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCA9IDA7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0TWluKGludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoaW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGdldEV4YWN0KGludCYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBnZXRJZGVhbChpbnQmKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oZG91Ymxl
JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdldE1heChkb3VibGUmKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdl
dElkZWFsKGRvdWJsZSYpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGdldE1pbihib29sJikg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdldE1heChib29sJikgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGdldEV4YWN0KGJvb2wmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwo
Ym9vbCYpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIGdldE1pbihWZWN0b3I8U3RyaW5nPiYp
IGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4mKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0TWluKGludCYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoaW50JikgY29uc3QgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGlu
dCYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBnZXRJZGVhbChpbnQmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oZG91YmxlJikgY29uc3Qg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29s
IGdldE1heChkb3VibGUmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RXhhY3QoZG91YmxlJikgY29uc3QgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldElkZWFs
KGRvdWJsZSYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQor
CisgICAgdmlydHVhbCBib29sIGdldE1pbihib29sJikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldE1heChib29sJikgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBi
b29sIGdldEV4YWN0KGJvb2wmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoYm9vbCYpIGNvbnN0IHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBib29sIGdldE1p
bihWZWN0b3I8U3RyaW5nPiYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoVmVjdG9yPFN0cmluZz4mKSBjb25zdCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0RXhhY3QoVmVjdG9yPFN0cmluZz4mKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SWRlYWwoVmVjdG9yPFN0cmluZz4m
KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAogICAgIE1l
ZGlhQ29uc3RyYWludFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCi0KIHBy
b3RlY3RlZDoKICAgICBleHBsaWNpdCBNZWRpYUNvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlw
ZSB0eXBlKQogICAgICAgICA6IG1fdHlwZSh0eXBlKQpAQCAtODIsMTAgKzgxLDUyIEBAIHByaXZh
dGU6CiAgICAgTWVkaWFDb25zdHJhaW50VHlwZSBtX3R5cGU7CiB9OwogCit0ZW1wbGF0ZTxjbGFz
cyBWYWx1ZVR5cGU+CiBjbGFzcyBOdW1lcmljQ29uc3RyYWludCA6IHB1YmxpYyBNZWRpYUNvbnN0
cmFpbnQgewogcHVibGljOgotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICFtX2hhc01pbiAmJiAhbV9oYXNNYXggJiYgIW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7
IH0KLSAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9oYXNN
aW4gfHwgbV9oYXNNYXggfHwgbV9oYXNFeGFjdDsgfQorICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICFtX21pbiAmJiAhbV9tYXggJiYgIW1fZXhhY3QgJiYgIW1faWRl
YWw7IH0KKyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9t
aW4gfHwgbV9tYXggfHwgbV9leGFjdDsgfQorCisgICAgdm9pZCBzZXRNaW4oVmFsdWVUeXBlIHZh
bHVlKSB7IG1fbWluID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldE1heChWYWx1ZVR5cGUgdmFsdWUp
IHsgbV9tYXggPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0RXhhY3QoVmFsdWVUeXBlIHZhbHVlKSB7
IG1fZXhhY3QgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SWRlYWwoVmFsdWVUeXBlIHZhbHVlKSB7
IG1faWRlYWwgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBnZXRNaW4oVmFsdWVUeXBlJiBtaW4pIGNv
bnN0IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fbWluKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIG1pbiA9IG1fbWluLnZhbHVlKCk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGJvb2wgZ2V0TWF4KFZhbHVlVHlwZSYgbWF4KSBjb25zdCBmaW5h
bAorICAgIHsKKyAgICAgICAgaWYgKCFtX21heCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBtYXggPSBtX21heC52YWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICBib29sIGdldEV4YWN0KFZhbHVlVHlwZSYgZXhhY3QpIGNvbnN0IGZpbmFsCisg
ICAgeworICAgICAgICBpZiAoIW1fZXhhY3QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgZXhhY3QgPSBtX2V4YWN0LnZhbHVlKCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGJvb2wgZ2V0SWRlYWwoVmFsdWVUeXBlJiBpZGVhbCkgY29uc3QgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9pZGVhbCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICBpZGVhbCA9IG1faWRlYWwudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgTnVtZXJpY0NvbnN0cmFpbnQoTWVk
aWFDb25zdHJhaW50VHlwZSB0eXBlKQpAQCAtOTMsODcgKzEzNCw0NyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgewogICAgIH0KIAotICAgIHZvaWQgc2V0SGFzTWluKGJvb2wgdmFsdWUpIHsgbV9oYXNNaW4g
PSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0SGFzTWF4KGJvb2wgdmFsdWUpIHsgbV9oYXNNYXggPSB2
YWx1ZTsgfQotICAgIHZvaWQgc2V0SGFzRXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2hhc0V4YWN0ID0g
dmFsdWU7IH0KLSAgICB2b2lkIHNldEhhc0lkZWFsKGJvb2wgdmFsdWUpIHsgbV9oYXNJZGVhbCA9
IHZhbHVlOyB9Ci0KLSAgICBib29sIGhhc01pbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWluOyB9
Ci0gICAgYm9vbCBoYXNNYXgoKSBjb25zdCB7IHJldHVybiBtX2hhc01heDsgfQotICAgIGJvb2wg
aGFzRXhhY3QoKSBjb25zdCB7IHJldHVybiBtX2hhc0V4YWN0OyB9Ci0gICAgYm9vbCBoYXNJZGVh
bCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSWRlYWw7IH0KLQogcHJpdmF0ZToKLSAgICBib29sIG1f
aGFzTWluIHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzTWF4IHsgZmFsc2UgfTsKLSAgICBib29s
IG1faGFzRXhhY3QgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNJZGVhbCB7IGZhbHNlIH07Cisg
ICAgT3B0aW9uYWw8VmFsdWVUeXBlPiBtX21pbjsKKyAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1f
bWF4OworICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9leGFjdDsKKyAgICBPcHRpb25hbDxWYWx1
ZVR5cGU+IG1faWRlYWw7CiB9OwogCi1jbGFzcyBJbnRDb25zdHJhaW50IGZpbmFsIDogcHVibGlj
IE51bWVyaWNDb25zdHJhaW50IHsKK2NsYXNzIEludENvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMg
TnVtZXJpY0NvbnN0cmFpbnQ8aW50PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnRDb25z
dHJhaW50PiBjcmVhdGUoTWVkaWFDb25zdHJhaW50VHlwZSk7Ci0KLSAgICB2b2lkIHNldE1pbihp
bnQgdmFsdWUpOwotICAgIHZvaWQgc2V0TWF4KGludCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRFeGFj
dChpbnQgdmFsdWUpOwotICAgIHZvaWQgc2V0SWRlYWwoaW50IHZhbHVlKTsKLQotICAgIGJvb2wg
Z2V0TWluKGludCYpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0IGZp
bmFsOwotICAgIGJvb2wgZ2V0RXhhY3QoaW50JikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBnZXRJ
ZGVhbChpbnQmKSBjb25zdCBmaW5hbDsKKyAgICBzdGF0aWMgUmVmPEludENvbnN0cmFpbnQ+IGNy
ZWF0ZShNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW50
Q29uc3RyYWludCh0eXBlKSk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBJbnRDb25zdHJh
aW50KE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSkKLSAgICAgICAgOiBXZWJDb3JlOjpOdW1lcmlj
Q29uc3RyYWludCh0eXBlKQorICAgICAgICA6IE51bWVyaWNDb25zdHJhaW50PGludD4odHlwZSkK
ICAgICB7CiAgICAgfQotCi0gICAgaW50IG1fbWluOwotICAgIGludCBtX21heDsKLSAgICBpbnQg
bV9leGFjdDsKLSAgICBpbnQgbV9pZGVhbDsKIH07CiAKLWNsYXNzIERvdWJsZUNvbnN0cmFpbnQg
ZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworY2xhc3MgRG91YmxlQ29uc3RyYWlu
dCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludDxkb3VibGU+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPERvdWJsZUNvbnN0cmFpbnQ+IGNyZWF0ZShNZWRpYUNvbnN0cmFpbnRUeXBl
KTsKLQotICAgIHZvaWQgc2V0TWluKGRvdWJsZSB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRNYXgoZG91
YmxlIHZhbHVlKTsKLSAgICB2b2lkIHNldEV4YWN0KGRvdWJsZSB2YWx1ZSk7Ci0gICAgdm9pZCBz
ZXRJZGVhbChkb3VibGUgdmFsdWUpOwotCi0gICAgYm9vbCBnZXRNaW4oZG91YmxlJikgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBn
ZXRFeGFjdChkb3VibGUmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGdldElkZWFsKGRvdWJsZSYp
IGNvbnN0IGZpbmFsOworICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3RyYWludD4gY3JlYXRlKE1l
ZGlhQ29uc3RyYWludFR5cGUgdHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3VibGVDb25z
dHJhaW50KHR5cGUpKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IERvdWJsZUNvbnN0cmFp
bnQoTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlKQotICAgICAgICA6IFdlYkNvcmU6Ok51bWVyaWND
b25zdHJhaW50KHR5cGUpCisgICAgICAgIDogTnVtZXJpY0NvbnN0cmFpbnQ8ZG91YmxlPih0eXBl
KQogICAgIHsKICAgICB9Ci0KLSAgICBkb3VibGUgbV9taW47Ci0gICAgZG91YmxlIG1fbWF4Owot
ICAgIGRvdWJsZSBtX2V4YWN0OwotICAgIGRvdWJsZSBtX2lkZWFsOwogfTsKIAogY2xhc3MgQm9v
bGVhbkNvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPEJvb2xlYW5Db25zdHJhaW50PiBjcmVhdGUoTWVkaWFDb25zdHJhaW50
VHlwZSk7CisgICAgc3RhdGljIFJlZjxCb29sZWFuQ29uc3RyYWludD4gY3JlYXRlKE1lZGlhQ29u
c3RyYWludFR5cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQm9vbGVhbkNvbnN0cmFpbnQodHlw
ZSkpOyB9CiAKLSAgICB2b2lkIHNldEV4YWN0KGJvb2wgdmFsdWUpOwotICAgIHZvaWQgc2V0SWRl
YWwoYm9vbCB2YWx1ZSk7CisgICAgdm9pZCBzZXRFeGFjdChib29sIHZhbHVlKSB7IG1fZXhhY3Qg
PSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0SWRlYWwoYm9vbCB2YWx1ZSkgeyBtX2lkZWFsID0gdmFs
dWU7IH0KIAogICAgIGJvb2wgZ2V0RXhhY3QoYm9vbCYpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
Z2V0SWRlYWwoYm9vbCYpIGNvbnN0IGZpbmFsOwogCi0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIW1faGFzRXhhY3QgJiYgIW1faGFzSWRlYWw7IH07Ci0gICAgYm9vbCBp
c01hbmRhdG9yeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faGFzRXhhY3Q7IH0KKyAgICBib29s
IGlzRW1wdHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9leGFjdCAmJiAhbV9pZGVhbDsgfTsK
KyAgICBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgZmluYWwgeyByZXR1cm4gYm9vbChtX2V4YWN0
KTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJvb2xlYW5Db25zdHJhaW50KE1lZGlhQ29u
c3RyYWludFR5cGUgdHlwZSkKQEAgLTE4MSwxNSArMTgyLDEzIEBAIHByaXZhdGU6CiAgICAgewog
ICAgIH0KIAotICAgIGJvb2wgbV9leGFjdCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lkZWFsIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1faGFzRXhhY3QgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNJ
ZGVhbCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9leGFjdCB7IGZhbHNlIH07Cisg
ICAgT3B0aW9uYWw8Ym9vbD4gbV9pZGVhbCB7IGZhbHNlIH07CiB9OwogCiBjbGFzcyBTdHJpbmdD
b25zdHJhaW50IGZpbmFsIDogcHVibGljIE1lZGlhQ29uc3RyYWludCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoTWVkaWFDb25zdHJhaW50VHlwZSk7
CisgICAgc3RhdGljIFJlZjxTdHJpbmdDb25zdHJhaW50PiBjcmVhdGUoTWVkaWFDb25zdHJhaW50
VHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHJpbmdDb25zdHJhaW50KHR5cGUpKTsgfQog
CiAgICAgdm9pZCBzZXRFeGFjdChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZEV4YWN0
KGNvbnN0IFN0cmluZyYpOwo=
</data>
<flag name="review"
          id="310238"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
    <flag name="commit-queue"
          id="310239"
          type_id="3"
          status="+"
          setter="jer.noble"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286744</attachid>
            <date>2016-08-23 11:13:16 -0700</date>
            <delta_ts>2016-08-23 12:04:31 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>refactor_constraints_patch_4.txt</filename>
            <type>text/plain</type>
            <size>15962</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDgyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBACisyMDE2LTA4LTIzICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbV0g
VGVtcGxhdGl6ZSBNZWRpYUNvbnN0cmFpbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IEplciBOb2Js
ZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLgorCisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpCb29sZWFuQ29uc3RyYWludDo6Z2V0RXhhY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Qm9vbGVhbkNvbnN0cmFpbnQ6OmdldElkZWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29uc3RyYWludDo6Z2V0TWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
c3RyYWludDo6Z2V0TWF4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29uc3Ry
YWludDo6Z2V0RXhhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJh
aW50OjpnZXRJZGVhbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50
OjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3RyYWludDo6c2V0
TWluKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OnNldE1heCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpzZXRFeGFjdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpzZXRJZGVhbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRDb25zdHJhaW50OjpnZXRNaW4pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6SW50Q29uc3RyYWludDo6Z2V0TWF4KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OmdldEV4YWN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkludENvbnN0cmFpbnQ6OmdldElkZWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRvdWJsZUNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpEb3VibGVDb25zdHJhaW50OjpzZXRNaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RG91YmxlQ29uc3RyYWludDo6c2V0TWF4KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvdWJsZUNvbnN0cmFpbnQ6OnNldEV4YWN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvdWJsZUNvbnN0cmFpbnQ6OnNldElkZWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvdWJsZUNvbnN0cmFpbnQ6OmdldE1pbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpE
b3VibGVDb25zdHJhaW50OjpnZXRNYXgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG91
YmxlQ29uc3RyYWludDo6Z2V0RXhhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RG91
YmxlQ29uc3RyYWludDo6Z2V0SWRlYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm9v
bGVhbkNvbnN0cmFpbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCb29s
ZWFuQ29uc3RyYWludDo6c2V0RXhhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Qm9v
bGVhbkNvbnN0cmFpbnQ6OnNldElkZWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0
cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25z
dHJhaW50OjpnZXRNaW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRN
YXgpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKToKKyAgICAgICAgKFdlYkNv
cmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRNaW4pOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJp
Y0NvbnN0cmFpbnQ6OnNldE1heCk6CisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWlu
dDo6c2V0RXhhY3QpOgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldElk
ZWFsKToKKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50OjpzZXRIYXNNaW4pOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhhc01heCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6c2V0SGFzRXhh
Y3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6OnNldEhh
c0lkZWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50Ojpo
YXNNaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhh
c01heCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOdW1lcmljQ29uc3RyYWludDo6aGFz
RXhhY3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQ6Omhh
c0lkZWFsKTogRGVsZXRlZC4KKwogMjAxNi0wOC0yMyAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGln
YWxpYS5jb20+CiAKICAgICAgICAgUmVuYW1lIE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQg
dG8gTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5jcHAJKHJldmlz
aW9uIDIwNDgyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
Q29uc3RyYWludHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MiwyNzIgKzYyLDI0IEBAIFJlZlB0
cjxNZWRpYUNvbnN0cmFpbnQ+IE1lZGlhQ29uc3RyYWludDoKICAgICB9CiB9CiAKLWJvb2wgTWVk
aWFDb25zdHJhaW50OjpnZXRNaW4oaW50JikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRN
YXgoaW50JikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRFeGFjdChpbnQmKSBjb25zdAot
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBNZWRpYUNvbnN0cmFpbnQ6OmdldElkZWFsKGludCYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWlu
dDo6Z2V0TWluKGRvdWJsZSYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJs
ZSYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoZG91YmxlJikgY29uc3QKLXsK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wg
TWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChkb3VibGUmKSBjb25zdAotewotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFp
bnQ6OmdldE1pbihib29sJikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoYm9vbCYp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi1ib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYpIGNvbnN0Ci17Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlh
Q29uc3RyYWludDo6Z2V0SWRlYWwoYm9vbCYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIE1lZGlhQ29uc3RyYWludDo6Z2V0
TWluKFZlY3RvcjxTdHJpbmc+JikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRNYXgoVmVj
dG9yPFN0cmluZz4mKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBNZWRpYUNvbnN0cmFpbnQ6OmdldEV4YWN0KFZlY3RvcjxT
dHJpbmc+JikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWJvb2wgTWVkaWFDb25zdHJhaW50OjpnZXRJZGVhbChWZWN0b3I8U3RyaW5n
PiYpIGNvbnN0Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1SZWY8SW50Q29uc3RyYWludD4gSW50Q29uc3RyYWludDo6Y3JlYXRlKE1lZGlhQ29u
c3RyYWludFR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRDb25zdHJh
aW50KHR5cGUpKTsKLX0KLQotdm9pZCBJbnRDb25zdHJhaW50OjpzZXRNaW4oaW50IHZhbHVlKQot
ewotICAgIG1fbWluID0gdmFsdWU7Ci0gICAgc2V0SGFzTWluKHRydWUpOwotfQotCi12b2lkIElu
dENvbnN0cmFpbnQ6OnNldE1heChpbnQgdmFsdWUpCi17Ci0gICAgbV9tYXggPSB2YWx1ZTsKLSAg
ICBzZXRIYXNNYXgodHJ1ZSk7Ci19Ci0KLXZvaWQgSW50Q29uc3RyYWludDo6c2V0RXhhY3QoaW50
IHZhbHVlKQotewotICAgIG1fZXhhY3QgPSB2YWx1ZTsKLSAgICBzZXRIYXNFeGFjdCh0cnVlKTsK
LX0KLQotdm9pZCBJbnRDb25zdHJhaW50OjpzZXRJZGVhbChpbnQgdmFsdWUpCi17Ci0gICAgbV9p
ZGVhbCA9IHZhbHVlOwotICAgIHNldEhhc0lkZWFsKHRydWUpOwotfQotCi1ib29sIEludENvbnN0
cmFpbnQ6OmdldE1pbihpbnQmIG1pbikgY29uc3QKLXsKLSAgICBpZiAoIWhhc01pbigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtaW4gPSBtX21pbjsKLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotYm9vbCBJbnRDb25zdHJhaW50OjpnZXRNYXgoaW50JiBtYXgpIGNvbnN0Ci17Ci0gICAg
aWYgKCFoYXNNYXgoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgbWF4ID0gbV9tYXg7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgSW50Q29uc3RyYWludDo6Z2V0RXhhY3QoaW50
JiBleGFjdCkgY29uc3QKLXsKLSAgICBpZiAoIWhhc0V4YWN0KCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGV4YWN0ID0gbV9leGFjdDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBJbnRDb25zdHJhaW50OjpnZXRJZGVhbChpbnQmIGlkZWFsKSBjb25zdAotewotICAgIGlmICgh
aGFzSWRlYWwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWRlYWwgPSBtX2lkZWFs
OwotICAgIHJldHVybiB0cnVlOwotfQotCi1SZWY8RG91YmxlQ29uc3RyYWludD4gRG91YmxlQ29u
c3RyYWludDo6Y3JlYXRlKE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBEb3VibGVDb25zdHJhaW50KHR5cGUpKTsKLX0KLQotdm9pZCBEb3VibGVD
b25zdHJhaW50OjpzZXRNaW4oZG91YmxlIHZhbHVlKQotewotICAgIG1fbWluID0gdmFsdWU7Ci0g
ICAgc2V0SGFzTWluKHRydWUpOwotfQotCi12b2lkIERvdWJsZUNvbnN0cmFpbnQ6OnNldE1heChk
b3VibGUgdmFsdWUpCi17Ci0gICAgbV9tYXggPSB2YWx1ZTsKLSAgICBzZXRIYXNNYXgodHJ1ZSk7
Ci19Ci0KLXZvaWQgRG91YmxlQ29uc3RyYWludDo6c2V0RXhhY3QoZG91YmxlIHZhbHVlKQotewot
ICAgIG1fZXhhY3QgPSB2YWx1ZTsKLSAgICBzZXRIYXNFeGFjdCh0cnVlKTsKLX0KLQotdm9pZCBE
b3VibGVDb25zdHJhaW50OjpzZXRJZGVhbChkb3VibGUgdmFsdWUpCi17Ci0gICAgbV9pZGVhbCA9
IHZhbHVlOwotICAgIHNldEhhc0lkZWFsKHRydWUpOwotfQotCi1ib29sIERvdWJsZUNvbnN0cmFp
bnQ6OmdldE1pbihkb3VibGUmIG1pbikgY29uc3QKLXsKLSAgICBpZiAoIWhhc01pbigpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgbWluID0gbV9taW47Ci0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLWJvb2wgRG91YmxlQ29uc3RyYWludDo6Z2V0TWF4KGRvdWJsZSYgbWF4KSBjb25z
dAotewotICAgIGlmICghaGFzTWF4KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAg
ICBtYXggPSBtX21heDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBEb3VibGVDb25zdHJh
aW50OjpnZXRFeGFjdChkb3VibGUmIGV4YWN0KSBjb25zdAotewotICAgIGlmICghaGFzRXhhY3Qo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIGV4YWN0ID0gbV9leGFjdDsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBEb3VibGVDb25zdHJhaW50OjpnZXRJZGVhbChkb3Vi
bGUmIGlkZWFsKSBjb25zdAotewotICAgIGlmICghaGFzSWRlYWwoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIAotICAgIGlkZWFsID0gbV9pZGVhbDsKLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotUmVmPEJvb2xlYW5Db25zdHJhaW50PiBCb29sZWFuQ29uc3RyYWludDo6Y3JlYXRlKE1lZGlh
Q29uc3RyYWludFR5cGUgdHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCb29sZWFu
Q29uc3RyYWludCh0eXBlKSk7Ci19Ci0KLXZvaWQgQm9vbGVhbkNvbnN0cmFpbnQ6OnNldEV4YWN0
KGJvb2wgdmFsdWUpCi17Ci0gICAgbV9leGFjdCA9IHZhbHVlOwotICAgIG1faGFzRXhhY3QgPSB0
cnVlOwotfQotCi12b2lkIEJvb2xlYW5Db25zdHJhaW50OjpzZXRJZGVhbChib29sIHZhbHVlKQot
ewotICAgIG1faWRlYWwgPSB2YWx1ZTsKLSAgICBtX2hhc0lkZWFsID0gdHJ1ZTsKLX0KLQogYm9v
bCBCb29sZWFuQ29uc3RyYWludDo6Z2V0RXhhY3QoYm9vbCYgZXhhY3QpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX2hhc0V4YWN0KQorICAgIGlmICghbV9leGFjdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIGV4YWN0ID0gbV9leGFjdDsKKyAgICBleGFjdCA9IG1fZXhhY3QudmFsdWUo
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBCb29sZWFuQ29uc3RyYWludDo6Z2V0SWRl
YWwoYm9vbCYgaWRlYWwpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2hhc0lkZWFsKQorICAgIGlmICgh
bV9pZGVhbCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGlkZWFsID0gbV9pZGVh
bDsKKyAgICBpZGVhbCA9IG1faWRlYWwudmFsdWUoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
UmVmPFN0cmluZ0NvbnN0cmFpbnQ+IFN0cmluZ0NvbnN0cmFpbnQ6OmNyZWF0ZShNZWRpYUNvbnN0
cmFpbnRUeXBlIHR5cGUpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RyaW5nQ29uc3Ry
YWludCh0eXBlKSk7Ci19Ci0KIHZvaWQgU3RyaW5nQ29uc3RyYWludDo6c2V0RXhhY3QoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICBtX2V4YWN0LmNsZWFyKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYUNvbnN0cmFpbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFDb25zdHJhaW50cy5o
CShyZXZpc2lvbiAyMDQ4MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYUNvbnN0cmFpbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDI5ICs0OSwyOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBib29sIGlzTWFuZGF0b3J5KCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCBib29sIGdldE1p
bihpbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0OwotICAg
IHZpcnR1YWwgYm9vbCBnZXRFeGFjdChpbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0
SWRlYWwoaW50JikgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoZG91YmxlJikgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVh
bChkb3VibGUmKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0
OwotICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBnZXRFeGFjdChib29sJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wm
KSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVjdG9yPFN0cmluZz4mKSBjb25z
dDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIGdldEV4YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29s
IGdldE1pbihpbnQmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KGludCYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFD
SEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRFeGFjdChpbnQmKSBj
b25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0SWRlYWwoaW50JikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWluKGRvdWJsZSYpIGNvbnN0IHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRN
YXgoZG91YmxlJikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJZGVhbChkb3Vi
bGUmKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKworICAg
IHZpcnR1YWwgYm9vbCBnZXRNaW4oYm9vbCYpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRNYXgoYm9vbCYpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBn
ZXRFeGFjdChib29sJikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKGJvb2wmKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBnZXRNaW4oVmVj
dG9yPFN0cmluZz4mKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgZ2V0TWF4KFZlY3RvcjxTdHJpbmc+JikgY29uc3QgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldEV4
YWN0KFZlY3RvcjxTdHJpbmc+JikgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGdldElkZWFsKFZlY3RvcjxTdHJpbmc+JikgY29u
c3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBNZWRpYUNv
bnN0cmFpbnRUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAotCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgTWVkaWFDb25zdHJhaW50KE1lZGlhQ29uc3RyYWludFR5cGUgdHlw
ZSkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKQEAgLTgyLDEwICs4MSw0OCBAQCBwcml2YXRlOgog
ICAgIE1lZGlhQ29uc3RyYWludFR5cGUgbV90eXBlOwogfTsKIAordGVtcGxhdGU8Y2xhc3MgVmFs
dWVUeXBlPgogY2xhc3MgTnVtZXJpY0NvbnN0cmFpbnQgOiBwdWJsaWMgTWVkaWFDb25zdHJhaW50
IHsKIHB1YmxpYzoKLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAh
bV9oYXNNaW4gJiYgIW1faGFzTWF4ICYmICFtX2hhc0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9Ci0g
ICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faGFzTWluIHx8
IG1faGFzTWF4IHx8IG1faGFzRXhhY3Q7IH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAhbV9taW4gJiYgIW1fbWF4ICYmICFtX2V4YWN0ICYmICFtX2lkZWFsOyB9
CisgICAgYm9vbCBpc01hbmRhdG9yeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fbWluIHx8
IG1fbWF4IHx8IG1fZXhhY3Q7IH0KKworICAgIHZvaWQgc2V0TWluKFZhbHVlVHlwZSB2YWx1ZSkg
eyBtX21pbiA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRNYXgoVmFsdWVUeXBlIHZhbHVlKSB7IG1f
bWF4ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldEV4YWN0KFZhbHVlVHlwZSB2YWx1ZSkgeyBtX2V4
YWN0ID0gdmFsdWU7IH0KKyAgICB2b2lkIHNldElkZWFsKFZhbHVlVHlwZSB2YWx1ZSkgeyBtX2lk
ZWFsID0gdmFsdWU7IH0KKworICAgIGJvb2wgZ2V0TWluKFZhbHVlVHlwZSYgbWluKSBjb25zdCBm
aW5hbCB7CisgICAgICAgIGlmICghbV9taW4pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgbWluID0gbV9taW4udmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgYm9vbCBnZXRNYXgoVmFsdWVUeXBlJiBtYXgpIGNvbnN0IGZpbmFsIHsKKyAgICAg
ICAgaWYgKCFtX21heCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBtYXgg
PSBtX21heC52YWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29s
IGdldEV4YWN0KFZhbHVlVHlwZSYgZXhhY3QpIGNvbnN0IGZpbmFsIHsKKyAgICAgICAgaWYgKCFt
X2V4YWN0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGV4YWN0ID0gbV9l
eGFjdC52YWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGdl
dElkZWFsKFZhbHVlVHlwZSYgaWRlYWwpIGNvbnN0IGZpbmFsIHsKKyAgICAgICAgaWYgKCFtX2lk
ZWFsKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlkZWFsID0gbV9pZGVh
bC52YWx1ZSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKIHByb3RlY3RlZDoKICAg
ICBleHBsaWNpdCBOdW1lcmljQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUpCkBA
IC05Myw4NyArMTMwLDQ3IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBz
ZXRIYXNNaW4oYm9vbCB2YWx1ZSkgeyBtX2hhc01pbiA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRI
YXNNYXgoYm9vbCB2YWx1ZSkgeyBtX2hhc01heCA9IHZhbHVlOyB9Ci0gICAgdm9pZCBzZXRIYXNF
eGFjdChib29sIHZhbHVlKSB7IG1faGFzRXhhY3QgPSB2YWx1ZTsgfQotICAgIHZvaWQgc2V0SGFz
SWRlYWwoYm9vbCB2YWx1ZSkgeyBtX2hhc0lkZWFsID0gdmFsdWU7IH0KLQotICAgIGJvb2wgaGFz
TWluKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNaW47IH0KLSAgICBib29sIGhhc01heCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzTWF4OyB9Ci0gICAgYm9vbCBoYXNFeGFjdCgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzRXhhY3Q7IH0KLSAgICBib29sIGhhc0lkZWFsKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJ
ZGVhbDsgfQotCiBwcml2YXRlOgotICAgIGJvb2wgbV9oYXNNaW4geyBmYWxzZSB9OwotICAgIGJv
b2wgbV9oYXNNYXggeyBmYWxzZSB9OwotICAgIGJvb2wgbV9oYXNFeGFjdCB7IGZhbHNlIH07Ci0g
ICAgYm9vbCBtX2hhc0lkZWFsIHsgZmFsc2UgfTsKKyAgICBPcHRpb25hbDxWYWx1ZVR5cGU+IG1f
bWluOworICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9tYXg7CisgICAgT3B0aW9uYWw8VmFsdWVU
eXBlPiBtX2V4YWN0OworICAgIE9wdGlvbmFsPFZhbHVlVHlwZT4gbV9pZGVhbDsKIH07CiAKLWNs
YXNzIEludENvbnN0cmFpbnQgZmluYWwgOiBwdWJsaWMgTnVtZXJpY0NvbnN0cmFpbnQgeworY2xh
c3MgSW50Q29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29uc3RyYWludDxpbnQ+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEludENvbnN0cmFpbnQ+IGNyZWF0ZShNZWRpYUNvbnN0
cmFpbnRUeXBlKTsKLQotICAgIHZvaWQgc2V0TWluKGludCB2YWx1ZSk7Ci0gICAgdm9pZCBzZXRN
YXgoaW50IHZhbHVlKTsKLSAgICB2b2lkIHNldEV4YWN0KGludCB2YWx1ZSk7Ci0gICAgdm9pZCBz
ZXRJZGVhbChpbnQgdmFsdWUpOwotCi0gICAgYm9vbCBnZXRNaW4oaW50JikgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBnZXRNYXgoaW50JikgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBnZXRFeGFjdChp
bnQmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGdldElkZWFsKGludCYpIGNvbnN0IGZpbmFsOwor
ICAgIHN0YXRpYyBSZWY8SW50Q29uc3RyYWludD4gY3JlYXRlKE1lZGlhQ29uc3RyYWludFR5cGUg
dHlwZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnRDb25zdHJhaW50KHR5cGUpKTsgfQogCiBw
cml2YXRlOgogICAgIGV4cGxpY2l0IEludENvbnN0cmFpbnQoTWVkaWFDb25zdHJhaW50VHlwZSB0
eXBlKQotICAgICAgICA6IFdlYkNvcmU6Ok51bWVyaWNDb25zdHJhaW50KHR5cGUpCisgICAgICAg
IDogTnVtZXJpY0NvbnN0cmFpbnQ8aW50Pih0eXBlKQogICAgIHsKICAgICB9Ci0KLSAgICBpbnQg
bV9taW47Ci0gICAgaW50IG1fbWF4OwotICAgIGludCBtX2V4YWN0OwotICAgIGludCBtX2lkZWFs
OwogfTsKIAotY2xhc3MgRG91YmxlQ29uc3RyYWludCBmaW5hbCA6IHB1YmxpYyBOdW1lcmljQ29u
c3RyYWludCB7CitjbGFzcyBEb3VibGVDb25zdHJhaW50IGZpbmFsIDogcHVibGljIE51bWVyaWND
b25zdHJhaW50PGRvdWJsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8RG91YmxlQ29uc3Ry
YWludD4gY3JlYXRlKE1lZGlhQ29uc3RyYWludFR5cGUpOwotCi0gICAgdm9pZCBzZXRNaW4oZG91
YmxlIHZhbHVlKTsKLSAgICB2b2lkIHNldE1heChkb3VibGUgdmFsdWUpOwotICAgIHZvaWQgc2V0
RXhhY3QoZG91YmxlIHZhbHVlKTsKLSAgICB2b2lkIHNldElkZWFsKGRvdWJsZSB2YWx1ZSk7Ci0K
LSAgICBib29sIGdldE1pbihkb3VibGUmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGdldE1heChk
b3VibGUmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGdldEV4YWN0KGRvdWJsZSYpIGNvbnN0IGZp
bmFsOwotICAgIGJvb2wgZ2V0SWRlYWwoZG91YmxlJikgY29uc3QgZmluYWw7CisgICAgc3RhdGlj
IFJlZjxEb3VibGVDb25zdHJhaW50PiBjcmVhdGUoTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlKSB7
IHJldHVybiBhZG9wdFJlZigqbmV3IERvdWJsZUNvbnN0cmFpbnQodHlwZSkpOyB9CiAKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgRG91YmxlQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlIHR5
cGUpCi0gICAgICAgIDogV2ViQ29yZTo6TnVtZXJpY0NvbnN0cmFpbnQodHlwZSkKKyAgICAgICAg
OiBOdW1lcmljQ29uc3RyYWludDxkb3VibGU+KHR5cGUpCiAgICAgewogICAgIH0KLQotICAgIGRv
dWJsZSBtX21pbjsKLSAgICBkb3VibGUgbV9tYXg7Ci0gICAgZG91YmxlIG1fZXhhY3Q7Ci0gICAg
ZG91YmxlIG1faWRlYWw7CiB9OwogCiBjbGFzcyBCb29sZWFuQ29uc3RyYWludCBmaW5hbCA6IHB1
YmxpYyBNZWRpYUNvbnN0cmFpbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Qm9vbGVhbkNv
bnN0cmFpbnQ+IGNyZWF0ZShNZWRpYUNvbnN0cmFpbnRUeXBlKTsKKyAgICBzdGF0aWMgUmVmPEJv
b2xlYW5Db25zdHJhaW50PiBjcmVhdGUoTWVkaWFDb25zdHJhaW50VHlwZSB0eXBlKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IEJvb2xlYW5Db25zdHJhaW50KHR5cGUpKTsgfQogCi0gICAgdm9pZCBz
ZXRFeGFjdChib29sIHZhbHVlKTsKLSAgICB2b2lkIHNldElkZWFsKGJvb2wgdmFsdWUpOworICAg
IHZvaWQgc2V0RXhhY3QoYm9vbCB2YWx1ZSkgeyBtX2V4YWN0ID0gdmFsdWU7IH0KKyAgICB2b2lk
IHNldElkZWFsKGJvb2wgdmFsdWUpIHsgbV9pZGVhbCA9IHZhbHVlOyB9CiAKICAgICBib29sIGdl
dEV4YWN0KGJvb2wmKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldElkZWFsKGJvb2wmKSBjb25z
dCBmaW5hbDsKIAotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX2hh
c0V4YWN0ICYmICFtX2hhc0lkZWFsOyB9OwotICAgIGJvb2wgaXNNYW5kYXRvcnkoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2hhc0V4YWN0OyB9CisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gIW1fZXhhY3QgJiYgIW1faWRlYWw7IH07CisgICAgYm9vbCBpc01hbmRhdG9y
eSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2wobV9leGFjdCk7IH0KIAogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBCb29sZWFuQ29uc3RyYWludChNZWRpYUNvbnN0cmFpbnRUeXBlIHR5cGUpCkBA
IC0xODEsMTUgKzE3OCwxMyBAQCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICBib29sIG1f
ZXhhY3QgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9pZGVhbCB7IGZhbHNlIH07Ci0gICAgYm9vbCBt
X2hhc0V4YWN0IHsgZmFsc2UgfTsKLSAgICBib29sIG1faGFzSWRlYWwgeyBmYWxzZSB9OworICAg
IE9wdGlvbmFsPGJvb2w+IG1fZXhhY3QgeyBmYWxzZSB9OworICAgIE9wdGlvbmFsPGJvb2w+IG1f
aWRlYWwgeyBmYWxzZSB9OwogfTsKIAogY2xhc3MgU3RyaW5nQ29uc3RyYWludCBmaW5hbCA6IHB1
YmxpYyBNZWRpYUNvbnN0cmFpbnQgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RyaW5nQ29u
c3RyYWludD4gY3JlYXRlKE1lZGlhQ29uc3RyYWludFR5cGUpOworICAgIHN0YXRpYyBSZWY8U3Ry
aW5nQ29uc3RyYWludD4gY3JlYXRlKE1lZGlhQ29uc3RyYWludFR5cGUgdHlwZSkgeyByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdHJpbmdDb25zdHJhaW50KHR5cGUpKTsgfQogCiAgICAgdm9pZCBzZXRF
eGFjdChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGFwcGVuZEV4YWN0KGNvbnN0IFN0cmluZyYp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>