WebKit Bugzilla
Attachment 347272 Details for
Bug 188626
: Add Experimental Feature support for SourceBuffer.changeType()
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for landing
bug-188626-20180816100352.patch (text/plain), 136.29 KB, created by
Jer Noble
on 2018-08-16 10:03:53 PDT
(
hide
)
Description:
Patch for landing
Filename:
MIME Type:
Creator:
Jer Noble
Created:
2018-08-16 10:03:53 PDT
Size:
136.29 KB
patch
obsolete
>Subversion Revision: 234756 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index a56d82429b3b6d79857631bbb2d420d95b95e206..144914e8de4aab0c7c6da2cd2a5fd66d6298edba 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,49 @@ >+2018-08-15 Jer Noble <jer.noble@apple.com> >+ >+ Add Experimental Feature support for SourceBuffer.changeType() >+ https://bugs.webkit.org/show_bug.cgi?id=188626 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Tests: imported/w3c/web-platform-tests/media-source/mediasource-changetype-play.html >+ imported/w3c/web-platform-tests/media-source/mediasource-changetype.html >+ >+ The WICG is incubating a new proposal to allow clients to switch between streams >+ with different codecs within the same SourceBuffer. The proposal is being tracked >+ by <https://github.com/w3c/media-source/issues/155> and the proposed spec change >+ is available at <https://rawgit.com/wicg/media-source/codec-switching/index.html>. >+ >+ Drive-by fix: One of the wpt tests uses a .mp3 file to test SourceBuffer switching. >+ The AVStreamDataParser does not necessarily emit every frame appended, and after a >+ new init segment is appended, it's possible that frames from the previous media >+ segment will be emitted. This causes an error condition to occur, due to an added >+ check in the spec for a new flag. When the SourceBuffer asks its private implementation >+ to reset the parser state, since there's no API on AVStreamDataParser to actually >+ reset the parser state, just set a flag to drop all emitted buffers until the next >+ initialization segment is parsed. >+ >+ * Modules/mediasource/MediaSource.cpp: >+ (WebCore::MediaSource::contentTypeShouldGenerateTimestamps): >+ (WebCore::MediaSource::setDurationInternal): >+ (WebCore::MediaSource::addSourceBuffer): >+ * Modules/mediasource/MediaSource.h: >+ * Modules/mediasource/SourceBuffer.cpp: >+ (WebCore::SourceBuffer::changeType): >+ (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment): >+ (WebCore::SourceBuffer::validateInitializationSegment): >+ (WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample): >+ * Modules/mediasource/SourceBuffer.h: >+ * Modules/mediasource/SourceBuffer.idl: >+ * page/Settings.yaml: >+ * platform/graphics/SourceBufferPrivate.h: >+ (WebCore::SourceBufferPrivate::canSwitchToType): >+ * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: >+ * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm: >+ (WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset): >+ (WebCore::SourceBufferPrivateAVFObjC::processCodedFrame): >+ (WebCore::SourceBufferPrivateAVFObjC::resetParserState): >+ (WebCore::SourceBufferPrivateAVFObjC::canSwitchToType): >+ > 2018-07-31 Jer Noble <jer.noble@apple.com> > > Refactoring: Convert HTMLMediaElement::scheduleDelayedAction() to individually schedulable & cancelable tasks >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index f0fa5642db3a9c9a76cdeefe288d7c96bd119d78..64ce0b1f3bb267025cd0f9cff95c52e6555090d6 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,16 @@ >+2018-08-15 Jer Noble <jer.noble@apple.com> >+ >+ Add Experimental Feature support for SourceBuffer.changeType() >+ https://bugs.webkit.org/show_bug.cgi?id=188626 >+ >+ Reviewed by Eric Carlson. >+ >+ * Shared/WebPreferences.yaml: >+ * UIProcess/API/C/WKPreferences.cpp: >+ (WKPreferencesSetSourceBufferChangeTypeEnabled): >+ (WKPreferencesGetSourceBufferChangeTypeEnabled): >+ * UIProcess/API/C/WKPreferencesRefPrivate.h: >+ > 2018-08-09 Ben Richards <benton_richards@apple.com> > > We should cache the compiled sandbox profile in a data vault >diff --git a/Source/WebKitLegacy/mac/ChangeLog b/Source/WebKitLegacy/mac/ChangeLog >index deaf1f9ccd9308aebd9901eb838b770a4062d70a..14c0acc4fb2bbe8d2309da179efe6ae256c0f198 100644 >--- a/Source/WebKitLegacy/mac/ChangeLog >+++ b/Source/WebKitLegacy/mac/ChangeLog >@@ -1,3 +1,22 @@ >+2018-08-16 Jer Noble <jer.noble@apple.com> >+ >+ Add Experimental Feature support for SourceBuffer.changeType() >+ https://bugs.webkit.org/show_bug.cgi?id=188626 >+ <rdar://problem/43356021> >+ >+ Reviewed by Eric Carlson. >+ >+ Add a new WebPreference property mapping to the WebCore SourceBufferChangeTypeEnabled setting. >+ >+ * WebView/WebPreferenceKeysPrivate.h: >+ * WebView/WebPreferences.mm: >+ (+[WebPreferences initialize]): >+ (-[WebPreferences sourceBufferChangeTypeEnabled]): >+ (-[WebPreferences setSourceBufferChangeTypeEnabled:]): >+ * WebView/WebPreferencesPrivate.h: >+ * WebView/WebView.mm: >+ (-[WebView _preferencesChanged:]): >+ > 2018-08-09 Ali Juma <ajuma@chromium.org> > > Import WPTs for IntersectionObserver >diff --git a/Source/WebCore/Modules/mediasource/MediaSource.cpp b/Source/WebCore/Modules/mediasource/MediaSource.cpp >index 9aee75d9812c948dfdad51a0d037d4dd8d09dcbb..bf84281b332525159b2b159db6d8a432f6397eb5 100644 >--- a/Source/WebCore/Modules/mediasource/MediaSource.cpp >+++ b/Source/WebCore/Modules/mediasource/MediaSource.cpp >@@ -344,6 +344,11 @@ const MediaTime& MediaSource::currentTimeFudgeFactor() > return fudgeFactor; > } > >+bool MediaSource::contentTypeShouldGenerateTimestamps(const ContentType& contentType) >+{ >+ return contentType.containerType() == "audio/aac" || contentType.containerType() == "audio/mpeg"; >+} >+ > bool MediaSource::hasBufferedTime(const MediaTime& time) > { > if (time > duration()) >@@ -524,7 +529,7 @@ ExceptionOr<void> MediaSource::setDurationInternal(const MediaTime& duration) > m_duration = newDuration; > > // 6. Update the media duration to new duration and run the HTMLMediaElement duration change algorithm. >- LOG(MediaSource, "MediaSource::setDurationInternal(%p) - duration(%g)", this, duration.toDouble()); >+ LOG(MediaSource, "MediaSource::setDurationInternal(%p) - duration(%s)", this, duration.toString().utf8().data()); > m_private->durationChanged(); > > return { }; >@@ -662,7 +667,7 @@ ExceptionOr<Ref<SourceBuffer>> MediaSource::addSourceBuffer(const String& type) > // column of the byte stream format registry [MSE-REGISTRY] entry that is associated with type. > // NOTE: In the current byte stream format registry <http://www.w3.org/2013/12/byte-stream-format-registry/> > // only the "MPEG Audio Byte Stream Format" has the "Generate Timestamps Flag" value set. >- bool shouldGenerateTimestamps = contentType.containerType() == "audio/aac" || contentType.containerType() == "audio/mpeg"; >+ bool shouldGenerateTimestamps = contentTypeShouldGenerateTimestamps(contentType); > buffer->setShouldGenerateTimestamps(shouldGenerateTimestamps); > > // 7. If the generate timestamps flag equals true: >diff --git a/Source/WebCore/Modules/mediasource/MediaSource.h b/Source/WebCore/Modules/mediasource/MediaSource.h >index bd5cd7cf449e07a601a28ee5cf72c0374ffa5225..eca269ea9969b88f412af2471c31b6df770761d0 100644 >--- a/Source/WebCore/Modules/mediasource/MediaSource.h >+++ b/Source/WebCore/Modules/mediasource/MediaSource.h >@@ -103,6 +103,7 @@ public: > bool hasPendingActivity() const final; > > static const MediaTime& currentTimeFudgeFactor(); >+ static bool contentTypeShouldGenerateTimestamps(const ContentType&); > > private: > explicit MediaSource(ScriptExecutionContext&); >diff --git a/Source/WebCore/Modules/mediasource/SourceBuffer.cpp b/Source/WebCore/Modules/mediasource/SourceBuffer.cpp >index a5266ee25c1de634d84565fb1b219d98576cc8be..44443c782d16a2c00dfc4b76a7b0d435112ec72d 100644 >--- a/Source/WebCore/Modules/mediasource/SourceBuffer.cpp >+++ b/Source/WebCore/Modules/mediasource/SourceBuffer.cpp >@@ -348,6 +348,58 @@ void SourceBuffer::rangeRemoval(const MediaTime& start, const MediaTime& end) > m_removeTimer.startOneShot(0_s); > } > >+ExceptionOr<void> SourceBuffer::changeType(const String& type) >+{ >+ // changeType() proposed API. See issue #155: <https://github.com/w3c/media-source/issues/155> >+ // https://rawgit.com/wicg/media-source/codec-switching/index.html#dom-sourcebuffer-changetype >+ >+ // 1. If type is an empty string then throw a TypeError exception and abort these steps. >+ if (type.isEmpty()) >+ return Exception { TypeError }; >+ >+ // 2. If this object has been removed from the sourceBuffers attribute of the parent media source, >+ // then throw an InvalidStateError exception and abort these steps. >+ // 3. If the updating attribute equals true, then throw an InvalidStateError exception and abort these steps. >+ if (isRemoved() || m_updating) >+ return Exception { InvalidStateError }; >+ >+ // 4. If type contains a MIME type that is not supported or contains a MIME type that is not supported with >+ // the types specified (currently or previously) of SourceBuffer objects in the sourceBuffers attribute of >+ // the parent media source, then throw a NotSupportedError exception and abort these steps. >+ ContentType contentType(type); >+ if (!m_private->canSwitchToType(contentType)) >+ return Exception { NotSupportedError }; >+ >+ // 5. If the readyState attribute of the parent media source is in the "ended" state then run the following >+ // steps: >+ // 5.1. Set the readyState attribute of the parent media source to "open" >+ // 5.2. Queue a task to fire a simple event named sourceopen at the parent media source. >+ m_source->openIfInEndedState(); >+ >+ // 6. Run the reset parser state algorithm. >+ resetParserState(); >+ >+ // 7. Update the generate timestamps flag on this SourceBuffer object to the value in the "Generate Timestamps >+ // Flag" column of the byte stream format registry [MSE-REGISTRY] entry that is associated with type. >+ setShouldGenerateTimestamps(MediaSource::contentTypeShouldGenerateTimestamps(contentType)); >+ >+ // ⳠIf the generate timestamps flag equals true: >+ // Set the mode attribute on this SourceBuffer object to "sequence", including running the associated steps >+ // for that attribute being set. >+ if (m_shouldGenerateTimestamps) >+ setMode(AppendMode::Sequence); >+ >+ // ⳠOtherwise: >+ // Keep the previous value of the mode attribute on this SourceBuffer object, without running any associated >+ // steps for that attribute being set. >+ // NOTE: No-op. >+ >+ // 9. Set pending initialization segment for changeType flag to true. >+ m_pendingInitializationSegmentForChangeType = true; >+ >+ return { }; >+} >+ > void SourceBuffer::abortIfUpdating() > { > // Section 3.2 abort() method step 4 substeps. >@@ -1010,8 +1062,10 @@ void SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment(const Init > // Run the duration change algorithm with new duration set to the duration in the initialization segment. > // ⳠOtherwise: > // Run the duration change algorithm with new duration set to positive Infinity. >- MediaTime newDuration = segment.duration.isValid() ? segment.duration : MediaTime::positiveInfiniteTime(); >- m_source->setDurationInternal(newDuration); >+ if (segment.duration.isValid() && !segment.duration.isIndefinite()) >+ m_source->setDurationInternal(segment.duration); >+ else >+ m_source->setDurationInternal(MediaTime::positiveInfiniteTime()); > } > > // 2. If the initialization segment has no audio, video, or text tracks, then run the append error algorithm >@@ -1206,6 +1260,10 @@ void SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment(const Init > m_receivedFirstInitializationSegment = true; > } > >+ // (Note: Issue #155 adds this step after step 5:) >+ // 6. Set pending initialization segment for changeType flag to false. >+ m_pendingInitializationSegmentForChangeType = false; >+ > // 6. If the HTMLMediaElement.readyState attribute is HAVE_NOTHING, then run the following steps: > if (m_private->readyState() == MediaPlayer::HaveNothing) { > // 6.1 If one or more objects in sourceBuffers have first initialization segment flag set to false, then abort these steps. >@@ -1240,9 +1298,14 @@ bool SourceBuffer::validateInitializationSegment(const InitializationSegment& se > return false; > > // * The codecs for each track, match what was specified in the first initialization segment. >- for (auto& audioTrackInfo : segment.audioTracks) { >- if (!m_audioCodecs.contains(audioTrackInfo.description->codec())) >- return false; >+ // (Note: Issue #155 strikes out this check. For broad compatibility when this experimental feature >+ // is not enabled, only perform this check if the "pending initialization segment for changeType flag" >+ // is not set.) >+ if (!m_pendingInitializationSegmentForChangeType) { >+ for (auto& audioTrackInfo : segment.audioTracks) { >+ if (!m_audioCodecs.contains(audioTrackInfo.description->codec())) >+ return false; >+ } > } > > for (auto& videoTrackInfo : segment.videoTracks) { >@@ -1328,12 +1391,14 @@ void SourceBuffer::sourceBufferPrivateDidReceiveSample(MediaSample& sample) > return; > > // 3.5.1 Segment Parser Loop >- // 6.1 If the first initialization segment received flag is false, then run the append error algorithm >+ // 6.1 If the first initialization segment received flag is false, (Note: Issue # 155 & changeType() >+ // algorithm) or the pending initialization segment for changeType flag is true, (End note) >+ // then run the append error algorithm > // with the decode error parameter set to true and abort this algorithm. > // Note: current design makes SourceBuffer somehow ignorant of append state - it's more a thing > // of SourceBufferPrivate. That's why this check can't really be done in appendInternal. > // unless we force some kind of design with state machine switching. >- if (!m_receivedFirstInitializationSegment) { >+ if (!m_receivedFirstInitializationSegment || m_pendingInitializationSegmentForChangeType) { > appendError(true); > return; > } >diff --git a/Source/WebCore/Modules/mediasource/SourceBuffer.h b/Source/WebCore/Modules/mediasource/SourceBuffer.h >index 9a30799e9ee5613cedcb447311c9f050dba40fb8..aae7a7d36de80e73f2ef094d516018d043be258d 100644 >--- a/Source/WebCore/Modules/mediasource/SourceBuffer.h >+++ b/Source/WebCore/Modules/mediasource/SourceBuffer.h >@@ -79,6 +79,7 @@ public: > ExceptionOr<void> abort(); > ExceptionOr<void> remove(double start, double end); > ExceptionOr<void> remove(const MediaTime&, const MediaTime&); >+ ExceptionOr<void> changeType(const String&); > > const TimeRanges& bufferedInternal() const { ASSERT(m_buffered); return *m_buffered; } > >@@ -235,6 +236,7 @@ private: > bool m_active { false }; > bool m_bufferFull { false }; > bool m_shouldGenerateTimestamps { false }; >+ bool m_pendingInitializationSegmentForChangeType { false }; > }; > > } // namespace WebCore >diff --git a/Source/WebCore/Modules/mediasource/SourceBuffer.idl b/Source/WebCore/Modules/mediasource/SourceBuffer.idl >index 4d8f7323283d4de0b2e29373dc4a5249ffbb6232..031cf84f2120fa7b1177e9ebec20cc3daa898796 100644 >--- a/Source/WebCore/Modules/mediasource/SourceBuffer.idl >+++ b/Source/WebCore/Modules/mediasource/SourceBuffer.idl >@@ -68,4 +68,6 @@ > attribute EventHandler onupdateend; > attribute EventHandler onerror; > attribute EventHandler onabort; >+ >+ [EnabledBySetting=SourceBufferChangeType, MayThrowException] void changeType(DOMString type); > }; >diff --git a/Source/WebCore/page/Settings.yaml b/Source/WebCore/page/Settings.yaml >index bdf8004c6c5f35c39e26da41aafbb5939832e0c9..252a78eb66e33fe742d0b0ce7f97e28f61fbca2e 100644 >--- a/Source/WebCore/page/Settings.yaml >+++ b/Source/WebCore/page/Settings.yaml >@@ -432,6 +432,10 @@ mediaSourceEnabled: > initial: true > conditional: MEDIA_SOURCE > >+sourceBufferChangeTypeEnabled: >+ initial: false >+ conditional: MEDIA_SOURCE >+ > # FIXME: Rename to allowMultiElementImplicitFormSubmission once we upstream the iOS changes to WebView.mm. > allowMultiElementImplicitSubmission: > initial: false >diff --git a/Source/WebCore/platform/graphics/SourceBufferPrivate.h b/Source/WebCore/platform/graphics/SourceBufferPrivate.h >index 35592eb7b4e14e0634ec1ad52da066687485d58b..b267e55a40430b73a14fe46827b08a36e82286d2 100644 >--- a/Source/WebCore/platform/graphics/SourceBufferPrivate.h >+++ b/Source/WebCore/platform/graphics/SourceBufferPrivate.h >@@ -63,6 +63,8 @@ public: > virtual void notifyClientWhenReadyForMoreSamples(const AtomicString&) { } > > virtual Vector<String> enqueuedSamplesForTrackID(const AtomicString&) { return { }; } >+ >+ virtual bool canSwitchToType(const ContentType&) { return false; } > }; > > } >diff --git a/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h b/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h >index 11f2fa92d2e6c2cee206e586e6d56a400c419f4a..019cf37b6bbdaac4c4ebfea3f984b2abd9bf13a1 100644 >--- a/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h >+++ b/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h >@@ -144,6 +144,7 @@ private: > bool isReadyForMoreSamples(const AtomicString& trackID) final; > void setActive(bool) final; > void notifyClientWhenReadyForMoreSamples(const AtomicString& trackID) final; >+ bool canSwitchToType(const ContentType&) final; > > void didBecomeReadyForMoreSamples(int trackID); > void appendCompleted(); >@@ -194,6 +195,7 @@ private: > FloatSize m_currentSize; > bool m_parsingSucceeded { true }; > bool m_parserStateWasReset { false }; >+ bool m_discardSamplesUntilNextInitializationSegment { false }; > int m_enabledVideoTrackID { -1 }; > int m_protectedTrackID { -1 }; > }; >diff --git a/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm b/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm >index 01bb81b069613594da6d306488a9e7f7370d51f5..dc93478ee35b309fbe8f1d25fe3512965fe066f5 100644 >--- a/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm >+++ b/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm >@@ -538,6 +538,8 @@ void SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset(AVAsset* asset) > m_videoTracks.clear(); > m_audioTracks.clear(); > >+ m_discardSamplesUntilNextInitializationSegment = false; >+ > SourceBufferPrivateClient::InitializationSegment segment; > > if ([m_asset respondsToSelector:@selector(overallDurationHint)]) >@@ -607,6 +609,9 @@ bool SourceBufferPrivateAVFObjC::processCodedFrame(int trackID, CMSampleBufferRe > return false; > } > >+ if (m_discardSamplesUntilNextInitializationSegment) >+ return false; >+ > if (m_client) { > Ref<MediaSample> mediaSample = MediaSampleAVFObjC::create(sampleBuffer, trackID); > LOG(MediaSourceSamples, "SourceBufferPrivateAVFObjC::processCodedFrame(%p) - sample(%s)", this, toString(mediaSample.get()).utf8().data()); >@@ -746,6 +751,7 @@ void SourceBufferPrivateAVFObjC::abort() > void SourceBufferPrivateAVFObjC::resetParserState() > { > m_parserStateWasReset = true; >+ m_discardSamplesUntilNextInitializationSegment = true; > } > > void SourceBufferPrivateAVFObjC::destroyParser() >@@ -1197,6 +1203,14 @@ void SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples(const Atomi > } > } > >+bool SourceBufferPrivateAVFObjC::canSwitchToType(const ContentType& contentType) >+{ >+ MediaEngineSupportParameters parameters; >+ parameters.isMediaSource = true; >+ parameters.type = contentType; >+ return MediaPlayerPrivateMediaSourceAVFObjC::supportsType(parameters) != MediaPlayer::IsNotSupported; >+} >+ > void SourceBufferPrivateAVFObjC::setVideoLayer(AVSampleBufferDisplayLayer* layer) > { > if (layer == m_displayLayer) >diff --git a/Source/WebKit/Shared/WebPreferences.yaml b/Source/WebKit/Shared/WebPreferences.yaml >index cd2bfd5e1b5c6dd936ecb37acf55841b49b849cd..260221cb30cd25bf524c22b74e6525187fb8001c 100644 >--- a/Source/WebKit/Shared/WebPreferences.yaml >+++ b/Source/WebKit/Shared/WebPreferences.yaml >@@ -1309,3 +1309,10 @@ ProcessSwapOnNavigationEnabled: > category: experimental > webcoreBinding: none > >+SourceBufferChangeTypeEnabled: >+ type: bool >+ defaultValue: DEFAULT_EXPERIMENTAL_FEATURES_ENABLED >+ humanReadableName: "Media Source Codec Switching Support" >+ humanReadableDescription: "Enable Media Source Codec Switching through changeType()" >+ category: experimental >+ condition: ENABLE(MEDIA_SOURCE) >diff --git a/Source/WebKit/UIProcess/API/C/WKPreferences.cpp b/Source/WebKit/UIProcess/API/C/WKPreferences.cpp >index 8a5d651c54d3d7095694cf15a0a5f7cb3f714196..cf3955012d34d9a4db515701fd4be0cd77505707 100644 >--- a/Source/WebKit/UIProcess/API/C/WKPreferences.cpp >+++ b/Source/WebKit/UIProcess/API/C/WKPreferences.cpp >@@ -1468,6 +1468,16 @@ bool WKPreferencesGetMediaSourceEnabled(WKPreferencesRef preferencesRef) > return toImpl(preferencesRef)->mediaSourceEnabled(); > } > >+void WKPreferencesSetSourceBufferChangeTypeEnabled(WKPreferencesRef preferencesRef, bool enabled) >+{ >+ toImpl(preferencesRef)->setSourceBufferChangeTypeEnabled(enabled); >+} >+ >+bool WKPreferencesGetSourceBufferChangeTypeEnabled(WKPreferencesRef preferencesRef) >+{ >+ return toImpl(preferencesRef)->sourceBufferChangeTypeEnabled(); >+} >+ > void WKPreferencesSetViewGestureDebuggingEnabled(WKPreferencesRef preferencesRef, bool enabled) > { > toImpl(preferencesRef)->setViewGestureDebuggingEnabled(enabled); >diff --git a/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h b/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h >index df1619e37f57757289d411c63e6e56d52190214a..7cd482530467285d10e07ebdff1c6e1130abee36 100644 >--- a/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h >+++ b/Source/WebKit/UIProcess/API/C/WKPreferencesRefPrivate.h >@@ -377,6 +377,10 @@ WK_EXPORT bool WKPreferencesUseLegacyTextAlignPositionedElementBehavior(WKPrefer > WK_EXPORT void WKPreferencesSetMediaSourceEnabled(WKPreferencesRef preferencesRef, bool enabled); > WK_EXPORT bool WKPreferencesGetMediaSourceEnabled(WKPreferencesRef preferencesRef); > >+// Defaults to false; >+WK_EXPORT void WKPreferencesSetSourceBufferChangeTypeEnabled(WKPreferencesRef preferencesRef, bool enabled); >+WK_EXPORT bool WKPreferencesGetSourceBufferChangeTypeEnabled(WKPreferencesRef preferencesRef); >+ > // Default to false. > WK_EXPORT void WKPreferencesSetViewGestureDebuggingEnabled(WKPreferencesRef preferencesRef, bool enabled); > WK_EXPORT bool WKPreferencesGetViewGestureDebuggingEnabled(WKPreferencesRef preferencesRef); >diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h b/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h >index 9b18a7f945f75c2fb7421f5f3f100af746b904f4..fc7bf743c00b09de3b0df8fb52e35e4b1136e14e 100644 >--- a/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h >+++ b/Source/WebKitLegacy/mac/WebView/WebPreferenceKeysPrivate.h >@@ -163,6 +163,7 @@ > #define WebKitLowPowerVideoAudioBufferSizeEnabledPreferenceKey @"WebKitLowPowerVideoAudioBufferSizeEnabled" > #define WebKitUseLegacyTextAlignPositionedElementBehaviorPreferenceKey @"WebKitUseLegacyTextAlignPositionedElementBehavior" > #define WebKitMediaSourceEnabledPreferenceKey @"WebKitMediaSourceEnabled" >+#define WebKitSourceBufferChangeTypeEnabledPreferenceKey @"WebKitSourceBufferChangeTypeEnabled" > #define WebKitShouldConvertPositionStyleOnCopyPreferenceKey @"WebKitShouldConvertPositionStyleOnCopy" > #define WebKitImageControlsEnabledPreferenceKey @"WebKitImageControlsEnabled" > #define WebKitGamepadsEnabledPreferenceKey @"WebKitGamepadsEnabled" >diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferences.mm b/Source/WebKitLegacy/mac/WebView/WebPreferences.mm >index 4afda34d0606302c7ff7759ec4a9db616170bc87..3a986070eb3cb6a7161a9925c09eee59d85eb1b8 100644 >--- a/Source/WebKitLegacy/mac/WebView/WebPreferences.mm >+++ b/Source/WebKitLegacy/mac/WebView/WebPreferences.mm >@@ -605,6 +605,7 @@ + (void)initialize > [NSNumber numberWithBool:NO], WebKitUseLegacyTextAlignPositionedElementBehaviorPreferenceKey, > #if ENABLE(MEDIA_SOURCE) > [NSNumber numberWithBool:YES], WebKitMediaSourceEnabledPreferenceKey, >+ @NO, WebKitSourceBufferChangeTypeEnabledPreferenceKey, > #endif > #if ENABLE(SERVICE_CONTROLS) > [NSNumber numberWithBool:NO], WebKitImageControlsEnabledPreferenceKey, >@@ -2742,6 +2743,16 @@ - (void)setMediaSourceEnabled:(BOOL)enabled > [self _setBoolValue:enabled forKey:WebKitMediaSourceEnabledPreferenceKey]; > } > >+- (BOOL)sourceBufferChangeTypeEnabled >+{ >+ return [self _boolValueForKey:WebKitSourceBufferChangeTypeEnabledPreferenceKey]; >+} >+ >+- (void)setSourceBufferChangeTypeEnabled:(BOOL)enabled >+{ >+ [self _setBoolValue:enabled forKey:WebKitSourceBufferChangeTypeEnabledPreferenceKey]; >+} >+ > - (BOOL)imageControlsEnabled > { > return [self _boolValueForKey:WebKitImageControlsEnabledPreferenceKey]; >diff --git a/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h b/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h >index 6bf0d480425aa9f216c6a1f0a8ef2aa06b47e777..2f1ddc4971ece4f3697199f3fa648fb6664d23b9 100644 >--- a/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h >+++ b/Source/WebKitLegacy/mac/WebView/WebPreferencesPrivate.h >@@ -614,6 +614,7 @@ extern NSString *WebPreferencesCacheModelChangedInternalNotification WEBKIT_DEPR > @property (nonatomic) BOOL ariaReflectionEnabled; > @property (nonatomic) BOOL mediaCapabilitiesEnabled; > @property (nonatomic) BOOL allowCrossOriginSubresourcesToAskForCredentials; >+@property (nonatomic) BOOL sourceBufferChangeTypeEnabled; > > #if TARGET_OS_IPHONE > @property (nonatomic) BOOL quickLookDocumentSavingEnabled; >diff --git a/Source/WebKitLegacy/mac/WebView/WebView.mm b/Source/WebKitLegacy/mac/WebView/WebView.mm >index d4d1e6efceaa6dbc493e86e26ce4f81611ea03df..7923346942d0c647129003949523d82e9f3c0f3a 100644 >--- a/Source/WebKitLegacy/mac/WebView/WebView.mm >+++ b/Source/WebKitLegacy/mac/WebView/WebView.mm >@@ -3021,6 +3021,7 @@ - (void)_preferencesChanged:(WebPreferences *)preferences > > #if ENABLE(MEDIA_SOURCE) > settings.setMediaSourceEnabled([preferences mediaSourceEnabled]); >+ settings.setSourceBufferChangeTypeEnabled([preferences sourceBufferChangeTypeEnabled]); > #endif > > #if ENABLE(SERVICE_CONTROLS) >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index e7154d629048c195ada5b1e9abf712661c1b5031..e571f495221f2fb2a1716d49acb3e2247a4b4b74 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,17 @@ >+2018-08-16 Jer Noble <jer.noble@apple.com> >+ >+ Add Experimental Feature support for SourceBuffer.changeType() >+ https://bugs.webkit.org/show_bug.cgi?id=188626 >+ <rdar://problem/43356021> >+ >+ Reviewed by Eric Carlson. >+ >+ * DumpRenderTree/mac/DumpRenderTree.mm: >+ (enableExperimentalFeatures): >+ (resetWebPreferencesToConsistentValues): >+ * WebKitTestRunner/TestController.cpp: >+ (WTR::TestController::resetPreferencesToConsistentValues): >+ > 2018-08-10 Joseph Pecoraro <pecoraro@apple.com> > > Eliminate remaining instances of "ElCapitan" from LayoutTests / Tools >diff --git a/Tools/DumpRenderTree/mac/DumpRenderTree.mm b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >index 5d52905736a36bb9b4b6b50a8f458c528a352a41..43069ccdf23d1bd437bc3f0be260e1497433a550 100644 >--- a/Tools/DumpRenderTree/mac/DumpRenderTree.mm >+++ b/Tools/DumpRenderTree/mac/DumpRenderTree.mm >@@ -868,6 +868,7 @@ static void enableExperimentalFeatures(WebPreferences* preferences) > [preferences setCrossOriginWindowPolicySupportEnabled:YES]; > [preferences setServerTimingEnabled:YES]; > [preferences setIntersectionObserverEnabled:YES]; >+ preferences.sourceBufferChangeTypeEnabled = YES; > } > > // Called before each test. >@@ -960,6 +961,7 @@ static void resetWebPreferencesToConsistentValues() > > [preferences setWebAudioEnabled:YES]; > [preferences setMediaSourceEnabled:YES]; >+ [preferences setSourceBufferChangeTypeEnabled:YES]; > > [preferences setShadowDOMEnabled:YES]; > [preferences setCustomElementsEnabled:YES]; >diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp >index 01203ce19db46cf22073b45c0ed3399baa035084..3cf668c7c949056e012f074caaf61dca67e29854 100644 >--- a/Tools/WebKitTestRunner/TestController.cpp >+++ b/Tools/WebKitTestRunner/TestController.cpp >@@ -740,8 +740,9 @@ void TestController::resetPreferencesToConsistentValues(const TestOptions& optio > WKPreferencesSetSansSerifFontFamily(preferences, sansSerifFontFamily); > WKPreferencesSetSerifFontFamily(preferences, serifFontFamily); > WKPreferencesSetAsynchronousSpellCheckingEnabled(preferences, false); >-#if ENABLE(WEB_AUDIO) >+#if ENABLE(MEDIA_SOURCE) > WKPreferencesSetMediaSourceEnabled(preferences, true); >+ WKPreferencesSetSourceBufferChangeTypeEnabled(preferences, true); > #endif > > WKPreferencesSetHiddenPageDOMTimerThrottlingEnabled(preferences, false); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 6a47482b19dd243d1a54ac14a6b81dce2c1d7543..2592367917a754f38cc3f373b627b524bde265a4 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,12 @@ >+2018-08-15 Jer Noble <jer.noble@apple.com> >+ >+ Add Experimental Feature support for SourceBuffer.changeType() >+ https://bugs.webkit.org/show_bug.cgi?id=188626 >+ >+ Reviewed by Eric Carlson. >+ >+ * platform/mac/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt: Added. >+ > 2018-08-10 Joseph Pecoraro <pecoraro@apple.com> > > Eliminate remaining instances of "ElCapitan" from LayoutTests / Tools >diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog >index 06ee6d0641c13930235f38f8f616a3440a9c60a7..544359e6a072a4836bc02bd7bed5aa1e895544f6 100644 >--- a/LayoutTests/imported/w3c/ChangeLog >+++ b/LayoutTests/imported/w3c/ChangeLog >@@ -1,3 +1,28 @@ >+2018-08-15 Jer Noble <jer.noble@apple.com> >+ >+ Add Experimental Feature support for SourceBuffer.changeType() >+ https://bugs.webkit.org/show_bug.cgi?id=188626 >+ >+ Reviewed by Eric Carlson. >+ >+ * resources/import-expectations.json: >+ * web-platform-tests/media-source/mediasource-changetype-expected.txt: Added. >+ * web-platform-tests/media-source/mediasource-changetype-play-expected.txt: Added. >+ * web-platform-tests/media-source/mediasource-changetype-play.html: Added. >+ * web-platform-tests/media-source/mediasource-changetype-util.js: Added. >+ (findSupportedChangeTypeTestTypes): >+ (appendBuffer): >+ (trimBuffered): >+ (trimDuration): >+ (runChangeTypeTest): >+ (mediaSourceChangeTypeTest): >+ * web-platform-tests/media-source/mediasource-changetype.html: Added. >+ * web-platform-tests/media-source/mp3/sound_5.mp3: Added. >+ * web-platform-tests/media-source/mp3/w3c-import.log: Added. >+ * web-platform-tests/media-source/w3c-import.log: >+ * web-platform-tests/media-source/webm/test-vp9.webm: Added. >+ * web-platform-tests/media-source/webm/w3c-import.log: >+ > 2018-08-09 Ali Juma <ajuma@chromium.org> > > Import WPTs for IntersectionObserver >diff --git a/LayoutTests/imported/w3c/resources/import-expectations.json b/LayoutTests/imported/w3c/resources/import-expectations.json >index 137b29c1b5fd6232289f1d6d5187c5717ce49481..e1bbcb81b8ae5d4fc175c28897773865022d5913 100644 >--- a/LayoutTests/imported/w3c/resources/import-expectations.json >+++ b/LayoutTests/imported/w3c/resources/import-expectations.json >@@ -253,6 +253,7 @@ > "web-platform-tests/magnetometer": "skip", > "web-platform-tests/mathml": "import", > "web-platform-tests/media-capabilities": "skip", >+ "web-platform-tests/media-source": "import", > "web-platform-tests/mediacapture-image": "skip", > "web-platform-tests/mediacapture-record": "skip", > "web-platform-tests/mediacapture-streams": "import", >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..3249f21fcf9b44f01fbbcbdf139ad5c66ba8242a >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-expected.txt >@@ -0,0 +1,10 @@ >+ >+PASS Test changeType with an empty type. >+PASS Test changeType after SourceBuffer removed from mediaSource. >+PASS Test changeType while update pending. >+PASS Test changeType with null type. >+PASS Test changeType with unsupported type. >+PASS Test changeType transitioning readyState from 'ended' to 'open'. >+PASS Test changeType sets mode to sequence for change to type that generates timestamps >+PASS Test changeType retains previous mode when changing to type that doesn't generate timestamps >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..ae96bee1e186f04adfd6aa75b5be856cdbfb9f20 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt >@@ -0,0 +1,8 @@ >+ >+PASS Check if browser supports enough test media types >+PASS Test audio-only changeType for audio/mp4; codecs="mp4a.40.2" <-> audio/mp4; codecs="mp4a.40.2" >+PASS Test audio-only changeType for audio/mp4; codecs="mp4a.40.2" <-> audio/mpeg >+PASS Test audio-only changeType for audio/mpeg <-> audio/mp4; codecs="mp4a.40.2" >+PASS Test audio-only changeType for audio/mpeg <-> audio/mpeg >+PASS Test video-only changeType for video/mp4; codecs="avc1.4D4001" <-> video/mp4; codecs="avc1.4D4001" >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play.html b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play.html >new file mode 100644 >index 0000000000000000000000000000000000000000..c4527149d0d4b8f4b8943387a7de8872b632fd72 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play.html >@@ -0,0 +1,42 @@ >+<!DOCTYPE html> >+<!-- Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> >+<html> >+ <head> >+ <title>Exercise changeType for supported test types.</title> >+ <script src="/resources/testharness.js"></script> >+ <script src="/resources/testharnessreport.js"></script> >+ <script src="mediasource-util.js"></script> >+ <script src="mediasource-changetype-util.js"></script> >+ </head> >+ <body> >+ <div id="log"></div> >+ <script> >+ >+function generateChangeTypeTests(audio_types, video_types) >+{ >+ async_test(function(test) { >+ assert_true(audio_types.length > 1, "Browser doesn't support at least 2 types of audio test media" + audio_types); >+ assert_true(video_types.length > 1, "Browser doesn't support at least 2 types of video test media"); >+ test.done(); >+ }, "Check if browser supports enough test media types"); >+ >+ // Generate audio-only changeType tests >+ for (let audio1 of audio_types) { >+ for (let audio2 of audio_types) { >+ mediaSourceChangeTypeTest(audio1, audio2, "Test audio-only changeType for " + audio1.type + " <-> " + audio2.type); >+ } >+ } >+ >+ // Generate video-only changeType tests >+ for (let video1 of video_types) { >+ for (let video2 of video_types) { >+ mediaSourceChangeTypeTest(video1, video2, "Test video-only changeType for " + video1.type + " <-> " + video2.type); >+ } >+ } >+} >+ >+findSupportedChangeTypeTestTypes(generateChangeTypeTests); >+ >+ </script> >+ </body> >+</html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-util.js b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-util.js >new file mode 100644 >index 0000000000000000000000000000000000000000..4e24223e0439f6c84b205ae23c21e140480c121c >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-util.js >@@ -0,0 +1,156 @@ >+// Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). >+ >+function findSupportedChangeTypeTestTypes(cb) >+{ >+ var CHANGE_TYPE_MEDIA_LIST = [ >+ { >+ type: 'video/webm; codecs="vp8"', >+ is_video: true, >+ url: 'webm/test-v-128k-320x240-24fps-8kfr.webm' >+ }, >+ { >+ type: 'video/webm; codecs="vp9"', >+ is_video: true, >+ url: 'webm/test-vp9.webm' >+ }, >+ { >+ type: 'video/mp4; codecs="avc1.4D4001"', >+ is_video: true, >+ url: 'mp4/test-v-128k-320x240-24fps-8kfr.mp4' >+ }, >+ { >+ type: 'audio/webm; codecs="vorbis"', >+ is_video: false, >+ url: 'webm/test-a-128k-44100Hz-1ch.webm' >+ }, >+ { >+ type: 'audio/mp4; codecs="mp4a.40.2"', >+ is_video: false, >+ url: 'mp4/test-a-128k-44100Hz-1ch.mp4' >+ }, >+ { >+ type: 'audio/mpeg', >+ is_video: false, >+ url: 'mp3/sound_5.mp3' >+ } >+ ]; >+ >+ var audio_result = []; >+ var video_result = []; >+ >+ for (var i = 0; i < CHANGE_TYPE_MEDIA_LIST.length; ++i) { >+ var media = CHANGE_TYPE_MEDIA_LIST[i]; >+ if (window.MediaSource && MediaSource.isTypeSupported(media.type)) { >+ if (media.is_video === true) { >+ video_result.push(media); >+ } else { >+ audio_result.push(media); >+ } >+ } >+ } >+ >+ >+ cb(audio_result, video_result); >+} >+ >+function appendBuffer(test, sourceBuffer, data) >+{ >+ test.expectEvent(sourceBuffer, "update"); >+ test.expectEvent(sourceBuffer, "updateend"); >+ sourceBuffer.appendBuffer(data); >+} >+ >+function trimBuffered(test, mediaElement, sourceBuffer, minimumPreviousDuration, newDuration) >+{ >+ assert_less_than(newDuration, minimumPreviousDuration); >+ assert_less_than(minimumPreviousDuration, mediaElement.duration); >+ test.expectEvent(sourceBuffer, "update"); >+ test.expectEvent(sourceBuffer, "updateend"); >+ sourceBuffer.remove(newDuration, Infinity); >+} >+ >+function trimDuration(test, mediaElement, mediaSource, newDuration) >+{ >+ assert_less_than(newDuration, mediaElement.duration); >+ test.expectEvent(mediaElement, "durationchange"); >+ mediaSource.duration = newDuration; >+} >+ >+function runChangeTypeTest(test, mediaElement, mediaSource, typeA, dataA, typeB, dataB) >+{ >+ var sourceBuffer = mediaSource.addSourceBuffer(typeA); >+ >+ appendBuffer(test, sourceBuffer, dataA); >+ >+ // changeType A->B and append B starting at 0.5 seconds. >+ test.waitForExpectedEvents(function() >+ { >+ sourceBuffer.changeType(typeB); >+ sourceBuffer.timestampOffset = 0.5; >+ appendBuffer(test, sourceBuffer, dataB); >+ }); >+ >+ // changeType B->B and append B starting at 1.0 seconds. >+ test.waitForExpectedEvents(function() >+ { >+ sourceBuffer.changeType(typeB); >+ sourceBuffer.timestampOffset = 1.0; >+ appendBuffer(test, sourceBuffer, dataB); >+ }); >+ >+ // changeType B->A and append A starting at 1.5 seconds. >+ test.waitForExpectedEvents(function() >+ { >+ sourceBuffer.changeType(typeA); >+ sourceBuffer.timestampOffset = 1.5; >+ appendBuffer(test, sourceBuffer, dataA); >+ }); >+ >+ // changeTypoe A->A and append A starting at 1.3 seconds. >+ test.waitForExpectedEvents(function() >+ { >+ sourceBuffer.changeType(typeA); >+ sourceBuffer.timestampOffset = 1.3; >+ appendBuffer(test, sourceBuffer, dataA); >+ }); >+ >+ // Trim duration to 2 seconds, then play through to end. >+ test.waitForExpectedEvents(function() >+ { >+ trimBuffered(test, mediaElement, sourceBuffer, 2.1, 2); >+ }); >+ >+ test.waitForExpectedEvents(function() >+ { >+ trimDuration(test, mediaElement, mediaSource, 2); >+ }); >+ >+ test.waitForExpectedEvents(function() >+ { >+ assert_equals(mediaElement.currentTime, 0); >+ test.expectEvent(mediaSource, "sourceended"); >+ test.expectEvent(mediaElement, "play"); >+ test.expectEvent(mediaElement, "ended"); >+ mediaSource.endOfStream(); >+ mediaElement.play(); >+ }); >+ >+ test.waitForExpectedEvents(function() { >+ test.done(); >+ }); >+} >+ >+function mediaSourceChangeTypeTest(metadataA, metadataB, description) >+{ >+ mediasource_test(function(test, mediaElement, mediaSource) >+ { >+ mediaElement.pause(); >+ mediaElement.addEventListener('error', test.unreached_func("Unexpected event 'error'")); >+ MediaSourceUtil.loadBinaryData(test, metadataA.url, function(dataA) { >+ MediaSourceUtil.loadBinaryData(test, metadataB.url, function(dataB) { >+ runChangeTypeTest(test, mediaElement, mediaSource, metadataA.type, dataA, metadataB.type, dataB); >+ }); >+ }); >+ }, description); >+} >+ >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype.html b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype.html >new file mode 100644 >index 0000000000000000000000000000000000000000..263dd82671650afc6d4456ed0aff2eb0ec543235 >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype.html >@@ -0,0 +1,149 @@ >+<!DOCTYPE html> >+<!-- Copyright © 2018 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> >+<html> >+ <head> >+ <meta charset="utf-8"> >+ <title>SourceBuffer.changeType() test cases.</title> >+ <script src="/resources/testharness.js"></script> >+ <script src="/resources/testharnessreport.js"></script> >+ <script src="mediasource-util.js"></script> >+ </head> >+ <body> >+ <div id="log"></div> >+ <script> >+mediasource_test(function(test, mediaElement, mediaSource) >+{ >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ >+ assert_throws(new TypeError(), function() >+ { >+ sourceBuffer.changeType(""); >+ }, "changeType"); >+ >+ test.done(); >+}, "Test changeType with an empty type."); >+ >+mediasource_test(function(test, mediaElement, mediaSource) >+{ >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ >+ mediaSource.removeSourceBuffer(sourceBuffer); >+ >+ assert_throws("InvalidStateError", function() >+ { >+ sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ }, "changeType"); >+ >+ test.done(); >+}, "Test changeType after SourceBuffer removed from mediaSource."); >+ >+mediasource_test(function(test, mediaElement, mediaSource) >+{ >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ sourceBuffer.appendBuffer(new Uint8Array(0)); >+ assert_true(sourceBuffer.updating, "Updating flag set when a buffer is appended."); >+ >+ assert_throws("InvalidStateError", function() >+ { >+ sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ }, "changeType"); >+ >+ test.done(); >+}, "Test changeType while update pending."); >+ >+mediasource_test(function(test, mediaElement, mediaSource) >+{ >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ >+ var unsupported_type = null; >+ assert_false(MediaSource.isTypeSupported(unsupported_type), "null MIME type is not expected to be supported."); >+ >+ assert_throws("NotSupportedError", function() >+ { >+ sourceBuffer.changeType(unsupported_type); >+ }, "changeType"); >+ >+ test.done(); >+}, "Test changeType with null type."); >+ >+mediasource_test(function(test, mediaElement, mediaSource) >+{ >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ >+ var unsupported_type = 'invalidType'; >+ assert_false(MediaSource.isTypeSupported(unsupported_type), unsupported_type + " is not expected to be supported."); >+ >+ assert_throws("NotSupportedError", function() >+ { >+ sourceBuffer.changeType(unsupported_type); >+ }, "changeType"); >+ >+ test.done(); >+}, "Test changeType with unsupported type."); >+ >+mediasource_testafterdataloaded(function(test, mediaElement, mediaSource, segmentInfo, sourceBuffer, mediaData) >+{ >+ test.expectEvent(sourceBuffer, "updatestart"); >+ test.expectEvent(sourceBuffer, "update"); >+ test.expectEvent(sourceBuffer, "updateend"); >+ sourceBuffer.appendBuffer(mediaData); >+ >+ test.waitForExpectedEvents(function() >+ { >+ mediaSource.endOfStream(); >+ assert_equals(mediaSource.readyState, "ended"); >+ >+ test.expectEvent(mediaSource, "sourceopen"); >+ sourceBuffer.changeType(MediaSourceUtil.AUDIO_VIDEO_TYPE); >+ assert_equals(mediaSource.readyState, "open"); >+ }); >+ >+ test.waitForExpectedEvents(function() >+ { >+ test.done(); >+ }); >+}, "Test changeType transitioning readyState from 'ended' to 'open'."); >+ >+mediasource_test(function(test, mediaElement, mediaSource) { >+ var sequenceType = "audio/aac"; >+ if (!MediaSource.isTypeSupported(sequenceType)) { >+ sequenceType = "audio/mpeg"; >+ assert_true(MediaSource.isTypeSupported(sequenceType), >+ "No bytestream that generates timestamps is supported, aborting test"); >+ } >+ >+ assert_not_equals(MediaSourceUtil.AUDIO_ONLY_TYPE, sequenceType, >+ "This test requires distinct audio-only types"); >+ >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE); >+ assert_equals(sourceBuffer.mode, "segments", >+ "None of the audioOnlyTypes in the test util generate timestamps, but mode is incorrectly set"); >+ >+ sourceBuffer.changeType(sequenceType); >+ assert_equals(sourceBuffer.mode, "sequence", >+ "Mode is not updated correctly for a bytestream that generates timestamps"); >+ >+ test.done(); >+}, "Test changeType sets mode to sequence for change to type that generates timestamps"); >+ >+mediasource_test(function(test, mediaElement, mediaSource) { >+ var sourceBuffer = mediaSource.addSourceBuffer(MediaSourceUtil.AUDIO_ONLY_TYPE); >+ >+ assert_equals(sourceBuffer.mode, "segments", >+ "None of the audioOnlyTypes in the test util generate timestamps, but mode is incorrectly set"); >+ sourceBuffer.changeType(MediaSourceUtil.AUDIO_ONLY_TYPE); >+ assert_equals(sourceBuffer.mode, "segments", >+ "Previous segments mode is not retained correctly for changeType to one that doesn't generate timestamps"); >+ >+ sourceBuffer.mode = "sequence"; >+ assert_equals(sourceBuffer.mode, "sequence", "mode should be sequence now"); >+ sourceBuffer.changeType(MediaSourceUtil.AUDIO_ONLY_TYPE); >+ assert_equals(sourceBuffer.mode, "sequence", >+ "Previous sequence mode is not retained correctly for changeType to one that doesn't generate timestamps"); >+ >+ test.done(); >+}, "Test changeType retains previous mode when changing to type that doesn't generate timestamps"); >+ >+ </script> >+ </body> >+</html> >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mp3/sound_5.mp3 b/LayoutTests/imported/w3c/web-platform-tests/media-source/mp3/sound_5.mp3 >new file mode 100644 >index 0000000000000000000000000000000000000000..bd202919899c5586a62790a11780649642447066 >GIT binary patch >literal 23442 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 > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/mp3/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/media-source/mp3/w3c-import.log >new file mode 100644 >index 0000000000000000000000000000000000000000..cd8b48a450204e8333648de8f4e21d70f815734d >--- /dev/null >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/mp3/w3c-import.log >@@ -0,0 +1,17 @@ >+The tests in this directory were imported from the W3C repository. >+Do NOT modify these tests directly in WebKit. >+Instead, create a pull request on the WPT github: >+ https://github.com/web-platform-tests/wpt >+ >+Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport >+ >+Do NOT modify or remove this file. >+ >+------------------------------------------------------------------------ >+Properties requiring vendor prefixes: >+None >+Property values requiring vendor prefixes: >+None >+------------------------------------------------------------------------ >+List of files: >+/LayoutTests/imported/w3c/web-platform-tests/media-source/mp3/sound_5.mp3 >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/media-source/w3c-import.log >index 92e0eaf13863fa5f00cd825ff6ae41193173a288..c1de6ed152f2a96da90125c37f1622f1a4756d60 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/media-source/w3c-import.log >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/w3c-import.log >@@ -1,7 +1,7 @@ > The tests in this directory were imported from the W3C repository. > Do NOT modify these tests directly in WebKit. > Instead, create a pull request on the WPT github: >- https://github.com/w3c/web-platform-tests >+ https://github.com/web-platform-tests/wpt > > Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport > >@@ -34,6 +34,9 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-attach-stops-delaying-load-event.html > /LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-avtracks.html > /LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-buffered.html >+/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play.html >+/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype-util.js >+/LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-changetype.html > /LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-closed.html > /LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-a-bitrate.html > /LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-av-audio-bitrate.html >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test-vp9.webm b/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test-vp9.webm >new file mode 100644 >index 0000000000000000000000000000000000000000..d63dfdaac71122eb5a392a9ca255e6c196c38e98 >GIT binary patch >literal 44353 >zcmd42Q;;rA(>8h!*4Vaf+qP}nwr$&<HMVWrvj%HyTmSQZ&%3|a|G_@r6<r;f-IbZw >zm6?4|5nWiKyTw3&{~7o~VSzwGFaON@Kv1EFKnS6r5O-4}TcPkkV4=`JU<~B|^M9At >zKq1Ozy9jX0c10^!g`i4SnkiQY9?5pa{G*|%)LJW72LTcPt0Jikng2(%`&Y$L?)uN$ >z>Z{BD2F?CA_Wv*M{~`8Ym`qe_4Z-k20<r<IGKOwutn73g%yf(l4C;daw=NPHA&@Wd >zKWzS!i2qvi*Zx;vTMGno9ti}>2?P+e<OI9gnS_O^>8mMl1_uHW9|VU0dyiY~{dX-? >zeGrg9XW(sCAn<>Z_}{0)&d&dp=#2aSD*?>M|0`jM7Ke+<3CoL!Dv5;u-^l*gj_-f% >zK#l)_^1rrZ|8LvOe^?s-!;+EVKa+vL#?r{m!GqS#f%AX;aQ%PyArdW)5K&bURFRaI >z6A4dYVBq@C#YD&O{|o>CU%1uvU&OzQPXYnOj&gwjKtPaWun++G7Va5^g9Had1pvk1 >zzmos*an=XFiR*-y{@2ew^!sLu5B<)Me(YO(=zDkKjc?~O7yIkxr4K*#n-21|_k<7s >zO^ba0JAUN#hkVN~C#h~u^ymCJU-T>WiqC)aLLX%7!{73{7rf#{pS;{#zGrV|?2nJV >z_tj4+Z+Y7n{fF?@o2=KB>}ua|cN;(dnm1nVrBCJ)R&cg+>0`X{Qje?q%t47)nnbtc >zl`jWSY5>6hfyBcRH!5n_PsWZdzr#QgYKqF2T69U=eedPjxXu<k`1-n^bVCGK^?RTF >z(=x_5*t^`yM>7nPy5yOSH)l@)v$2*zLbhPa1@u!@=`q}nqs|}=K>3QyB<dU=5j455 >zTI8W<qt%SD$C{l?>_~CDQ~Pq808{HZ73cN!F6Iq#qKw;f<MfK+i63_-#maBoFW+g# >z*{0#4K9qw$$eau^Zle8>aL=ESG+=Nt?J@4AHDd49s;+`8w#0=$iqt(zt!<=C$uf|8 >zt!za+7q(ZU1piD7^lFdin1uL&bvfyOT)bh=R4s>_1`e{HmofTGNW(-`yw@h5Qk_Ud >z`WG>#nm&WPYyHZzoe&T!?wdWyMB`XfKNg}7rfzGrQa##F8^#pfmYivj8OlcRVC=)A >zXh3oUF+}hILir>Z-s9Jpj_&AxonI>oB~b>4=@Jw6T{+ashk?I4&R68$Fr+O#R>z?3 >zfuk@ut~7ssRY#tq&HwOW{yF}LC+On<H#R-`1q%Yq452N`f9?2qbY6#92`Ujn2gk2y >zxbdM%8GhD5T9p_w6par>*P(D*y1!7J>m&O~Vl}V_p-<&O2*nu^+p8Fb-O0fY$#Eg7 >z0uPH70j%I|iKfBwJWRG_`tjNA(P@mT5>k84R+?=2hLt@`+&bx6fYQ!7J_Cm_u=Szl >zcL{o55v71~K!UYOSM@^}nNB&(qKWLMqV#t5s*$tL+9EZ+N3IYkw03CcR7pME^yUp{ >zcP!Mi+Ugfs6FFqpFthE4X8j83?KNqlt$AFm?z?O4Ru)@G?_A<<W;bZwDuZH=ZvH*z >z3Qw>SQ%tHnBC@@C$Yk~@vyX}i*L0H8zJoxWI_O1R;FA$fs9dXtYhvvGFmWPbMrN&E >z^Nv5fIl@aik~q~m=ZWQ~sEsk(a>N%I9=d9l0;i2E^VMi+AroevDJ-}mC;@66TQ$%r >z2)|SNJlYrMDtAA9<co8aGoIPS+7TC2b!p~7D@J2FzKP2sKEvNdRCNdPIY`<JvwM4{ >znsYEGj+=11@XpHI5f19pn>8O%dFs6QS8MX>E59+P<?1;`^fv+g^C@uL!CA>ty^O}2 >z9h^R=u~~1xO?tFLEy-gUWs+8<1$p-GBPlT6ur`=H)0p*}G>y9RC5=@hLm<o{X_tn@ >znX*_zr(hg(IErn{wIhfq(!hWio#V?%k_-md_^XG9=+>dMOS|a-#iI{z{h)AN&8LU- >z)~GOlxmXU6!e=e%$c+-(s%**f!V6iv4N)ddFCQmx`s7S{VXt_-vJ~h&#qGL-f%{%N >zC4?6mD_A<U*Op)g9*Z-%IE4a#>gOs|CTq&un2`a^v97LHYW;C7djA}fKKJ&N#6}g_ >z^u5sJHyyfM&|JIU*lq&6S9Qh8{t8G2cNIoY(+OHDnB9q`d<wPjva^rqz4++COtb6S >z!(N2`v9S7Q&A1P!+~M`)QZ6FljJ}jPL&P0j%)9-BVy2o0f;Hx%)96;%={ARr#bmn{ >zJBEYJT4;En18}W$ZG4}M#P)(x9wYSp+P@Oo0WtCvDzn5-f@3%(`aNAH-6@LM##HE2 >zHBVU?SaAZJ=D-|(b<J2P^5q4;f^Eq8sF$h|jDQ_amDanG7X%&I=3U8tNdZ%&l}H_T >zhYCfL??OpkX~Xu6-K|DGfDms8Yf9FI%#&yc`Jgf<V)2K5U+`1U<VC6wPj7*!vY^Lh >z8z4@2s`T#jcCN6(s_p*h7eywI2w`>^cD9Ph&+}X^XDnXf1!V<sxG~^Z>=%jsO7<O_ >ztkp4w$y?=KDV4@cI6~J@0!?XY>iqri*sfJlZ-UiIng~AiPn5#bf=_4qTT^13KUF2+ >z&y6WXV-|m&`EAs~D4>F;%c{j$*y}erLadj5*#`N4_R%W>hQY0~;U!j$#ojjB_&cL? >zpTej}mXoNz@_)f;8ANV<SF+#jq0Jqw3bDsA9&jPYVowZ(n5^qm7A8pu;t}3d_c^Ap >zmETHmS+)OsorxYZUoZ?)JL=a*v8#(OC_Lk<9;dMPg_Zd<QHFh%84rC%i>J5>iD)qP >z=evilLWx!+8t~<(+r4~9`KMB!oh*kJ=Jx82^^=#Z>*(=M3%LaF6X&0)U6^KVxEX%- >z1YrBbdgY8T6=MrMUzL>puIgvcihXSH7n<($cvIu)l7#Wnhd;cMlcNcxUuG6k{i(1T >zAQq#kk`dn+@46BKmN;lqHx%RNsjP8R3Q-+(d5Y{n2P~MNU8Ck)E%T4N>lI2(|7vIm >zmo>hEn|_KzMIQPR45^spD{CD+IDRa{f?~{taI~LFSbHg(Moa(x`m+54R63RO<h^j} >zL6GlUmvkLP2MJ#paH+jDX~^GUm={1vh&eVLksV%JXe7|4unI+a6D%Mnq{;7NDf-b8 >zILEWCW!X9bMK*CRrHURWJE!90Mrypc3lI$D<MOs%HKQmKtN#Q`c|HCRr>kWcEnD4M >zNimxIhK`V0@)?`LjeYA64nn!12CJxY19{5ci!@I~OgE)kz*k~9E5b=(2i38m<Z7GZ >z;}pzdE8$60P?eLceAd%|mH@gsP%lwLe5!Ls3GxxSOV+(@Ej>W*p~$Espg(JC_9hy} >zsERJSmJ5$h-4{AJsT}g6{8h5!sZ;%?;+w>Lk$N(7`aqN%hje!yhKInXyToLaq8>w5 >zLsD68Tmtnt1Tyj#$cY*&edZ?f=v15TKWqA<a|Lm4?74arXO(!pF8DOc^?If2Gm=<b >z@9cj?4>>i2&~Jq_YO+-O#KtRH-w|t86Y}k2dAuE?C%o%#T5Vm0@w%<-)R)K;_Dw5p >zsnn+B=?Fzv7{drW&Uy0dHFd0%GTCfqW1xJ?WvJANe6LQ7przn$ajbFk6}SD5btD11 >z%s1oMePea9WC0LiPz;dVJ6)C?9qqH*;HSw~40f0IfyHpNQ)4N2vKR2Y#3ly`J%P@N >zDpD}ihq7UIbGw$pH$6G*i)#%M)kjrOw*j;7cxvv{522E7L&ZBf?&?PIo35EWhi-;P >z^<nwGg$olfk{k?P*~#|qV3KN@1>b&yyq=a>F!fCrf7ZutMy1)c%tm=NB`VpBNDb%+ >zFRptRFv{}9QRn=J4U*H0Z<;&30xT~W^)TNOzzqr70fiPK4pVRJ_><R>U~)AQnyF&O >zI|;r1cqgGpOzMWbRr)i2A<4v;Mz|sngm6|!^dr)zW=-%bEQE)V^mk0hrFj;QCsmo@ >zXYyS6sim}A*N~fCOt9-7;0zx3k%ATL4#{Rl?u?Y0CPhL=NH9twCzQDaYPK^arV1Hu >zJ9WK)vTB!Zls(pZ2L6L)HVHA4&4&&*8~%63l_5~Q%kNqqd&Xb3<=nx~DKO2m>AWVI >zCIwT}vklb#a$+Q(a0QptfamJ5MpNlYhageS4r?H)Yd(jVS|e-3U-Ce>JMo26F8UW0 >ziC>#>XC!Bnb2e?jh^k(MArhxy&#fB>>ZuMG8`ELXGCkUE%CwuHb{d+Gw#j#?OcSk> >zKpPHcW*<nkT5ym+k8RT9lCSD^l|=;UCRCsUkeP6{R^KcQMr5oG_E%JqN9EU|V(MsZ >z_1tLAHR%M$#@oupbv>nRgyZbDBU*Q_qz{XD^rIsj#rEuf7e=|%j2xLftX?>UI2|wx >zwWGIp7*I^){4u5~9IBD~Mzsh^2wcYx>abvDPLWxK0~%GcRg*}Z2E7CLR2H+1Q*^MO >z@G4<6!F1ZA1Ku|pKSQAx>rulK4HKPGRYMh&p|MpWQLrf93PN<9oLk`;$5}eUYT1Oe >zYE9m}OiYo>PS42pd@)<pE+q(|i<AR3`pmFMaS+q2OJn2%b)tLz6jm^<=#5$m3jz5h >zF6|He3T(?^pq1k$*o0VHy7;LdG{IK&F(W~Cml^S|4eTy#YFMv&vdiq$>hoZe|3MR5 >zZ>Xq8twFkA73CYnQF7N&3szex-A)a{pL}7CVibNASKOBCHVC27U{Xq_G8AJ7k%r|i >zulf-Cw9B23L$3j@<W4iEO)14>?Rk&E6@1}8)nuRW2TJ2=1aC1FNWjC%x;ztnvx_i7 >z7K4eyKvClOQtc~G`^)TCEU-V(05R#x+hO-~G8i&dr|^#d%?ZQ^6O5EG5TVEiSK-Ww >zU!tJ{K?T^UgV9MAh1^AadrlzWBCF&c%TFc<5$eq_o`-IRye+pi_El7%T$W?73GM}B >zJZZhSxzb?qXs7TMXQ4Qq0JL26fbq)_CAu#y3g+PQEv~fZn_Z_F0iMk_Z-iJNpE-3& >zG4Qk0n&YrfZn@mY@<qtj!_zPiU)=?PsHBpqC3>C|b5XOWi95<AQ#F13kqy$O&9js} >zz8F}=4#7sx^)nkPk><~_w7CUo6AR&*Ng;$%v>i3?po(unE`Hrb6(F)VL|Wr?&FI_U >z33FGH5$ao=S?3O@VUOj@VO3^e3xwY9%@(hlnC0?>lWLK!9#@+0UIIrcyRLUqF)k_Z >zmln_C$enV~sRg!ioD9Y!WUQ`qab=dbHmc;evDu1OGrJy~TvjtPg?C_z7v3#MTsYMb >zDE#Sj_FY1(DyfD(aMe^Tn%&<@P80Hh(*W`ls6|Fkujeqw@P=6}Z3{{7`?+;o{yR3N >zNx-cjEoS?DGIh6shlE1~oFZ*JKu9Ru(-<2G#<(t}g^In)E2LiCm1_Ay-GlN}Ipwg^ >zYb=7sIR|Tt_%gGsX28NSh&W<WAd4#Q1>8UlgNX=9n8o2iNuAu+>~CzsvUvp+Uk%Ad >zi{WiXRrtP}Xg|lhbOSz_7Cvt$x8d{wku)ftv{$y!t*IiW;3htE^l7K$H}H(7v@>w1 >z{F~Pi&T{*STRTMWc+d{YXQUIC>Wm_eNcU>cDg-o+tK&swa2ATx({k9#FS^XJXjz?K >zNTV&7OW=<V8Xe$(d-S62@t93%dBCKLyH2c2?-@Z9h|p!#nM1^cqbyR0hV6XE1dta| >ztt`6_9451;4ZkcFWU_<!u9{)6t{CE06t?W&+aeF*lM9gwu@mNfVaI_0C(QaYju4vD >zBJ^@N6?SK$BQBDLlz5uF0%;9N>q+0tOzO_AtPA)CH^hkk#Of`i(4X#xH(4L9O#5>m >zKtnMc<DZg1A^R6X6BXyTA(O*b9*9V->8~NRdEIg&vLVBM)Exve*Cg{Fm=%HIGcOaG >z2F!C2#7RuW6GY<~ArH5CGe)WKNt{`79lLGf9W(pj%-(^Vu!!2Ck(=-fc|IYn#N;u^ >zhW5W-0^zJo3K*qyXYFU#2cvZHq!p`A6*JNfKVXpJ5OI}9p+;Q6BVaMTj7mUeM=*-m >zX+Y85+#SKzVSYo#`zTg;NGmz@nh2!Eg|}iu%S`c8xg^{6nlU$iWVe2Z{uBPGJI;+k >zu<yz=KS$|uMPJcovYHOPP2*B?!i&?UL-Io#=Eg9mEg29Xi<@JbGmngBOQM0OgRre7 >zPg^&`WV5okOOT?Dblfw}H)2lP#4=BEcxo=iGLh4FOZs97n}<I!E;6S!g%#{1dmBK! >zP=q?=ztnuq7zUy>XmqJPxVem=_uL|;6JQ)u){O4i*7k+aO)1@ClgI@+TX1-$J1R`c >zs5b3F)d+1Ypq<9<(or_VnB@HHj#2sR`2>>&+))|23C;VH$Z+pHyDZn+Qy$Y5ucZ!m >zHn)CdZRB?CDcQ)IIZbUwE{S(~BWt&f0c2EFMd=gcJrONfpx$+czNw+=9ijF8(HGB7 >ztmBa%G>dVv5%dm^{Ij<=c1(=dD=PyG?Xl>uX9X=@G$op`r>O`IyKqz?f;d30cwd(r >zz*Y{{RVAp0uePGqI$|g;F4#vg!|+=uRF$Y+hDf$2?1iJkpXKByPDgS%uI_N(c#VUp >zok68wn+)(Q=b4TJ1b!%2L6%pq7?t2{4a?a-;Y{F=%<0cKCwS7^Htp02v3SC8?a|4t >zybG0AqxMMxm;*svo^e#q6}^edmgyAG3a8zTmGatMcq)PYf-f;cJ;{6KY$a(|rs814 >zMg+gF-wq|0JN&eNM#dq#_OhtncNSV<Akr+#@jY`Iq!a5xm+G;;3Zp!t#;Hy8Js|zW >z1|xl$;emquC9It3M8Ma54%ty%aIEo9#ToFsP<c`efLX#Ue)PF(s2tangn?S9FiaMU >zv0>pb47mD!@ntxmk+V|&;VIe<C&6`u`C%5#MW02R_h$f?)I38!FXxJd#0r7ni(r*1 >zelRwn{VSM_;ACwkz8KU{=}Q-E(-B{k9g>EFqPZc5%sOE6l|@8p<|%_ZuKjM&ELNOk >zE45^xKeEIy1ogfg64n>$L|{*=6bn68@9(yrc4`w5=+q2a+$`FH7^;8*wiXOKB3Vg& >zDYgK6j^P&wlvjOzfmTQbLk);H_Yds(h%?;cen*zML|(=wYp!d`dYii<QTbJ=LbT8X >zq|{eQNBd|NAW#ke>t)uN$i!WIPu?rxc>A7D3wyxMaBlb_oTIx}r38KC1nPl(XKD&% >z0I8d^!Y*B=`s3bYHd5%Kz0e$ZTGYYVT%HJ5^6Y(#qJATI0M;%PQ=z0Wt?PRT?05|) >zb{FBY>%8-lT#l;#tTIv9)VdBJM0x#mO&hmV*DgV&xM){7DQMk$RHU<R?<|DPbj<Cv >zL-nGd&wz&xN;MGqF<_VpO0k-}^z}+crK{DB*6P9Aad@t|!5_{$G)o%zbey9^t}!C% >z6)yhtE_H>QaKXNcY+6JhL)qWuJwMd6S=ePZCuxpWdPQ_)gK2Pu+I!RQiljv`KH0vh >zf1u4g+tq=Oe3c>Carr4xgfZhtIQdeHwf|ZAOT(po>ftXrwC||GtGbOY4HSCpxtp7; >zIXFljiV4BhoDSh!>Z?F+<u992Zqv|2(sP^oXZsYA+wtx3gD&>Vs49^m1)jkYN`S@S >zx_RXj5|Z<H(VuHl_!W9*wvMqzJy)Izr;w7?P-+iXh4;adMmhg`rp+#99oRiO1I+qb >zSsJ<(m56!1mKp65-Aj5tJLVQa0f}>7)}XSshkkSN25qGFv17#-|NTQh?h%URZ!J%o >zwX*GCJ&ydM7Z#@5vH<u2*9W2*cE)<(4Ye1PrA&%)xkmMAhTuLaTWfL{;Sje+k|2s9 >zCcpfx5N+B*g+za24i(Y42dS!;;*v*SCwMh*%Re#;F>+iHwGbGx7TE2qYJ)8^V1Qx~ >zN8q-?VE>o?n?G-4MnN^JE!rN{)|KQ7j59^TM}N1eBY7~*M&@{OpD1*H%LYX@VX6VA >zk6FW|R~tkz)7ZDxz|LNh0}?*N-3NXbSQldqZTP8}o4X|X<v`w$OMHa30HeFHJ4a$+ >zD)UGrBpb{QymVu{<fgzc-P55E4wMn%he-I3MZB;i!#@Xm{d~IoT#Fs$6h86xc2)J^ >zQa`Ml9Y9oNNH>R9QgJ;p+9;H@;Q#vTRBw+yBnpXMIHb_O=_Ic;cFCH<b`C?FlDaXx >zoKZ?yGsGn*kWnt1>a39P8k)akZlsrQr;3PHMJqQPe^1*|w8E(#fPidUYjYYPC*)(1 >zmT;LkLi92Gf?1*%n!3f%d`M1fS}3|s%&gAltZLyx(52n@9@}L5*Ndyy3KP6V1PwUt >z4?YXA3B3QXIR`^K=6Z!B3f->hgU%=YUpHOZHUNi${`;fSuu)-xoT;~wZ5E-W$kdxm >z7~#`lA}iEd*c1&wUlv_t0S_%2c?e3Ni&0rJf@lW@p5ATfXO0INUE^q}VJND!RGiNv >znl(l_%XiG%++#a5LF{);Lwu=GUTFDb(&nlnnOVKZXB&jOe!R#TV@u7P*L3h_gIFKZ >zfTu-(5v0fFw2BW8lOja--O)7PEu_dI8VyWro4jg~UyP!j<6;Z+*ctmeRv<zJNw^k^ >zY1}PJ1EvOvYGB|vmnKXW%5so#y`VpVEqJN-J3dWUPlddEc#G$&Z!Uo#bnt@O6(~aU >zP;y<TZf1EgWmlxYwQ6=<sU#6S5*-n7_LB<$1hnQ2tuwrEbCtI+a+{vJ!T8pSeHZrf >zH^<Iu-M0dF{LaY2LH$@12jUbk<O)^Fj?{ig;tR|?^Pc7PCKZYv+2Xn;fWtX)+AvNb >zKK;q$y?uzTAo+~c*=e&o?-rRy+}%!q8ouEdJ~LBPOs^NJ>yBN+**+kym47r5r~Xrx >zmf3E5N$-#&;`w9+gXymT-}8x!88hv<@-iYKM+Yw8`^dt$#j-nnPHw_owVQYeEKr@F >z1CcAA8-UBQNM2fEyl>Bi?BU^RNiQt4;&EIx3dwQuhGqo;m8+NP+Ix6iXBpPdgtEhy >zu*BWa0XHDiF<a+TT~|%4i(JJVv|!8%9=qM6E|Z18nm9U&2V_60*7MHJrFjufW|=K~ >z1lnfFukAdSJ;rZHrF+5jXM&rCxT+pI@EC9aJl+{jAE#`ef87jx(g_Urf#B#0e3h!W >zecTF<<rHT|1}wR|kOe_Z6?%#LfyKZ|a`~k6q79NT{N&GOV!PFAwvXjp<!TWhmPbbb >z#$pd8ZzY@=-U->V?z`$K(08b!BG##N!FoxJUmX<57Cg!il{N#S6##|?ky5>fj~$w+ >zz#`016?a!DxQ!WCyloZ}k!B!*M%(y1*q=IinH!}!$hjKgT12S&xuuShF#NlJr0F-g >ztbx{P5E80FP6q{buE<d!m!IjZF%yMtJX9LtRAxNA^N5E_Au~YE8~h?VVpB9cD7%n+ >z5EqJQv+vk@$kb85>-p+9XBIPfxHQGREvV~}ktA$vmCLl7NBGR^{Hg=8Ns@(|QCE@h >zQOMSbOPp1au62qSb;1sMeuy4PJ)V9!@8(B0hXya%xBLFXX!M+yf9=G|v3~xQ4Un#D >z=PZ`9;aw@j5+=(IO%D<eY&1PUER$L06@lY^t`dlf{V-)OJfv5A4A~yd0UYq^N@*;# >z#5ddvyQ^YxI$>F>4w9T1z&x=RKQ_s;^6k3};bE1KPVec2`;JiEC{SG+KwvICjwyLn >zF7Cw9ZlRSkuf3=L_aG#M2YiF3)AK#1Oq4Qd{_dVnWn=0yr?bMS;*X=g%u3Z7a3~Aw >z>ESO!Wlxc+fYS1q%%S`SR4u13^gdv(ym9Q2nb2A6_n*?Em*mm+9%W(ny+*P1^|)(2 >zuZz!{_nsw?w`iw(UpLSRv1Fs&>SNGnOL(5`ke4sbP%_%<U(BQqcT({q{y`!QR_l47 >z`9wc?2b%aLwW)<#oceEm_Nl8s`s|D)^_ibtff0_ZXWgq$5?Anz=@p>->hjz~#3@LT >z@3x3i7dkd$0*ze6c9>#}r>k%(;U0!1{ss!^5aZhOVbiuP-3!r#N&6$#Mgo{O;uM-h >z9zaS9hGUF&%~(a)K6OK^IT9AcN3$NNdXW{mP)B86=+u@{*=8rbp=+mAY8r7F9WC~E >zOwEu~{GUuYo3$4?KU~oi70$>KDsd~Q&-`m^aw%`iWW#oSLDykq3#5&9(^u*8_E+mg >zA!AQ}{j6}W9%II8D+y+hw@x(9j}3r~fU-dwN)nQas=7?K#8XA040pn+maxn<tUELI >ztx8Q|pvE3)o4XhPtdVi84vAy~o1EPRytaOCkB{@8UKR#P*ZY7|tBW8%bQXOZ9iD$> >z9`UxLRzU>>wWdDP$5-zErMPNFyo6j~u7^t_(M3|Jtgs69R)xIb13`Ma&=IN1+3Sol >zBh1bhXY62-94sOB<Qi#NDq5Vq^WzZC+tR!gwC=O6;=QLqUuPJhl`wOV{chpTx`P;- >zq>e2O|AisWStVdN`Q{Irx^RKuA8YI^<#!D)u0AfOyWs#i*#50>Q&TxX412OFQ5IT% >zdf9`8+?<#Ams2P<-WOn~6L(!Aak!NN|8qCqQcX^Ew*j_GqszEB1~k){x>Py>yC>&9 >z=xl&@FgRlwN+6$Be}_xz_ML`?TH4G9MFc5z#*KG|h_l&ZU{`?2v8n2~*{@n;gi$7$ >z`HIL#IP!~wk~5z*n?X;my`G|@aoo_`+;!!}Qk!pJdI+JNjq-fo7>RM?o0vH5PHc3Y >zx%MF%AXL;iJV`#^N?iS6)c3d*I%BmPVWx%<m-Jw?bNS;#!8Sp+J<YWr5zgF4Th7W- >zc{4rd3uyvw@?#iB>y`h)8~8oQgUaQ>8blhgqX~0kJK@e1*ClR=WwyvXlD#l+d1V#b >z4_AR!v~uAFCS?r1s-(#Fq`XQ#abdOc<aVf%E%buGF-}?voob}whmvi*`Pb-hlw)R- >zhJYC7Hl0&1)rP=Ei1ud8<^d0rwH+CiADG^MNlXPcwXmr&%*-ydTX(tUBF2u)n!*r* >zgoT*Ca(!9dGhb;S1Gup5Xx#OJe#-h`q&Sr2HN!O2)OgPOY6uMa*-GwOdrg%|G{pO_ >zyrxWIzns%$v7lbdCx`_)0Z~Wb=dIA~sw9O`X7?V3Xp>z-amF3w1vCEUb2+$hYCVXH >zaOX0maGt$x@|z{uil|@Su~x;p806Sq2n{L+Z}qC!(N#A<iBW(tk;FWfgX2|~0k?_5 >zw)~aW{sNWr%}T4rJovQ_5x>RLP9#w=5SmubT<F$f>UFwq4`9mw3j~df6ft`N{zVt= >zyXrD@bKi~x5w2a4Cc{o|;u5H!eTX94ee<YIRxs+Ilm&sL8&S+6RcWptQyHlWl6iv8 >z2n@$OjO30y0!z1?+|`2_ORL_xl6GegNZ-%RW6+_ig_Y=B91AlaeLj#)WWvV|Yrgpe >zjI$`?i!tkvLc|<uEU<C=EXu6ndBFTrGX7c_8|Bg2Ii^YAM~9rcKB25#Jyev&S*sar >zDn{*jA3phGK<hE|XQ`hKHtH&}`mV|CS>5Tk=@BYoxqvhSIlBs<R(vT1(RvJE@J};a >zbAn1HZAhVyMl`Ic(GPy^l~#@k;SEgFvgL3wuo{UrD>&32B5ofaJb%|;l)<iCe{LSY >zx^c_ET?P?w#h91lEm~3_<`k-TXw+TT%ij*%SKGKKeOwD3<=XS&*^&<EH^HyL3P^+` >z2$hsBdiE;UnCfVruN=WUd=xSBJBRc8cHXJiU<uH*Q3Gd>#_A;w8MPzUo{do!31~6R >zJ#LS-RR2`-DoNvlTrZkj;1|9@r;;4P%fp2rS!*hkAGOW4yD-@_1j?}Xk!c?Pp(fMt >zMNRcX@+g&o8{7@Uy$-519W1!rNj0dVA6oE|!VL)Q*9hHlAj6f_<G5g0O22XB$wHwQ >z+zfA(9>Y6g%ghtz?}Ya8OM<IQ!TMnKR?vS$IJGSn^wIKM-WT2zIEmNTZJvj#pZOi- >z)YBhQu2sHMiv)p1_KP6dm|5Mh_Qrj;2u^qb+cnt^l2j!?s(aO)=N|4XKlWqwm}K*z >z`mTS7&M$MBEb0O^fNSk<vFnm#R6W*d%eP|DWx5S6ByPhml{f&A6C<8%L8Wq|Gd^1z >z)93d~;GB&;xd)mhq0HUcufG!~Qms3Cbj(Z%pfoc^SMps`9?{x2Fq?WAIod%)JkoC1 >zD60Io1n(*F5e|@>u3OgEAM~l+lCQ#%TWuN_o{%a`jPpn7=oN2Ah$pn!z3Qc!C7A{I >zVYdnwJ==$4J>bdmYu;vK=IX!X`C!$VkmbxQFuhR6;%0lN5%Q0t^3hj2z><@b<iIm* >zuRG#%5QNG$&UUK=CKju<c{*l3#Mhzr9Os>FZk}`Zs3j$m=YB*3jdUGuyZd9nuF5jS >z&1BqpQE5XyM}klqWZJ<9^=W0;erl(Cbw%Wcu8gU`l30@{_o_{?zm^GYid%uHtZDA` >zd|sJ@lJcye;Su1!c-%tF_K<$6?beJ<pzvAsq71frLO)y2duolJ@wp63o5GHHd$rIk >zz<LWqU0GA_L*h3j>%A119ufs3*r@B~Ltti9Unk!fn>u9JV>W;6D`N5uf!2Zw(Hc=4 >zH&6sKmyKNxJ-4-4YFnua2a1w5U$k8jW<xGIAc5&`bkd;9>65bv-ZddZ)HlmwaQeUU >z1J2Py`BX=sC=H8#gAp%mkb6pHUT`MCdUK?dp;bU?*NSb)w#lX#ekkQMT*s&qNB&yc >zH%6>v*hw$x??>ERvJKxoWZ&(!G5^f2W>WX6@7YZOkc)fA)}%Om&Q!MgAS#%xQkS+a >z%k5?>dGaqEPx)pg?~T9B&24}VMS?`N$Vj?%r_rFC&%(=0CQW<$#W=lnnTrs;XYHz= >zn9e2~ppV@TpO&M}JpY~^!Cb|+bZ1}LCK#N9%w_u9^O(U(3DdEJ2K5?o9!^wKAmI@z >z4O515av<h8pSs9u6wSPY5k+(H39K^M6}xX$0N^uo<ciT(aoua(yaHi{q&uVtR{+Iu >zI!T{mJ|^23%SRoxx{=a#QbdJlb0`xk9bXm|vp+vf4o$6etb!NP*bmYE0WUh-Gh;>h >zeJ{v()u*z3m;{H3C{yy59)*{o0GB@$a{=LzPUpPf_U;jmdIYhqHBLcN_n@)A;;uA} >z6;asYTYdtZ+#v|uYaEW8S0-38(%+yOLvg(A-ngrgEeZ87FuAOmwnvQeIXFrSozQ62 >zj)icrh)h+~A(ogU^Oyhl@1Pa}L4(UmYpHlA)HeUP*t(rl3o;dY4SzR>Piz{O8!2p= >z@tfBIb=nyTQh%K|!rWF>R>60Y1n3da&g+BXNqOXjJp&ubcU|Tt_>K|$<-k}Wjccb& >z)3#z&=hg-zGPrqa4TXEfJ0}I{l9Lo-kly-6dQ6@k?fTe@qla_!J-Gh5jf4I#k|g`j >zo#Gc$&JEf{>1y{`tu0O6+y|JaPwGb;EZzXm@-whw)d3SOQ}jo>wENu9k+?VHyGf*I >zNPSs)ZNq+h6LkHYx4$s2os<M`Tkcg?c|32_&pKIi%<piu<7J%NDudY}b@-!(MN>** >z&fO1!SV?ylA`ie^l8HkQ88wfdSOVUwS72`lsLrw<I0H<Jn8${+`&it<X-I-zQsK-~ >zzlZ?r3cLR6HlHAimAK$l$SbX<LcSiOe?}-}&Tid{2`q`9r+Fh<ROe1PgJmIR!%6@G >zR5656<F`xJBQ9ozc3At*o&)e%f1gC{d`UH2mTrP)U{bFWj{lGwwP+4m)%y<Z6SL(d >zWTqg($<}cOGqOo;^8(}6<_q3R(1<q6G5DfgjX{lwnBC;6*$ZZz_v^$`Rp8#7>N%q` >z*zwp(7CX3su<KFL09~uZ|M(4=sa5=quVX8E4lKD-R}rgq13%sWduzBG{)vrQ9h2s? >zIrlNC>p$%|c8iD;8(NxW2>~zkX>yiSVC>hp`|U2_n0A20NloNPt0#XdZJTv+<7jFO >z^`Pm%@UeTu#ZD|>qT-E-N-GX3!@F&Bz~kcQ%~0#4OdUN?or^hF_$i_L`_!S<J1Y)8 >z$hS1GFleAqPRIV0+b({Lz@(kCDQvuG*J;98;4MWbC<$&UA+*vTC0f0fQhx>vs4%7U >zvxDrXrd2rNk(9E#>^)MFmHHZ29lFc8*oo}j8^fmmI*NhAgTkl9XuBR#9$2+CY~eB! >z6JuG=q`)<5ib~_geljt#RLE`Gfg^8fJ>jM*1^mwBvp{kk^08O=ryxUYe1PZzB<Fh^ >z!ObL9U2(B~3wZx7ZL(%M?<G)TauXeQV84ja_Dd>ZeZ|JM7jL=F2*Ulb&zJm0L5>sa >zcNITl?;%p?fRseM-XEeW0P^HA-K(`r2dzmDd|n9GVZkY*rGJjlw#TG0WnAQAL!blH >z?LqgMeshxh*_-5Cbl2(ht@|F><ius2XwG3Ud?dWV;}NGcn=G7$;m3dwwmpxeVq`He >zY{Eg>4C-h^;hIvfH)Axx&4b(2_R>-X^}?i*S`i=f?@>3a{dZ1AfiMOFkL@xP$Umw% >z<YwAHEE@L>1s@7u=owU7>alu#d1ZLVNaM;I{a_Al-w>qsg{z7qfR{WEVRn+3(cXJh >zm-fxe@V&|W%_~{Np#^4=-}+Q`AfGiW#C#sQmC%@pf1Yr7Mxn^^f<jZ_=KA5?GCqFw >zTy@V{p=PV-y_*J~Q=)_4j~*PX8c>1TzyxMc#&Ahv<o$GG6r5dGh}c8s*#PgT5dB&% >zHesOsF-tyFjro{b#-g1xS`jsQG3_jOO4FBPK8==?F7MwQVQrlu)rq6b)*n8F+hYN@ >zf4in@keZX4WHRs0_|`ehH1~%%4<9m*89g2pc#y$ZQkgCm6f8fs#)8}t;Tq;~VsBZR >z_|2Q@!!UdyJrUFUqkHUUhXVONUvS?<xv^JoaOh~SA6*vfV>nB&zdedk38WY5r5HR` >zLx|`ljS!O(pkeq2S*h=dR3Y}*(%#x0VPtP@_^8Je+6e3Q%np=i9m#zm4VS7021?kQ >zT^e99u9NakMB*s=fbD~EMf*3*jml{BI+qi7(W1;$^g;F4J_b<}s};ix!zWAG9!d7# >ze$0eque`!YZMiVapS<f-(Wr(eb6%J&2$pQOWej%K<7B>Lf)Llj6@0c6+p+nk7o$?c >z5e-^$%iQ$Wa?fk}1T!_GU4cRvkux|^@A0$giZLJ^SGt_GL#kUa4bAcUa2)$((XyE{ >zYuMIsZnRxK|KW^|g}&6|eF<-dXv4G;{jLNfYTW41z%keoA1r#5pl7H*Z0;lV?a<Jk >zW$q+N3!;LCcGV!(^-H?Cb?Ol)P`fi`*c<H=oA$`L!c%jE+f|{vs)x<XBSzla$KqVR >z2i)aH_bt7K3zbSp3N>M%fxWjGVL>cV#%Mv$oswOrVzE8`3<+W|!OZ+yg|c^rGElAN >ztPyzIUaH8Jt;)1*6)CVw?!GF!5KvZzE#77HqwzJ?#F#XlO^j`=)OnWVpr(C}sQp$g >zU+>ECoJ1_cbM`&c#h*x!CpbCUtnI#&rS-nAJg#p#ZFl(a+Qirza{h4Faz$(K_bA~2 >zxCwFOs&`JR$Ost+oElvypcs#?5nZSo&b5uLFwN90n;%(a$)DAO&FnDnoFbBByg5pB >zk0J2piN15k=p{~NB7Pk*Q9$k*7k6C7dd~G)vjG9=Bk$l{a^-13ZD;5FD0i-XR(=zp >zZtB=+A|h){<NF-32+e@n14Xqt#RnT`oyHFB>=G5mhsq5)kQK!?#1ORLDp?!<T=w@$ >z%A>DQS6sIeQ6Tr&k$5kS4yD7dNp4-)Vax)wMtX^w6s-Kje957<x{~Y>QUL`o%4x6o >z`STlL3QEig9o>b<`BvRF{Dm*blT@feQR&%AH1hTZHIX{L;IDU=eY0MS$JC1*(C<(% >z86$qDW(Y3$;RQf7=O~Z<&GaA!U%oo9-NB`uKzO7@&pnuBZB!Mv!lev$O+3Q)Y{s!x >zfd^{bjw_tC6$-m@){R0-e_5+`XTqTs0z1lw;+&jMPFat(OR{poJw$?=EFj+Hlth9e >znz@vjTe<@)1e6m7LP+PZdC+ih=A-JJA)lm1led0a&&;n>CZJF=sdhKFHT1rk$_)3< >zZi?pvB91G?erTJnBC!H(j;cIXCRxDItEF~Nq*s@ckYz@z`Y)Pil=Q-E)A455`6aHU >z?(KKJPLksmGROCz!uX&=(mS8<Pmr3kD0t?($MWAY&|W^W%X$K0-A<_}Ta;Xa*E?~= >zbM!oU=-ZA_=1qdkemiW$K-gK}Yjpo?C*ujFDDnN==O|~8njDtS?dB;*MdKu8>KC~w >zr%}}22v}MokQJhCPF{H({2MsnO%=iBCP}M;*FF80?p7%81`cTsCyPvd-Cthzx6+P* >z6CRe!w(rdbBQ<iCBdZ}BXqwUTlAtAU{h*%Fu{`p~?I`igSZ1s-LCbNz9CI|qq|zf# >zU(^`1{FzO9@oX~Az$w#1&{@PZfiJ^Zi*P95*2J<NTxv9h29}4X?K8vcl)LdGNu1J- >z^2bUGeoyLQTg@Ui4oe&zcR!!Z)##qNO0*uoH*Fh>Y17X}q?U%5zr+k4du9UP&hf1~ >z?kOV`aFOxW*tNOG$3SkXw3evXC+U>O#Txyy`zu9-ZQft1EPw^wXQfper1hjkbgEEo >zq459q3z>$p73atDhl<;I$7?a5N8}Q#!+*{U8+YIj4(<03j7vmo)X#rLUvJ4Gh6hTe >znh{$AO#qOZ^F}Bj&rd1D<&HlgFj}A~B<pz&K=(l##kHKR!>ViGgKAbNwY76d{_X%v >zY%i<@_?LI*K1RAASb;)c=s}kl5QyE2!a^s|<F5~WO642ChS^T$AYdCXf1c+DDzLxy >z3eWnLWyFm91Zuy9^+7OjUawtC_-S2*z^<t=)Qz4bN}4)9g7&71uaj%FX3;JQpAh{v >zmGp5fdzf2Ia)Q?9Vt;#s4B*o2htfNxr-Qz&*yzmRTPf1mO|G%DXR2k^79^_TiX`}k >zml#-@)Iy8|IxK&EW=6;C&O;9cXO2Pwj#oj!)xChkMG0R+7)i;OvA>MuF|o{uX1@yo >zC0yg&cTg~$#sPQythEkWP<i!$EwCb7%DgJla{j&EB<*}QcY%r5InUJv1~L1J(N@CJ >z1B+CZ;X{sN?0R{I`bouITWrI8-PRnM6U8u5Gc@eo^P1IO4&1c7Um!VxO({IU2~~P_ >z5vXQ+V}O|uY+`tatEoT(gNVggT4Ij}2PhUw4FpgD!T<tE_l8sefP!1v%;rv=EBIRy >zt^^b^O(5I{0AMlZyR2?yLYv6Ug0z0_$PVF_z;x6(8312PuK$%H#ywqcZ98D`Yc4Oz >z0Cdej5-%=$Xc)N~lH=Oj%03H_pnr?Hk_EH078s#Yg`s+DlAoAW_>gus{;nSJMTpR` >z3OclW2<iaHji(DcT1~Qx`4W5(C&h3}@C}40R29iye%92@U;G-qY%~u0UZ<hPmsi^i >z6};Rj4`cGr`zu{_Qc@yu?hEDm5EA^=rVpw7lPOwtggw;02ubjh5XXY0%dGQ?*Cl+9 >zTFv(ojY;S~*^sO67|}z)Js{G6&nCipJ`;BXa-ozLddowaQwv%fDf~2YQie})&4CX_ >zzt^=g)uW$WjT2mI#+X0=6R|NJ?=h~su2?TKWY+!jbCRUbI(UTcYEBd>rmzij#&zR( >z%8{0<g4zP9kb@$yeD~(dtToyXi=b(!8?4jeKi{FY;Wtn9#5AJ}j7J0>Fr`?%G!-&X >z^@)BnUqVob_6#WBS(o`xVL_mr7f<=@Q<~gzSMw`O9BJ2v`U}&(7Lj(Vzt{Xo&Oxjh >zRM6=z8v8?tetdk)6ma4n%``sIFE-n<iIIE?V`jKn-DdoeHsS0l9>~^n9yE~KpcA%& >zb_y0C%=`8ABwy5u@oP73J|;HNd1wlas-G?=!LdCXQqU0d#8;v-B01DzeqJhs{kswh >z>?(87gU;xf>73K<el}57<FQD{v<Ge)TMZJ{Tw*%q{XHPUMqq!@=cen{7br}{I4${i >z6|SgSd@V}zZDU9c3;O<v;McUQ;2X%3Kd}iqu;vy52ib2+kV~}&_vgbys+Vk={wCTh >z{AO`;SOT0~5b4)rg<^s3K!Ec9^kq)9YCizP0RXW4ycqTz2l3_bmI-L8*I9v6{!DoB >zk8Y<nB$rt({8Bv-MF|v=Og@fZ0jlh1#(%Q-I}Qa4P$y3?)*yutv$7E}u7bN=;2T|w >z4>0=Mo!8-cDXrt|EjDBn@F##_MF39g)E<)Za!6R1116d~C3>_5D-q3yS8XjJ$!kY- >zE0QZ`?L%gF!9j(LPvv9Wr2=BPF+UAU-XT-r^V3wP_x^6u<V5}wbQP|5KcHA3A`syF >zFZ>+Ufd7GS1$7)k?YZ2PP~svquA9Q>=?mZ2t(T?I(o4b~^!-bI7EDja{FL?u%G$Q9 >zN+Emy8|0orc&~gdzf3sD;OrOzkDp~+X@&&<1^217Qfye>!rN_Bn(Ozmtn)Oy1>j(S >zYT$JPv5O0wSCIaVf}llm53HWqpjx0<peqni{_huFC<6e%{F6xw<*Cv1s+#W?xuOqz >zoSZ#luOycoVMFJy!{^@|Rd>k?!v#_J<UyL|2*kfR-CAwdc~deL_WM-My*WO)!vPgE >zC59yUI-C_*a9Qp?<u?K{o~<^sv1EF;>(%`9)eGcP@`_66)D|6(3#dSZ4f^p`e~LtZ >zHv=i>FPwq=4sQ0j_25JLV`y<?4~jM+Hv3CE;&;oF#J5Kv@0D-P<{h4@`5?28Z|p8a >z8K78TI}kAcZzAgz0|0RD?jNl^BI1f}Y%oRtw8Rm3MGQ<U@=75rHjk?Pw_T5qp8`1$ >z-tKXi%DWM5wK0781~^)rQ}L~T0_{@*bUEhkkJoNBg%@S(`j|l2w{+ysL?tiDU*67Z >zHqihsgOIU@T)9Cky*OEHmn!mayj^DyT5A~8kh+mZT2yZn8T|AuyYhGDSgIZM^5HG^ >z$0RvDvwLa48!1-CH+(ZLLAsYG?SWFb%cfXi67_84E}AedusXU$xpaN|>^tt@vM~0m >z8WA^NRlr~W6ovYDh2nqMz5iRAK*4~2Yr}s)YQ9}X;A`s`?Gi**tDoT!rMfxjeOKu2 >z;B73IPj8QT!&JmEA4<lsIQ5#{9qJI>4;re~^S37HH7{lcV&E=MFcszVm7oAnEO;6S >zMDjoG?-Dry00w_!Uw3YaX<ns&jvZPE$VHIE!?^VcE-H^#J?f_!*0T(VLVQ0eVtRmE >z1yFHH+~(#R!|>=sT<T#d=Uf%OU|Bx#yJ%!O5jbOvg>!`oBEU6D;AWO+ny}=F@k@zG >zzJ=Y>%-J8iRvzd5VPZ6!(v3uE#IoWH@tQbVu)jb~=D5mLeQNm-s@gf}^Ak(~h7Cvn >zs*<qeZ&`s}AB1DAhLRQ~GWm9-vx`0FQkUWv-fW60TZ9}!{EZ#s?o+K#C^HTf|1HT7 >z9oxGxn1I6@a8_+e7(be7XSgN>zz;tPGWrM?H%qWJR%MlSIoG^r;xz;S9N$EXP~DC( >zlw~Fs9^dAGb?x`G!@GtxIK0m_Aum@L(D1Z9*$l&v{|uzkE8co`vK75ziDN@uRG@s2 >z$%qE2W-6XQn@CWA8s}&(M}zG8c9EdEb$cD~r2Xok$zJkx-L$6LpL+d*sOCT6qz1YW >zFjyZNYA|iaW0wi`Qpp5C8<Xf-#wZ1y<nG<psA(Mf3fMFiAw@hDY%8-JS`QBZ1vQzw >zNzwkp?hdDL2=vV~7iZn!O&jjTZckRIbSuoAjt!}eXNcmh*SbeD-x)AK{Ma4e+ah;K >z4^6iu06V~OasN#8938y~C{~;Z1d{!?)B_v=z}^01_fPS6@AA=aU-D&-{@MHgoQZt* >zXTSc;r(XE(3-9Kqe)g%}`RT1I+w*R+-`XzwvR;3ZS6}?<1AF!5{^O!=-1E|>_~Z}& >z$H{-<rMGU=72iIA8?W-BcWKYn-!i2qSW~yU_Svqox7oda4?5UGgyT;4(F@1k0<lx~ >zc&}VXC9rZ;B|w?Z<Yp(@MDNV>y-&K&?u7DFf9$PK{O$|?)-V3gCm!>dkNm_N0N`Ib >z5?Y1THIkenQH}gF+SvX;mRwV)e6zi6qQ;!trAfT?)9gmfoJj;+<|VQUye`h_p@CYt >z3{I<edc7P*c7g|EZr$%&9k1H|9BCT)nppgz8%u*BkJMU_Kub~k?m0n3j6z?tXJiAA >zn*%qx!6*WiZa#e8@8DSNQbywyU?vbWx-^M`uzyn*Y#MrjsBwtfT=Bh_G`OV^-!M_v >z{~ZSjyxsJ2e2SCo(*1PbVDa5TYD(E4ldOnl!4=t`WY7eZ2&!T`QZo-<tjz{x`Iczo >zFY$$*$X7~j;~zuf@S7g_nE_al^K!0+D~PrCfU$IQU+ZW#5=QkGXEMu4=$0f-1z|&p >zRClHmu!D8`8lo3y)_gR6DOW#B2L|5527+ZGVj`K1HABz^6ia^7MiCq84WO$U3y+>> >zTP9<v--*XK!D50y4a1n%y0)}0)HITaZ1KC`_>~xqOm_3{C+tMj3=%X%HP)JHE-zLk >z=F4ZGQed1KZh*vigNzK4wjG??Hj{VjWW%-HcH=IHtN2p$?^1O7O4J3+?HfMx;7kv& >z#5CWDW#LVXordaT*$Pn2iDabx^OVdwGg-lDl3_ShtB78V`TKOX4GwTyUi!-|v>et+ >za>?D6zjpR?)vguMlbyr&BPvW;cg3>f;S04s$aXR~m~;DwTyyK72d&-$-2+#nkkfug >z^`9#CX)s|)k;P1kl=rpO(zqO({0ug{`f=0b{P%vD{->2;O5MpI7-I6=|NMXA$}Q&K >zFh~OIv|fWp+sz3h$Bq4^GSv>ci9W=hd>Puh)GBmhFspR#op(C9HgT_ob9IZp&@0O$ >zIn)r8ktY^+r96hzw}+j?;anjgm^I}H7Uru0sgcUoA(@Z(M)VXYnkuL8$ecfJVG3c< >z50j;^N3;(zC9;I`s!E?PZf=tO!6rr;HytNT3+VK8w%%?I&j4f-ir#cK;TmKGIJG?| >zhh$6`{Nl}9c&pL6np00XrFWdY?;R?Lty2DMXST2&k=FpJvEH!p*CnR+w+iL0;k|t* >zMLnT*H`VHE@HdHLGVqvr!z8E4455Fx0U5)VkbLmr-jpux)pq(j%wBZGF9HLFI#5bJ >zetG5LI2{u2ATafwxbsgV1IZ#zN}JxWhI~9MPcM}CQ6oOdYFkO&>^!8`=Djo^Q2;H; >zdb3?~FY*{npu~>D&PdTVv`mBYlmvxme91bV%~+#|lD#2QtVna3!mz;zrwf{DI{RFT >z6Zw1YP}@k2_wlgE4IY{~)-U>G*ljkQq1sS>Ra_Vdt^41aM2*h_Z)a4SFRzpF3jrx7 >z$J^;tlGqrFV^6{9*hK3bA8Yo~8EtI7d>p$0Y_%Xuv|=1W`8_&J!JztMwv1EG3vi;~ >z$)tF6ol~c^RiKwBLK}x5v(xr9PIOsy*r~Nj$kPw>jrmD~!0d^&B8h(e*)|0wLk1RV >zVLDq1y?|1}p?(R>K;9MNaj`w6!C?*l)1V3ZV6^8k=_WdUZS7N7mbgD+pIa2&Xr73C >z*4fqowh=HgpzJ)0G)+J=Rna)S+y5J6)R?R|$X1~@I-;SNN6-34b+0XV)enS#x?KBE >zdUAH#DX^U$yF;fn<cr{h&yJF}`T_xr+*CtD?)qd(Ju7d$3dB<jTvxr)K)Hu&maJ*a >z|NN3?=Ez6pl91p<DUSr33LwbB-;bVs<(0~Ht4gQ;=P)G;QmYZC`?Rn18>Q9=#=@qV >zm|G-OQd(W;T#PvQ{b7RLSCTXu9g9P<tHJ71`rI}mI^kl#4TMZBJ3-8E8p~vr+m#l? >z`=09muyhWJf$&fku5H`4ZQHgrwQbwBZEM<2ZQHiZ?e4#CklfrGoRfSZb^vGdoPHyP >zEKOdUCVA6R7M(if&2EGeE-5ZHs9IGU^XxyE=3wFV$*-;YW{*!+{SKY|_!mr6EsF^Z >z<LBR+no_Q7RTPOme-X--bi(gV`8PwIwN8YUVN!I22dIdxqDg!aa<H%C2y1$;u98fS >zGPr@Iq77P2Lb{1KQf^D_98flpPAk{*1n~1xs^KAS<0PfKg3H}co+P)uNixG`jk!%} >z@t~!8dt^qLNdDYq-2>rc?zB6+ff0v#t)m+7+@pVtblf26oMv&P^P+My=I7?jS`JW9 >z+G^)8ZH-Sg)_$Bs)S<UT;vu6yeRL#9V`9QAHcIDh@8ddkKTIDhE&|bJQ<K&=mzsL} >zD1#s0k;A$3vjaRpV7@<{UkhwDS80hW?^^jMp36H|s!E@H+Z;=VsMNWr(a9*^2%M&$ >z&@LXeCHTnQ3ANoX$Z)eE^<@C_-qZqu7z*^ZzOGD0QF?XRuXO*2f!V~Ef)QggAvvKt >z+mMRGw9qD5sit+g$hg&tU8;^XL0dPLJp40nqsYNrdZnG0t@W4y#mkc{3vW45?%_1_ >zl^GN!1c(uF!0%x=OWqc#>^*-=2un<lLjnw|Ve}DnC}cfnxa0z3JGi&<p;3!ED9SbP >z0aok)UWZMBKrYM5r)>jIuLfAbD9^UxuO(pt(IhiB$H3n(fQF<g_9qa90mlS(3KXz$ >zb5`H&7uvJ><Op&TV{H(53FTB6$dg;DWW$3p6ShCyTZ#WVehA*q;#);wj#GDJ(|OVu >zSb4$_Y#pEK1OhPYQc^1e7MO&v#+UaXYl(Wx^6HAu8X(AUhksQNYkv9LU=U%R163?B >z%zXhFrxfeQ&ZZC8?F*fQi_#R!0+oj|<vXjv*5##w*Y*eVt&)BTHp^Wp!d!F?J-~@b >zEoad}=GMkn&Ev&;+n75WK>X_0)JlN>DVRECzpI6wN6hvcgoqY({;ut(GWZ&E;c;6| >z4jnKH3oe-@r6S?#qH+j`#|vvf=@_MI?5hG*TJbAJ!usmloy!T7Cqc6sMUtB`9srjF >zg_@tyU;=qD&3c!#kbtk)@CBDJqPsJ$_6y&EL%Q?=@4TV}pUZ}4<{z|F9#^<fQW`n* >zzAsX8m_;|i%c5nBOsJ$ym(Pjuxs6ui>HNYuJE=NjbkqBISbUG5+j$B0ROm*>{J>Ck >zkI9B_El}b5g)rx$o7ZkGh87m64^2gjJgAX^{+a3JBY?y_qVA!t@<w1juPU~o4YT)> >zn(%Q`w!5u~#aI#H{2jBG+3?V{Rx6K$$?fP~%TJ}AiERbR=A5`aq@nzd2nBiU!juS> >zgVu#3(~zK#Hoyof?CH${BmKzG<+BHh)B;5|+avVkSr%%#WXBqgWuxKfe+lX~nk9TL >zh&AYLvA9J#aJWZoc!s)G1t|4rTJ_03P%*>ABHlnJj0$PC9WhkKGMK0lg`OQgXjB16 >z*;nD#xWt|~75Ilcm5|@!&nc?c%h|1o24@qsG6{Pob92ctobs<=eMuqTvj*OWtzu{h >zun`=Dmz#g1`Mo@%PR4ej^blaD{Y?M9D-7aO$7OB=sMWLehtNZ&Kd$u#{x#GhG+S?d >z(wF#I=;)gXMpT=g<1)l@T}2|!Mzo&m12?vA>xGTAs}sT`@zJ?Nt2}x=xvuS;pcnCm >z6Wu#%g8H}k9AI8)0*R@}85y>7NfMAzxl=8>RzZa*sh*PkH3r;m@oXs@awOSF*JW-S >z{HGTN+r9H@H0AK&wJ``Fxz@9m1n80kMwIEh2PQkQseG_v6OwwkL>#vPMR(mC(2(4_ >z6J9`ulGFjs3vv9%4ao0|BNM1W$sqib)q%enRx%xAM`rxC*?c-o(M^IRZ%ox|qBk<* >z*pq$7KS6NMQ3FLtk6R5Ll`!tL?Sjos>yGWCOA@!8a0+iY&NF1cHKfIY>@^tmR3jh8 >zyUI*yc<j8JoJI%ar~8|%GSJ)eFO&a%3iv=BomWnl{n9JFslIbE`pvi*S^i;X>@lAS >zI;>`!N?>h1%E%cJBNR1yu*RGdp6>9}t(}04M6MA&p6w~ZK^Zoj%Mk<CI{}>s4;ky8 >zy{`Q5$(JDuQi_i7a_xAQ5xWVuXxV2_suaoNQ_Fdm=~&hg5Ys@q^}_{@rZplDw{1#a >zr5PU&A?t=Kn>v)osj=mh5Xhu);VHN>qz>?TytaBO+pT0ySa449w!@1y&7Ma)Q3t8Z >zn^f+jgOZTu<SG8diB&nxIcks~*N~EY{TeJ2hLzb;sBUy|2~LTY!*`SO37~@#pNS`7 >zX>m1)Hm@D_4^?IZW2hwA(oOD6!o+b~frGr}V7CkB%1C~k6cvN?9z7Z9w_Efh0GgT* >zCV+bZ1xrmy((Tdf=gc;~p37r!BI=(Bk|$0t@){<<4*1}_eYoKRkYf1@^zw|}X=1e( >z^EKXMX-Tph8xjy?jM@eC6V3}lNjxWO81=*4_Gdt@Do<oX=6-Z`6wi@rDNyTPh&`Vv >zHx12TT}bS6ciGkpHb}#r=j*?Z)vfrNEVc?rZqirs+4H<km77}jeT+r30Sa<+=3Vet >zQ`?&(S@JKuQ=4`y>(l~9sjFB@=SZ}EQ+LgnVo)5KX^Nnhz98wfOb4gQae8ST?w*!` >z9)~`-L15cn$Af8CG)j)vj42QP3CQVk0z0E@1%#|1xihOD)((4wsw~fejITUAASpln >zUNC@|@}e5c>Jm)3d}@wB8Z{pc$WTIl`Grl~F$vJ)o8pEA<Hs{hiS!3$Qr}6RO>_Os >zSJ_y@q$IC?v~~^sY6fP94@#qS7Gj}bHyc!?<|Q}#84sWQ3H&F`+#WoRxZy8m5(Vmg >z&l~#BfEUr3Q_Lt#z$$*kNd3$}rZ;A`*q(=X8jfHf=_54jo~l|zs#O%ZTQ;jZO{I_& >z78>u-%MT=qZ;f}BUF6wug+&K_g?|xrRLWoo=)iNmIB98^0VanP^0dgT(J>*e_jwt~ >zUhkj;3-IM(S*`+z1FE7@<~jt=F54_0UNCC{{^6uc(K%!m^dc+k-OEXGaD)E|QBqi? >z;fhOc%%f}VnEMAEo(|4{8n>f`91YN(fjy#PONuqEF!FUT2h^FBHd^Y!&5cI@TQmgj >zW|-vaF=0)yn9ep?F6iTEHi|f;0=3x<5BO-93NKJ<{(WJD=j!Tq9}PsR0ww=%PSNf5 >z<0A_Um6Hda7gXm&n4pXXbK`=?h_xrW>_7`%yTVgz^_)#w>TeV;7&g%~cQ_PoAxsr_ >zqyiYPfpt0K#p6dLqngZAeurxr;WOZ8d0rwSNvB3su>_q%NG^ZmyHk!icA%!dB$LHM >zqkk(dkFmUEF!Vos|F@N&Fe04JY~|`1;e=Z}hEa(+m8m_)k-_xPskk6!n$yT(B^&&R >zWnjoB)d=k=>~NR2+bh?c^V~qjJ5ZuqZ_*iQ3SA)R&w{+D+FSxm{j+sq*&FiAX@b1= >z3VTeHkT4ui^0_{1#4{F!jymMgCFzQ#ES!;A(#wH3+hi~h4c8-VN|ndnl#Rron{6m7 >zkU|Rs1Y;c@dK?gHOq9w=>o*!+UW*}67R9X&MDwj)J4${UHzSUYH4?OdS`^$>Z|p#y >z!P~$leeX#;0@u$8Cd&&;kVuX0tG}5e@(y+St{LPgB|REHgXg?Y0yR!08na<f5L|dz >zhn_-YX~zGS)lfy@zPPb=7Z_*qi0}{B1>aRa@G$khbti`q(ij!Gu4EjmbT96t(W_@0 >z9@ry%7y@1ymXEOA;WhTdpKJIUux}=u!)7nBIMOjSns&F(+x^S0uSutQ5<0|_b{!93 >z;w#7r_-FC`U34Ow%D+J&kFtZfk9NB`7iRhf|6M@0!wNRIhC2j&7zOk@;llR}9nq_8 >zOIOQ86^_5POw^3#!XKL0@1y~;9@mOmD%{;j9RR<5bo_izuitv0|E04rAqj{T_B>k{ >zBnvE$o5p}Hr%`{$TglRjNFB{IL#F;CP=OfkALFm2eVonr{ESc}kQe~y_Met>XW$RO >z;3m8aYDaxZ%rXoBfa54&J6eY`(E~w<9&Sk5mT#gj<P>CLrpghf-_%3+5blHYD8xW@ >zJ%!bYc-)x_&{zE+AbCKm{=t>u+$Gss*cWu@NKG&asSdyn>iL}sup1Z6W<v&J{Z?|6 >znAicFWxCd0P`=r~c5d9TNHRYNU&bTzvv3hfP$ZZd09f$bsJ_H|K^_1A3fGX4&R3q! >z%6I@&^7eCM*lPgDFNAuf)bip8Rez2BzaVO3$nhMBz81{yi0#fkh@?(sL>Q}|nqJ<_ >zrAjac0E3<20}RXt>}}14jD&RQ3%sAstz1pbg%zXg@uJ-G&@U5MWfOK6+#8E2Bi@8x >ziO{&^wD6^tMnX^YXsFM$*rOu&u+s1vYgt9pblJRw#(c{)TErcw++NG<9X~77_>kN` >z8})%$Vf=x566e5&L`~I<hSNiSwmM(z8p8KqZbb$t_%lNBB(R$774sz4CtSyWh-{Dp >zPy&OXqaF2TE5;z-7@wr|O%;!ZqqpD`i_2;F(+7Gf=JAn*6BscS!le7b&9PLG8H?R7 >zMsf2dr!w9G!0sg3%#CZmjj1o+{ICl4YX$Q^f`o++NUTlHVU+PCg7$PH5GQFeqa2ib >zojX=M4qJ#fVR*xfE1J1nYrq=VA0V#eIw2oK6fh7vS_4FrtEB9yI?V**AzgC8IUmaN >zQXxUVl0U`3e~$d+{OnY`yh^Z(>Wc*G0szPVFIyZMOaK5d+&FH3<z2B`o7dJ$bkC#_ >zIS{Z+j8;D(fiNz}g^Z1GkyZgQ1C1G`qd#LgYC-1=kF#$R*h3^TY$<ai+S2&sRw`J5 >zsS?=>Q68zb7gbB({i6z=6kDR|BC|iRIdo{yHwwRJYC@U^WxDS=)htmk(!BX?QXJa5 >z8cMzo;PVS80PJreQzE?1?B-C@g|sGnsSA7!o#7aHgjW<9Bx0+9UroO)0Pyku^II1H >zfW%F{%{hMRx6$GVM?1K0nz)ykYd~&(gau}2K4ic{S&?|EMp4bre(w>5A6bO@&j>WK >zAzV67x|+_MY~&$gEP|5?uYaRQk^(3Y>yj)obm{8|4cN03d!nEfv0Q95zFR05jfDa? >zEnvm-G8tmPS;gmY&IzH@op`Toxw{I&!MQ0hwQkH6;_rlo78u)Y4#z(@_DI`OMXF5f >ztf1+t7?RMt@d4%0Reo)qga9DC|7-a@qS}9Yz1Tyh#|_u%-nY<N53FcsIDadeREM>K >zJ>(z)R;HQL@&uAR;kW-ke#b#;bjezH7PDF5Yq@Mz8pCwiKPy0`g^BfTYJ-T~Ny7HX >ze4K{!?<yT~alm~H;DHh^BX>&voEe}NaE88vaT;jE4Nn(KkmkIKICYAWOE{yB+DVXo >zzal?H0Fd~9(VUa@2f(nOn(_qz@DfU7;DW*iaEHLz1v_yw2rb&wGnBD=syPo8Dz6U7 >z%6VmRpbWv4)bSnf9$mosHY}1@UZV?aV$tA6o8RoA#ciq?XW=VYsm5fiCP#@TKtIT< >z8(U2RXwSKJ(7nh&eqI^*7mT$MK+~Hb@^3Et8A&hlUXr%qq3xDv<_I!q6w|%gY2*z_ >zn~#|+ZcP~v3EL1%O8(@HJ=)?_9=8NV3>V5`?8!}M-xg25G`esy)p-gB%v9BKg?5Lk >z{Eqa2NOnP4$*H3dnmF*H%10vzFlYp5EQj7&Xg%8Urpk}x_d2F)X)}F3?<bMfwQ+l0 >zMU5Q4wv_tL;2EZMOAjK87l3bCHCXVP--`M+t*TGqw7fgQui32@0OauB@B#i>VHR#E >zTER4RJ>D~S;p<-f($QDU_y;JDv9SOEzDs{s)9&X|kP0E2E{eK8qBDkDtQn%s>ppmY >zsKXY`x!Gn%cvtoSZOqPpLfhZ|DqJ|wQe%&H^Q>Y<u~N^8U>`DKAZDLBa>;X;2(r04 >zd>xWVS4rI^%pz7g>;X|Dk`H3{{Dj_pL0AQbwDKzuX16_n%EQrY(L3fgb6c}SIl#%S >z?n}`%)G!C#`F`3GpX*j7usJenIfdq9j(l=?CIsFr#IDA<acl$a`=1nzN=>RnS_tB# >zC11BGO^p?}%;gH|yWs4k)`mPr*8kzykq7=EXuo@}wwW6+?qjK^@nFF0&Ifg6yQZmo >z>Ryi6n&nFX-}T*Y!6_6E?i4w>{)eQ2!lWNBkwYT9ilB=BmFWn&O9VIP{06{h0Vsqa >z0CnPG{qns;aTK2Suibnso#6Fp$O7(I9|MlMgQFoaV$CxE2ud~=89^RA59cmX?^oPG >zBxz+A4N_DMFC8g+ncSi<b#s(f>@a$L`G{e#(yLrv!Q1k(YfRd?nVYKMc$Jv(ImEAE >z{P^+@GLaE)fH7M>C?YeConj??agB+q4T}_L^9braRn@C=g9+42f7RK9+E0|Rg9~4) >za0*A7<vwT_%kG6MJF+~?y>TqMp*GaDt(wY)I*D&y_eDe5S7A<hYFQOX^RmoPu%)}I >zqwTTweD-dc0gW;5Q!49>k!L<9<a1iarZ9oH(i+v9P=CI`1h^1L{N$Y|3b}Of8j^_X >z^9HSlR2v_P<NB?^<^Z6q|7x(|*IfHwkClV=V-x5tdW!|v>tEEzJjGsybSLZF<OaQ& >z!|rn#@^`w#@vtGk8NUTFVj6gHex>~*=kOphp#U<WCS@puQ92?)WLGnVK>UO^jjID> >zLtB{aNtg3zG7=pdo5&SHOClT56wqFFy*u$1o;H6vI!*}YiTI!1T2hv_Ks%7xV}wAt >zJQs!Bh`x$38@Orznr;S&fMQgmXXxuwIUu|kfj3>53207U0L_>1@b8tPBIgT*tlNaR >zPe6oM2`eH*`V9W34LsW|>i`=s08U5rK&>ONY4>TJ5fmqBUZ>FxI^Xcv4Tc@<$V5W1 >zUg>d3N6UK?c+k41m+T@**fn+UrtMX@@a2s6WkvagarZWaMoh$IwFI_@MUaUok{v32 >z@X>7oV6vjdz?j(rEQpi7zU$%ieLb%z0lJ1hq7{dE_&W`-jC0^r!o$)sMOH!_o^K<x >zLxRFwegi0fbBS~OmId<siRfExI<NWquIG1F5$^NPh))itBKuEt_nxw205-ozXu-6{ >zWoUkR%@Hs)s@`Sp{rj`hn~g(=hB^iSc^Xi+Uu*m%0BG?4r*oD6hRySbkjYVyc4`(< >z#9k`h0i(yfN-U5OrU7=O6bp^8wIG=6>VO!%N&-h1aowwB^6ak{Et_BZ5PTptEzE)n >z#fN6$=l2oQA{>QHt{LHOgWPlrfG&ot`Al#$PcyxiS#=c5a}yPSbrMBF6$Jea8XSsn >zf8(4^{^BwueT*U?>)ep!oae&)QNa@p_I);RvZ_KNA``~0s<;bc%Re&pdp_a}R&f=` >zK*o)fSA1mxwv1ZN7|a1bKxl>gijI)d1lMZf1K=a_=zm9F%Q<5(?9vn@XA-ppMFK+s >zK-d2zXoA9jJyi_zJ<&b`u|P7A^$EDOAxuUEP;-&2pOF*y8o;cXUbQ)(PF_Q4IaAod >za|MR-QaZXgX7Rp)B|yo&l)hywFwFffD^(dPl{hKX4JSRG<_i;BCC99k&G1c=_7}qV >z>E7e(HZ(It?PmsgA-SqeD6rxdjLO~Y?#8m4Pp+71gzRes%vT=dlrYAwn&!}MFLgk4 >z63Vr9T~zp(h82bvJgEqrCZhHLEaB`a7!wx9!Zrh87x=xv8vu;)|Ai*?zl&WyS2O^C >zqN&1?Fr=&Uh5l`BO}H7RPglyL8R#G3@r}&yJhymwqd!QudNI_-QOQGS1S>!!e&6S3 >zox_>fdln$XnHG#}9blZm5q9REd3i=dvsTw4S1(iSW<PNx^i_fzqtOG3@;t!6U-O|( >zPOPQ~wPHU9V^pJY*E1tWrZrBJWAGiAe(@Q^%?QSW=>8DvDY>F!@rW$S{hKCN_o)D< >zTr9+I{X6P6AX@oQ5@%1$xv3R&d)AY$@fNY%8cRLaj*L`(;yO9_ENuhAtA~4aj1AqZ >zoymr&)&}<%!h-n(0H|k}&#f|0n))p?!CCC1k=Cg4@9$k9*%4ZqprZ)-B`G&}Pe^z^ >zIGxzor<)bUD+T<G2?ypz_=0Q)SD3ir8It9D_o#p_ues`TiTz#Y1VsuI0l<R4G3-mc >zy~6<jB=FRG-&DM?ZNGBAIB>qn8_+dZG1ujGW8V5$!lG1{e#blKBriWbpZ#bnOhy;) >ze^d{7f9!BJ`gy;tTj}mdBxC4v@y_`@68KdO$|Txc+xipiPL-~M2E?SoA&sWy+T?Cm >zWAeF?c$02^j6TkVvs{(hIPVJ<e&~tg8(yO6_&8F~ZLALE<%Co5-7;YKxMA7dLUb6n >zM2T*E1JDE=h2cEa+%dMyC(Q?d4hi)X@GYO#Mq~SQ?pc)=z51395j7zG+Zvy<o1ddd >z`4l?~U89H|y4><|OGd2mofIMF!`CF*JlJnJN2pqBDYwE~SaSetMD&O-Aa0QM@icHk >z@2u7IWgY(mt{dL`Wn9VVfgn==d)M&~RH17Pyj(XcpC=@lgI6zgS;1%#|5ch?(k@As >z*=z?*&!1H!)--METo$`KbK_JvYN+iU?H=+mZdHTQjyUNFv>Uq=Nl$+4<UNjxTt=MM >zbwdAk!xi(8Pi&G{s!}%#-M*&M472hQyI`pUhgc5-bFlyLYuFcXC0SZs=hWDgAaHV2 >zn@rI29-aJBUXXh?Lp<$P3<xfiEc$s~bbt&ZUJSQ)wLJf_&cpc7RWOo}Ao_krZ<U5J >zo!mMf?^ENV*HElK?>YxXqejS%@?Z?l$j)~SYV-zf^ILOr?~hs^ChOU71J|-7!dqlD >zl1D@VmgH;&h>KK5#9M|-g6F7Ph?m1;ceaito#aDRZh^xiYi)|&&6?ePb=z#>pB~Pl >zu|lN{mtohFuDTne83CO<;8H!yf*QP|5-CK$%gh}a<Rb${(At8(v39oUPGtK!(N)K+ >z#v90UZ~1A|?_#P_gpvw>*uft{IPq}2ueMy^8MUQPCQ+rfmA*&|EqL#3I|o&b8I8BR >z0GXnrL^~>&NR>u(YY2ct1w7hU@K+*@kDd{FI|n#_L2+BXHwuwHQLD6zd-BH8eXH&q >zHohI@ygp?4R)~=~W%|0}cVXP;zwXP>vg=sVZW+>q9QT1|)rb>u$+q_4YnppB(M5hn >zgG-fp`;+RT*{Moe-CXD71J8Z)8?4+@^HBV|gGSxG_D56*Ev_GJ@GbwJ6^dq{Bh1eZ >zyAG|gn!L5dtrb5*54URaL%3m`P_b6P<`RtFN}ox}yl6BjUT5$CJUY2=uB70i`J-I% >zi)hnmr{vLP{gNN76C4a=t6!4!O4Ffs`f+`Z>9d>HdrSlE!=kM$ighJ>&7<K)m`?qR >zKd_8h1;6Igh-tDrvh4ZD#h%BsQ5NRaFxK$5?PsMkrTbhz@<T--519JaQstnmzO!HE >znsUmcN&f_#+&xCUANRQ8Jg1vYU}@-k5u*FRZU@ZzcuXzm@h_X46<$elf%%7v_6aP{ >zFEbCCL#A42<&yaCd_NzigUbwO7n}#CvT|1;<5{unwasK~w}zL4Cr(!Ut;L~U!d@e7 >zVws*1UmJ&L2f<1_F6z;-Vj_T6%hFz@<@g+bw1(@f@pc$+ihzMk{!f)t8<fuc@}hwX >zdY|8N)h>)!5{@CC2t~&OxwdWH+%Rr%A#&NWK&<&1wBSis_PFZ4og>Cutq)J~!s`r~ >z@{y8qrFC-?tkdCOX@cTkaIo1&gV6i-<c|#j5*yp&!hh@MB}RIk6|8_<JS8ec8?0}& >z4{|QL3}mhp6Tx=!?1Qx?vfn%HSfAE8ui_WY&L{gm=acXi*mydFP{-6iFPeM7`*G7j >zs%h;OQ3SD2B>1AuyPx78)cFp<2=Rh0NnoNp0Ga0i0C<tXFOXQG$QlW*haxBqdFP3T >zdMQ9MjrO{T3=~}557GUS^%CQMMd}{DY&cFeRIT(f5f?{I6gK`a#-ACs0zIRUjA`++ >zj&_3KvR*NP`$ZfNlAZAhPu;SDPXpnDo(Si(Lthbq`Gn2EHyGQ&1kC88p8+p!X|8!f >z-`Z}7Vq+WmNtmt0&N)sVikrrr8C%1dErB55VukhQlTah4-^j|akJCN|Fy5k2B4+BZ >zOx|wi2(Of6bF<Aoe)vGD-3m=2Rb+}&cHKT3Z|mY!mun&kHKIAtEkcVW=X$1lu6^*p >zA7tCZ`4Q+#x+C1Uk*~`ur={0;e1!Z_d|}>uV?^fv$M5uMcNZXiMVS2y6%Mfq>(^7= >zljo!YwVjyOj>~akYwk>P9lq7-t*3RHSP3qqrrdq>1bYF*-FS7Hh4EbjM;^j4xuR$m >zIT9PS_ZzB0_e1eeng%Ea`*F;Q<Bq3$rg%xaa!<_x-deQ7B?6V$be^^<IIBqe;v1y} >z8O-9(jm&GWLFmi0<;%zWcLps#>>@YaJvg;%Hz08HlKVrvHxctF(Na(j26x-wVP%HD >z=<-h?A$J+b(Ew!9zP5XogW7nYa(GdcWqRbuZM-}?@4(~oc;&B&sa%sS#ADJ+%PaQ- >z$|Ilh6tAUTuM$@<kEp*0($F@Od6PK4Z_KjWZ1{2lNK0f(0VSj2Vr0u#DN5!LA`hTz >zUhUs9Eoq<;DB$wb)(kgS?1lCiLF7j1EO0D)XSU=ztUx;)cMhYefyx}rr5^B&zwDRK >zWP2X<s{%S%orino<d;Xs3~dUn_x)douy>cPtiFc;Z=5%LIMJ{U8`hkC;<7=0Pk`x) >zs;x!czPz;?$k<bZ8kE=5SDK!)E!ifneH0!zMH!3_5@pQ)6tqB)PSt1E#r9|Ad-F#P >zx(9$>{<QIzs_t{$_9JSRASuOew5C4-vLqb$)1q#j8-qV9Q&7Odk_cH~(cltr>-V9K >zmY)XKrz8mtoS~pDks9-v1GxupPq4SvvYmPiNZ~YGTS4OwLrw`cauPk)qy5t*jYKX+ >zl=&+DBly69@6}b|_<o9tYd2jIg|bFT;2?oMq@*uz4whd*w*Zp&`A|q7BJP3HT5}Z< >z#2i>5D@LN#yde_@X@I4}CdP4MI!Fn_5sc^eC9^MCR_i_5Z__>~r$Wuh;4C?rU=amD >zxgq#9WK6<ynxWEghlHj|^%9`YgbrwqQ(NvorlpklDi}gEajuB87i9tpxl0-?o}#|` >zhN%%W>D^ID0p7h5V)q92um<>HV()_y4kfEL=_iW7g!gPd*~0Kjcc?!g6s5FOgC91) >zHaB8aRHC`>uWjfBc@DS+KSc%9LT|!*qXos+tdeRsG4#VA<F}R5{!y}FZ?z^6f<Ds0 >zJ5guI%=MBdB9rBQR3l3vp%+xgRQ8%k{)%hM+d=3j?GSs4WuJgxiX2FiB@1>{N1@h} >zbxrF8#*mV7$+sYNHP_Ba!7FU0FLuF_vRjh_Tuy4oU%Ur{$ni1PcPsN3wv<@aG}oh` >zt7D{%vKtkbRU-bYxT_|}l@S^)!>;D#JCs=!8%(dfo1_{+`tTwA7HCu`<W$3xuepJ^ >z{)otJ)I5!=p&mW(S{t=@A{gGk3HH{jISy7tZKS3rchw%F44$T80*@HH5MDgq*#mlp >zY!ohf_WUOes&YiDh(3S<y|EL>dI{9EF4s{6+jZv%(`Gqehh4}283GxPi>7C_i+2O6 >zxL-G_@cDi+O?k0>MXgK^objhGT6px5#6ZW06t)}MEN2tEb9RQ7Xpt{p0}B{oNfIB8 >z8*C+FK$-I+jtV%pS*OCw;UaUqg=}f0IW1seWPm`RbOQNIiUh~p|LpmZwH~9l%Q!o0 >zMu$q~lXVxV|Kfg_Z6ll1^mo?WE~bg(<gLo;MCh{N05VtMl=c<1tZMbm4?1X_D5*}O >z0Q02*Ax-o6nO-VLCK<V0ixL(#M%)EwE^N7pvQI*TB5H$`f5aijwv75%vWm6i!8L0f >zADk1^0WA*Ok(fHXR8SIbf<$+{gl$pYH-=;U_vazyNU#_g-F~Cv!MI*=8B&u+uPN6} >zU7v7T%1X3KuO!sl<!a-U-s!nsERoZsCy|#@!Kx~(mn1&SveesQXi!L_a4jmz9AFSS >z0&zuV)e|=eg;iDQ+cH&VJePX7_lk}plBr?4*~!z1Q8%oh`$&*d0)L~sK+!=xftpbh >zSvLtzn|2c243VN-4YHvFaQEYTe#@%I^=ghW72-mFr&iP5;(%G9ue!j(Umi6ClVX|W >zlClb!#@l1M2{z*2ed33V)46o;L~L?&@C*_f0CAppCHjhc;9!ti5Us9*=Qbr9DgEz8 >zvxhG%EOc%F<dh2>P&30T^(v@pN4=1Bdy+%Izc^@p#_cp~v%40qy%Z(2lZ*gat@SQ6 >z#s!e4*e(VJbyj9x(Me7O_NvkGfvAIFVNTqOkKj27pW8Wc@I(-K-syoxg#ZeTw?m?2 >zzR#5;j6pq{FE8Q9#ITLKVO8#_qD;W-UP_PC&M>usqFW)!fwO-Q$=S$d9v{IKT|RgY >zf8c?n(2`K0-DuKQPLh~h#6YNF<7@Y&+LH4#(zs+id?RqVPLtcQ1av(x_oCuGzZVzE >zg~Bh<VcfGlu1|-yqLA6+k#>X|g2(fEHm7Ehv|UzI<&=7aozAqJrsU_f8hcFD5WObT >z@UQ<UMU0-I?6-LT%O9sWXF^M$G{zeI#MD-OidU+59%%l;lk*MwFa>$hqu7E4UZu0Y >zxaIJo{nfP?dBFd)XpjSR^0cUCmV-7Mry}L6$-U(D=SR+Z(8HAyCX=iTAHK$)M6a|E >zyD<;81a`8N`LrA?cUNOHTf}C{UGpu1tQxw`Nh3h7A-4=y?-0cdBREu0#jd1||L`%s >zsSV5pz+c0RM^{2~z)xzV-$s1J0YxEiZ<m(Ui5$d^HdP|bQcT5l<V~y#hVRLw5COR1 >zBW)W0zI=V=GIqIhxr_5~wZ|#yHLI)eSmTDV*0Im{+k*OcZ<XE=$i!&CNz?|eT`&vA >zGTA_z$nrIBnlp*mr4>wK4__D9-Bl0I44glBi)U{3?_1uK3~_OiZ2qNwunCt3oG+0V >zvd&9Q2kAhf?IpW^z%RJX655G`YnJ>E5MtY*Q+)U2w$Ux-pBEC}TuwPdz2K~(IWPGD >z)<Dsu0uiM;D-(Jd{xa&!xiNdpO^p!>A$^Kx^%jV0k~uSX#oC=}bAiD;vR&znss?5t >zj<fiiN*7=hKFRks`0ZuRMTEmqydL#Q0s}NUQnAGgqIn=?%3G$}nWv${aPE^o-F1Js >znW6`r3l#Ab=Zq><l6lO*67XvIrx|)imt4?9^A!m$8C;{>;n};KZf(k-Um$HNfxb*~ >z7<9i0;eCEE?x#X$*6jsohF~K4I*6EUwWuP3V>9lfq59Wn`OvXJl{Dri=;B1Zayo-b >z8c$Qi81G^ZtsOZFNPX$3U))%EpK0pprtQQLJMQNtrgI25Qij4zsY^r~_KEEw_H(et >z*!hd8wyAG6Q9E#T^B@@)1q!yo1DcRUtud5eUXQ6B?Y-Cru|jv2K&UXsk9vs2TCoOQ >z$zSu5=f0iFtioB0G(8xl8I?_`*e?!RsDn^b`!fYTe5<WjX;F^j?5Wz)Uh8=+Zu%>; >z*oQFQ?yJZ(4{L)CP(r{shmJAVCu@HFj;R3PKmW-scar}rw~Q5=5&)Qj-o%<3jpb4+ >zVBNHndbVAb+o)k>U?6-eSaII2%jW8&L#-1p1CHQ%Y`B99wY7p+pS}>r%(Mak3dv9! >z(Myd05*Wob=EWLb#8=Fv5UCjYYh;ZJiHDBNw=Ndah57t(fNL-X7yO35@uT?EnG8+? >zy6c!f=;}xc4!YO_#B;;RwFO=@h~RoG_ywK%(SuF(3f#-FdFcGJAjtcHL+mVfs$eUd >zoy#&Gy7tCOUxxFO{;LDaEtlI~B#03JobrGDxknWF&%ZGRn<_C>XsRqIyHPddezO2` >zDU?@U*9z1l5X57Q{R|k8hypCVk#WEhWtylYN7=NRA_9vn5HH~sWA^~*_zQTx%rlxQ >zGlJOCTrZ<o3attLuW0$qN+jPX`7-yyndv1JElZc!&Kq6Ws0<TvWPHQ;sF6f_;##U_ >zGp)F8<H&-d+0zTC(2+Z<AI%Zh!?Ulz*g%ZXOWDZEjOlV?7V|DGS#k(K(M=z%I88L! >zjQjG>KG`c@`i8ok85P?XxHJR_;^!Z-QzIbZ%iTRO<9bkSibosRam1+==FEyZ%);!4 >zJBzQZz(yexDHk{6wZ%CW@Y|lSxzEwzG^D&Q)7*+=sOIkq+5945-T>g<|Au-_2mrv@ >z4F+hB3_ybwtU7uqsqX0m%|@J-QUbnG12fGZ!1pLs&Y#mQRn0*^KY5*VI_(jFK;dv~ >zu@lsQAr3KSX7;ujacuZ8%5$Fbk8J@do(%@+6n;Yo!srGASR6z=G3rHj(XtpflablO >zd+k?n*EGWbgtdgUQ1HSO72R7sdzik(_{&m)l9^MZ2+AH94oAUxuUf(PeS|mDS080L >zHm5!))1m|Z^Ax+%fI*JJ&Q_|h(b5<zjGYTA<q0|j1^(M`R>pcCnrDc~s7*Np!vR^a >z=t?SOw13nK_QPU4n~59}5P!Xd*mZ-1+lX$*RIceUa?(r;zQt+Qfuhuo^qWw<hbOB% >zY8`I<+iCvhgbn=-bK2nWWhun*eV!jByA})=i|V3G9;@}{M`-1uE?q@xpek${p(Wri >z#7Z5niwNiu#nBQRy|wQz$Pzak^_PYQ3QW)&=*>_gn>)(7JK}p;={I&X=lo3^XdTRq >z5l*Vmq;LV<rvVSSUvcmIPlYCb5IPAk=qg7Qv3H4|+jH)&XWWmX&16Dh+uW+_9Y%eW >zrEmqMR+0?0dgPy{e~A>y0;a5r1Y7>S{(!}3S8Z3B-3YFVoR-kWoLSj?3fHA7PMv83 >zJj-5f!{?LUBF{}3!P6`3L#qb6z0_yH3<*6_d#fK+@c;*hQC3IdyKGIYrhTXh$fvr* >zsM7wsv$OQ%>D@V-oz(r-b|g3X&>KYAmoLa}a<wJ77j*?4&kTIPoxEh{*89jgxwTmO >z?27~x2zQ^tuDk^z+SI5_?=ix6>6-nR#Xtg1oXV%t8FhsWpBj8mdXPwLQIQ50VxY(K >zuf8VIb|bz|<aK|k@V#r|UNq{HDm;|Li@~et)ySpN;rRypj}X}!bDyii=QiFY9?*lq >zLttGsrWK^)zk|Xp4E0kTW9&s#`qGo<$Cn*|Rx;pq{(jO9lIKIx1)@E5%kE|h7gbd; >zVRsS<A!d(-<Pe}u1RI!G!O*jp1IzpCs0?Z}!sZ|O^o`=q{b1P)7lEjOEB>WFqEc+1 >zI7t|?kQuMQ2xgR|bkYPjDO%?JBNVd*Vxup&R(mk^%>{^4B!m<IeEMJg^vnP6RB0aj >zE3~^ku4|^xYJ<kk{P;g1Z3Pu95;;`TjFA!Mry`c1irWSj7(nP_l<_cgpVDCdYE_n> >z(b~<ef|?8ygf0)gfB{S}m&eAFrxyJ@L_~i|k!Fq!p{Yb$CZy!xa1!v!C~YZ_mSg*N >zK+Pr<vcx|v-R$UfqCX_ORIZkU_?#KhcENV{t9MR$66`AP&;1zT_A>}sf<dUMo2Td! >zDk8xT{mOeG?QR)O9qJro2#W7M8!%W&h(TPyQpu#fa<y~QK@Uc^KkD1+oz9u^RiFzc >zzB^kLfQL@Ezh#|USS&$r0nR1({MjZ*cw!`!>ot;9^ZK5~aA)2OX1}LAqYX^@!x$PY >zB2b6tZM17no0S;{0)CR)LKh6yU<3#NgQMRrKWQuy7jxAfAY8oS|6B$cuzqzu160>B >z3jNz@6mIy?9wfu}<V)DzAnTv}Lo8Q!Z=(XUtHFMB8a48|AO*49F@oi3CbLFlIFhi3 >zJ3U<-<RtKDa4(na(cAmTJ+GosHLG7>|6HQd%S~XEmZww(;f`961mk1QEfxC6Bo@17 >z-&5@~hZdx8)bTRYkKXU&{E}eSMaObl2;KlB3U%ts;((!SJ5OYsbY8&Zmtgw~=PIC0 >zPO>2y?dJBwbfD}}90W8W@_A1Cr*Xl)G8Cx@q22RKC-pZl2(Iys5G6s`EfRPN073dM >zDfX2ATW{P-a#N6^R&c8bJHyhtP=-m0yvpjwuPWg}Z#D_z0+xrYAVShIUbQbtKN3%} >zI<F)Q8CXJ1bvLvga)c?CoZVOf9rQJ9i!|rn0a%w*?#!!zoMB#6>H%El^Rz2knzh22 >zJFT(xB1mn;?_2*C0^V+Vyu&4;A*6jXnH%XGEmhGm>MNJ@W563?=vA30m~`Mz?7nkm >zl3*q$Q*@q*xM6HE<Xt1&`Q1>da&<caTf6=Gi6YbFbRMbYMTQKz6DV@F*}Dj6)V=0u >z0pE?hB`4MLs1vHU<g)vzgC7~sTWYRZTL8cRTm*n{|F_NpD)<AS*lWE40BATCR*}Fs >zZ!|jOG5fV(EC~~jahwyBXfXO3yop#%jyBFO!wRVYKk6xRr5(|odXE>Dx(>{#K70lz >zLTLR=QRyA?*p#yPt=nR1@WZ={IJyG7%K+t>j^2QTxm|iUG~jMQ@ht?sxLM)s$M+k7 >zqs&YtA^jZ&?x=5+wnRD-Fk&5<pX~Rwl?8k6Ay1I1Gum-(qS!rcK}FMX`YFk)eNd%+ >zJz)OAK(qEb(XvNHmSXByNZxJnaHkbCwL`#9(3hg0EV9)pZyOU#d>j4sd}#teO#i>& >zW&XF1n(hDqYS0_{GmH0iR;2DD>`c{Xy$N=H@7*N8`i1~u`=0QMz@obXk-|@>k>K26 >zJas9ArkI~)Uz}F!n-+zlmiEVuax%U}OmmTDb4G5MrNEivXIrFG8WdsTVyezHv1^5q >z{YLDda{FR)8|QLg2ei!W?&$km$t||I1TJCNuge>Dop@zkV;W!1KBxyz70qj1cnRWi >z8KkAe39|QsTur|KWn!psSHf_g5S6&Ezr8f1;9gv7HT++#y`E4`)SU6^n`8J9L*k0< >z&vhoO9IX+q>M=F`cNJvNTV8NBxM}9W@H)tqAsVwH$(9wYO+F$!*Bk;JOyjzu?qQ(b >z&v1AXu&wlEqen+Q&APX&yUmjhW@5%b2{G?a21SAb0U&Yzg{wjOKL^s|dy?Psz|))^ >z(W@ZEi%ZDUNqcG4w=uEl0<>+P$DutS7nt|&a8<rN3kH22K7Eo5!Dw%>l^Qnvi@)5Q >ziqo_C0heth2mO#b1)s`RQ+E5yWo*LiCFyzioAV39o1X-3kyJ<j6_0*OGes990sG=p >zP)tn{MNOPJBKMG;IO9}FT3vLA1ZFWRl`4{a;N#^9!9}R<fD85!7zZmAX7$o>-o#{R >zygM*Ldz?5EA8ATY=jsu{d>{qR+Mqd;2ruVzUUP_<CNazF%u#yjnh-}IXZuKy{>LBi >zTFbS=P(%BL?-%L@<eX0{P%7QTnbjK1D>M`*80)gHy|`wpspgB3xTFT|FRx)Tj792+ >z?J&?9coQUA93`v-8oT^*<zC+*y9cEzut#VmLb+I(-$&(wssSMF|DSPE|AkNuCa@sf >z!c5ftk{+n%ExScFBALqJXM_hlmVlc=Y>Su{?7`=lz<WZ{#Ww$#I?uWppV1w1hpM!~ >zwzhM_0{d|a3<mUHPO=o>ow-wMcy`U`#NW2LKCRy$3#>gp<M?Q8ckULC>G9@;BT@l0 >zX%_#b&z3L0EJ%ZSXVs@kG=vuq%vL+>ZJmR)yg9<!qC_8KMKXg5LVyfr3M?2hOyHiR >zX)Fr%52U`fJ=(?mft-8r`|C;EOV)eithpqEkg8%*W3t&vw(vd)tp#&6&yP=2{QxhZ >zZ=(>p$s=7(ypY*VUDz!LTM{-*p*5Lq>>_Atv#mZJvhidD^6nKXNFj~z!=mGtDcvsG >zwbBesDaY=#{#5PKXzKp$%^R7Po#fK2VaU?iKF1TMoOpu-O0EVtY7L_jc%$*1Nbg7v >zBd7wlMxX6pB-tAPvi}>`zQnr#Y=3}eznS#{T55Zs*&iW8xfLsl6ZNfe?TNCwP=Jjw >z%`p3c7aXw1&#p+V3^^Wu06!$s6^zqQF^vYrIWo%>e4D!tl`UnS5NC&|2*K=OJdOmv >z<;1rmsCoE{K??wQA&@rE_&qupi^(7SOo20uj`9cn9t`4;-se1o0|ZIP%KqLM-X%zq >zlWULI%;=Q;Ga(L|J+7#IV@Afhfqe?xNM3w(b>u+ssg(IX%sls#j!|zAX^lw#f^!=U >zE&|*|Hf<f(43aa(M^Y+!Ri)FsGeVt&_H=E%?usjw${`Evq)H9<<cP$n)l=+IcM*W( >z1K9$3NS)wEP6cEHo|KGP&q$nJ-v_@8L~^xvBZE{ld+Qa$o~s?Yn8M@lzy5AW*E8we >z6iHigk3`8=EONZ@pGMniB>YV651WhL^v18ydvX}Me3hUW$Pw3Wc3X2l?)GPlfb_(I >zq8$&6ukLOq55LD#o8FEkyD&R!p_xA!@bgd={@B>lN+FQsRZ$@DI*1-y$O#2Wa*n{A >zi6dbf9F{vA1^_{vxb2twmMXn|f>pE^WRg_OOAq;xr>eX0vL@jgHzMm;-Dz__pNm%1 >z(2vG%mv#M@r8ah57{ye8IM@uSVKz6r34Y&_WToQAXi&iw9a--w9|?Dp&ZFru-|h^4 >zQ7B>Zc3{DwNpa8^z81$qOBy)%_A}ziNg{p@Jv*XQvPqB4<X5YvgX1JPeuNvj-T>Cm >znH_rYRRd4q1&cC}69v-kDA1=P=^AHsE<L=H*Y17~b1-fS8N3Mvw<AdO_&~R>Bji9+ >zb;}b&`~%No7L@NKzAo`?81^-Cg(r%zx6#~;TC^YU6+1NGg~9h5%5h}bd&-hP<Eh(> >zuMe`x3X8c<f4DD5&6a(7Ups~P6iXs(dzsY-7`hs6o&4QQK>UF@EV79Zyv6nQg|kQ( >zr~uD%!Vv4BiqW<Goufe^0<`H=Ic<lv%NKadtpN+1GgCE}L5<!Q3<xViV{dk~iO}B= >zD~g2kABox0)j<HJ@|dg!T3qnQWfr{c&DrE(y$FUDgxw+E*apR4dQ_By#>##CPtn{K >zbgNmaBCdyjO7poo2AK@*bzld!p*uEeu=}7vmFp>eNb>_{ZVHqk>yCZ%vsp&H3Z_w% >z7?$#)(}fDH<o->U0I`vNzCm*l<oF$~p0?6DTe3Kw#Hx-lbEV-ckY-TUv>hszV*Ac| >z%DQZLvQ>&x68c%U_Iw5E#j_A9jBo}qyG9NsjDW2*t<2Wsfl#->PEz^NH2QoWyU%&{ >zm2UJ}t5b?Y+3hR201W%?QZ+$mukpFe96GW>dUtsXwb%rjyF`n?a4;3_X2CYymc9ku >zz=~OtF5LZzt);1mS!PdVPD`>HEFKSKHTWllkG)wkLG*^yHv%g0a|omit2YalnmP$H >z1@E`h=U~6+Q-Zh)5Z&8VOpUODqsM~F*_StAcm9f~JIG7wlV{;KU&jrrj^FY21cN4i >ztV!B+<p*N7+>euKySoUw0A8MK>^Sn0*Mp-3ZYA$Dy_s-9p;zo!-<tC;KF%l2UKVU* >zCW&-3h~Ig0{hfL~NRX16K~54)wFqKc87^sPfjq0;&Wk1UXbEC?@))T6TbLt0?1@Y6 >z?($$KC0*3;gnDl<U!)E*ReF(wI(pNL0Dg1rB#Zhnuk3LzP6%yS>9L21mHN$oMV80* >zk^cDp+h=B2TcBqjMmT}C$~X1=M#2P1&O4787_)=E3rnrn)&tZ*`vjK^@nxxMN*eJO >zOQm4n4v(RcuYs;2ki}(8zs7JCq@-`}x$g1#{P&mHwD04<>eO9Wo%UTTFV6F5Byj~@ >zvTz0knIbqPn1Am)3;y$ViY1rfukO%~U+(!Rj0Q?ax+>cd{BXXXFRvhM#>=aQEJs9R >z_0KG;+|8Kv4&1xBbe(P5MoTyS{^*A3l*>n6X$2az?oFftAmytHu~-p;&RhMCXpHTS >z81H}<1f3`6&AF{Lb?frTMmru;D|qg~>RSagFL<4&2v{K}gfk3jt=o$^s#!=X%N2%o >z*~<1!oGG+J|K24jz$k4sfW&vhN{|6u5B%RbJsQ@z7jO=i)WxFM*J-ndAmlWkOK7@{ >z1IPng_%=YBh!mTNY@p9N9{w*Y%xlK!jJ@lAT`eGIR@Jlw?GBb26+B(H$+om)Xsk7` >zpyrrHs$abL^BJfWcmo<}qhoIsS>vPJ0BUXflKha88#FEfAo4j?W6@iBW<v9rbsU24 >zT|7XvNi|yJ3YWw7HdE*?hkE)1HsUdEna}sb=!K~Lc3deaA?<BEK*&Q>*Or16m5Z2M >zxhpIR{eu`(<M8FUVR>+kBpkmjOT|ET%ul{q*-1cbtMFVDJYTW3(hud=mogwgz5_xR >zdKY_M&O9+3qI&E|IBZjgn>%zIJxz)Fqwu?lj_3Y`Fgxk+8l%uw6V}>+(^-o6@J<nI >zJTHU-!zOqR6wP3)yF>9V+`IfweU|r2+I;>&=n#w6j(E-k#IPkMm`aaO5<X!U!R(PV >zF$>VyBt-|g>$1Wys8-!T*bjsz_0ZEOe188xhR?1Ke+HSjuIEH5tiL{67=llVgLx*{ >zt?Y;7CI}DO8Ry20tDe({%6^8vRRoD>2;4|xgzriGxGa%#wpX=2C1D#&6Jm7cyiY_h >z%h#bmuk<-xZ=u1ITJzim?YM>m^RFR(x&b%@QNIF~rW2i7dH*P|73x|X1F}1CvjT(J >z7F-(8SU!F*^i&eQ)6}3HTmeZ&y30{t&lsB>{_i%^Ro+TQ>|<dMY@|@zvz%D!uN0F3 >zYw_|D0t1{is5jSv=>|ndEwP{WA-H$h1MIoc?DW%PV>%cbS`~GI;hBm3M_s+`8?>bS >z!SAmXVNq=22O_|wsFCOGToD{xM_i5;@5-(NVp^TIkTWSXTXFKku&JnGuU+ar3S}*? >z`1(unVK@;rvkYUa7I|tq+sl=1i+A35o4IP1f*=)3`681GYy^sizN3K8VP0<J_X~J{ >z-BuL;9F@F6fogg==2;q#5Wj=c(piV+VxU4m_@9g>^jI<2q2TK4dDCV|z62OgYeJ=6 >zzEJ!!R<%Wa)_WmmDEJGg*o?Uq*ZMQgVTtZeT?{+dn}$FQ`4tPZWB-&s@-q(bZ&HB? >zD#sZ1@IEHp<SdKm($#%&xXm0yamd#<Bx^qkl|yCnAW#g3ZzC4DU0Afw7f)Q`c|Myp >z_B?veb*EM<G5K}wp4f7b4C#jH_77DWJchAE&RkK-X&c3g6rV8$wGs-U&KkK_#db0h >z7~orlTYBJ%`WFdl1c1W)-^TbJ@mHqSadWBzR#isg15e`W(0!wlUWK}CYyZ8V2LF-T >zAo<hQ44Sch$%-RD<9vziz};SQ7sk3xNPIuN;#jjD-PbYYck+6WhPc8jkJV7#K)^HO >z?s?HJV}cGA`yvbC0Y7UC?(FDCAD#&wSfP%5|3F`f{=Peq^Jhxr6WJ&(M)KPGD<W(* >zRku%0FOo1AD9<8sc3>v7hj#6n(y9u8Fk;U%E!|!*Rr|Tfojo5+yLHC%XLvFau9)Dh >z0Yl>GF28=gOgK_#`QOf;3Kf{qq1kIcj(VM*_7j!KUFo5phY!LX_0vTd|7(wt0O|Y2 >zVoXNGo~B)8C?~iMN_vRNyH_$48a+BBRN0@g_DiiNb$(&)rj#{`&M5#xRfX;y^ZH=0 >zG{3ipI7kSIk{%yV$5VczwP*d$QS@dg+q=vP;O0!;f&s0ea6#-EKQ;R|cV3?;%E8?R >zJp!|rW}G=CXaaNkNCYPDaj+l~?zxCEqrT{7bH*D_=h*{cRY{|*{9UVjSioS9ShG7& >zt=o9$L^>h}zeH6=PBEGS7Zjh99cAJ>7w%q!iztXy1PP2j_tpB^aA;aOSuPrVp#mW4 >zKy@2iZcP0sU<i>53P9RAkP6HdldgzGC3r|cRLbUNLmbzxYQ{G+y+vb*YRr2Xw5^P- >zP|+-#OWC;pY3Ur?GVQ*%pKVXJo0{%?XWO=GvaLH!c9UI`-DKOgHQ9D=-{13If5E=a >z<J|i=_S);S&RU>9IRsa)?4r?!W>Tq_enPL_!?un}^#-S~9+JImv=*#eLA5Dh=V`T? >zQ@oMJlRKQk6Jc2gqD?6~%ygM0DFJiVboy52Q@8WLO-4V9x5@Z_cdi8xH2Z&duIsOQ >z9;I7BJH*fFFL=PyOiO*KNhT!37KczuER8{SM#k=J0Grm|sq`Bq-zgmyrIt2^&c~&O >z$81v0smt(M!I5^LrXLT+s9^{#_Wb~bt#eHodZJapx=Lm$JN*_S>8_Ao?Y((+CA@H> >z_DmuPq5s~4t*<|#Wt!u-5x-Z~{q)gjU5M|$dh<uCv+vq8S{UY}EF|nb{i>z|su`jP >zKl}`0I!`i?rU`KQxz53BGF_+c8S|P5pnv(_x#6*xc;}|=H66*O!2_O4E$nq_y8^oP >zTKjm|-_|puBuz>!srg+|$lSkMOte5Q-wq%OO_Yu}!N#-&LRr=)>WD@06TqA%_v`(* >z#yv6(tK}=NnK6cLM8t%k-??nm`ivw(1hRjVF7c_k1^>Xgp69GLDUe_PtP3N_7^uHs >zs|&az?di&Q5aWr=DfF*j3D(15G*6cD)MS!jhI;Mlpt`eS94bF`i7+O-E`TdnQ|r@Q >zu#+I=GcNZznLDxYX-@=)z$SWu*GJ2!>JqkQO=g?!5rsCvr))w{??CW+emxR9WNDA` >z)p6tSV`6~f>j=d!Ms;YyinS7>5*QIt?hsdOrZeXHrcLWBgrfY%>#IVw0)jU9@5uO} >z{9k46E6I#mL5!=NwEu6wT=o>PH<ea(<hz+>`};*BV&N6<Ic?K}R^Ug?9SnpyS+#*> >zvhjftE*C-vax(Q;X0VU2C}6eV_3o5NdW(-SRWw-BtG|$uK!1@4{hZ9_nY~18%Qby8 >zZ|(co--kRG+QCS1Qta5pXN9E_x?zEf16#cq!AA}_-zarno><zZA6{1=$Q6aAAe7w8 >zxYkdKqV0hqCKr|RQ2P-|MI+OhX$!J~sR!3Hokq7qnk2D&LCr>hw6%ZPNAuUe32}g+ >z!~gT_j6B#^Wop9ki)hI|XNX9~?IazY?etcn0)>=c;fYF=JdHz{5+O8k=G{|CkodET >z`=0FrA$wyFs>(Ex4-7)IrQ;Z*W7&<guS(L!r7-7_q^_SPD@m!T`#PXJT&pJdDDAKo >z$f>If=oc9kod*BPSXUMZ+OQQjRRL_z8jF9BObM{JO4Z0{7=?=)o=^XIfKH9#e}X8g >zx^0RjK7^<AtbXzULei37icz~aMzei<2lw$J+}645rFliR!Z3XvxJIS%*d(r|2*#!X >z;VCcF+^W$mR#*A<Kfk<4ahzRa`_^EFEAq7yiGXjT&UrnIfoDZ3yd5L~<iJYPrac6b >zzE2C0l1n&86|2;+{Bo&8!>iljrf8{S;J5EVetBkY_O^Mh@QmxdNQ7no5{?K2UH6}G >zdH+|^n?wTxGtbrwvM>taWDaO`a+mH^Rw6$8XQn=0N-#kT7+s;$W%ex+w2vLhX#B8b >z()jCO$n^J2f4E+xS28y}T}&CArvz4y5VL@9qq(02n@}*}W4Pd-cDh6g9~6%nvh`r& >z3DjmTv3TdVB-bc}C4UX^r3y(kdwC<4E(mKmjpuhy%Z8}B-oKxKkL4f|G3ZMKm)F3W >zT>`yImSrSw$#Cn1iyuMElPt4)bc@xE`X<mL(HR9Eet|g&e0AOb#&=_ywuJ;qT$?p9 >zSy!yQ`Ltw)&Bi+?zjy6%t0Q<~%BuX@G)yG->yof)HVO@0qPYn?*qPDacD&Gr>VyeY >z2u2@|cZLD7`OQo)PyP=z!vI0A|EJH+SNHw@Fc<Uez0Yx)6cO>*aA!LorQzcT@hM-u >zYD2*?QnJvW<%g2=nUiw*#=HJ8*j55{l&zAz<ohGUBwhZKImHeS-~DtT=9}FX`)T0e >zvnNr5f+VdH03$7H!ACHkI1V92vo(nN6|K?z=d+M!TE5`eutyre_OOYmTlYsAVbtXF >zGBdP(i17fY))T@IsNF&?h-^k!A{1?`!~@b+qc=4EOpEYN<@}_2kv(2&kp(DpQL0b6 >zBO^oPST-V9x9`QsfWDdvcbLgg7g8B9*&F~_aj|du+t;|;DscI?nOZm0X{-CjUjhS+ >z@4;>u9YEZ_2qZ^LI1uQntQl2vV{n)J-d;}yLc|~#nEylpN&b&!bT(iE0}OvjlR&&g >z%XT7hD(uw1*nCyV-gv5{KTVZ*53q=TQ>CIK#7w*BULuXX$x%f1pPE0p2yC5It;PiJ >z2U4oyNT6AleYBMY#-&BX0FY9s<b0OAi(*n(+c}?9My?R+M*mT98~;ELpG!L|ny;xC >zVXYrdH9|&5nsCJa>9*9L#9K;w@RE7zMTSpJNv1PzyVZp!joimRRqyD6F6nsRUw6w& >zf#+sCax9V`VqNj>kl~{!HK)(eJ$T?zW4BBy^DqEzkAq^#58==>jy&j`{>fCbYeLdM >z(qgJsDj-)k7yz-klZlmn*49gNo{|U{hDj8=LAE*Hr@2u$&YPej*K>xh3ywNlV))7+ >z0)k+e{}ZTI{QtWq0Y`(I-@7FD?lz(TN(@8rJN00vHlAJa)(<xIq6!QVvV*JhwW<#M >zLrcXQ&Cw>1YPaG{s>9&6XeUc1nHWPy(lyj@8zh`a_lNB{3%!-Qcx|a-enNN?Q(P7& >z#vU=Fgbl6Tz0PtOat+{aWAnUaR@9!SMXBz5gTw{CZmKpDoH;*C33dzMu4noc8umo? >z3UlMw6jdFS33e~XN7zb<I;+Jy^fW*CHC&*c#)^^1BZE`i+_h4?T_SQsUEkWdn+Ay7 >z{09K31mm@vw?{Dg*vOMErH==92j&uH!u(xzcfZ&&PHyC$a`gLF@}KM5TgNqv(71ov >z`rEeHB982kry?Vt5W+Ot?kG4+`xs2F=++JdHMKNWEY~hTCEa3y^$$&9RvN9pU(8}R >z2uADw)Vo0!3jm{aSD1bUJE*b&19R=QPfW`N$A{b3?ZJ=rg#K>4+{lJ<QS)P%?CjE- >z&9>J}2lcm$hH3$t7=!rfWevSf*Y40qxJUmuzK~Tt7>51)w6MEMDP*)#4C)8PPD!G| >zRwu;`Z>v5O!ZuO9G7-|KwDemb1jN$f+2xXE*#I0VM<|k{2xg<HFK1AD4%bQR2;*6+ >zt#fVESe+C~LYHeFX|LajVB!{)r5jW`6`uR$C$_Js4D;STZ+^55;tV?SslS8;^nF@k >zMmm?0hRkNvmBg!NRvhIdwvg&`)-R6_Y#7Kz8{&$KS(vkH)>;1(M|$li5d(TG?jLX* >znyeDWnnxSsWdrc9>x|sRFF=V*mxy048;KJR>M61LIf3RJo4*P%`P}E$oQQOI<Y~Rm >zXTvB|)D*iU59R<iv326i`<F3x$lf)odC$z`^833mve8Z}EWTmDJz0cNRoc9#Iosa{ >zDf#J3f!RJUxHVpvgE41%Ze}p+-;uQ;<6QHP$Z$5ey)%*Hs3%@;i<CLS!&_p)e|6gj >z>TRASv|INxbm6AtVY5X%mmA+)wGpzfLZgv2J5vpOC&(^^g)8o+5<(pBUreQ%m|v~m >zFQMgDX_*v`6P%onk4NF373U2W)4g#0T{q@X$vW%7<7g!iX)8Q{`XCz%m?GJ0#@t&x >z%ypjU@k3D&O)vgo+uTs{8ODv!J8Giaofz4yehl@u>9aDcGSnQJx~xQ~WW|(59bW6F >zDpdQzXe=(O2jH7$wwThP0B`LlP^*~_)w!T7d?ENLa#A23@st!3`8Q$?hkxW~s;9#P >zo~XV9X+>I~2~icle3Vw{;VO<9+%}N%^~Kob@Kk#(H)0kpD`TP_dCL9u?0ltI6)q*U >zRoiEt^O;w(7C9*jK97&BF-wLWZf#G+rz4<1jR6D`^kv~M;ArPt0C=ij`0shcYDrD! >z4)@wq{c1%G;>aaS?bZ7&z^Z|MzA)m9&(hKrU3upF7Q>T(#OqeZ{l~=6vmeRvyD!7t >z%Le)#rxS0q^iwg?oBi0%BaJw`y4cCy6D$;%$g%b9jzbq>d5Ml7nE%V6G}IE4K=#L` >z%Ip+2B)B>kM6kbDv#=6haQuVC^7@j*^q6XlR?$hu6Ja9-*-n2C#4aE{zK;VIlzu5C >z0kr9dTVy-N`kc{m#5#FaJ0EjWZ1cE63bUTK&>j9*1qp3j2CqDFTq}8bvYQ7O2D5&{ >zC)-mM?|*lw=i)cJwvvDEzq(p}K!dbV9S){5JyYhc%7TU%8{eUJ;AdguTm>H5<$rRF >zOI!<l>U-6C_6ci8X^;AvA<f4B>GChR(UJ?VovO3MaLFwvf*?h}VCoo(+)=X5^d5eP >zW#IIfp(<QF)i@d7$yY$Z;D`|@GWd(!oT?JXdd$1Zp~EOSzm&kHbjJ_-hZ4xefJtA- >z#|KRjjm%!|PeR}`u!L}xm@i?CxQJwOO?SxX@US16hHFjP9Swc)m&xM=E67C?X-FAL >zq%f!l0CLbjhTGcX!scV$&E1I;jBN;Uw!f+C;2oSCHnmssBIRp^6et_?zp5F>xjxv& >z<b~AKud*%T0aL?tp6PG}hPL?|OL1ub{Vs-GD#h9u_3=XMIJRV`)c&yBB|#fNJVBww >zs#*mhOcg>q3W+si^hvBN#SaZ)Vo#{)NFRmMAf5WR+6O1G7DbW|$$zZeTkfkeX_qlH >z$Q{rS2~LxKV+Km%!f^xgW5_PBQC`g~Rz?d;;{<t%gd8sPD??H7qe9*ap!pka9_GsQ >zJJxs2jpBxQN|LO1-$LV4E^plj#kbiaz^~RQ$=K=3Ia;gN-dz{=!EdafvQY*4-`1Ff >zE1YZ63m;=g4dnDCSEzc+IY|V+FbX8Jm@DbEwL5nxx+&}mZgb;F_hQuJ$D|^vX}?Y& >zI0p&vH^Su|&=rGDHS0`2{Zm^Jc<9tck%(7i{p_ZqDi^!Pw#VxPPh{jsH`|tSTjMht >zIwiGYKg?xMYeMwz@YSHecA{E5)>EcM^J|K>3O5c+Y`pstI-@Az+#XiVyx_#RsFpQ< >zoH}C>{ko`kTRtUc!a+`DICDuvWj@OOnbGx8BHNxmUKSFwTizMXq@wdQl$;%)_&~)J >zxnDeByBR&TYJC6iAN*0^*_e~8!8AR(Wew>-gL6oI-3s&oJPQGDzm4tg+cp8rFbM~O >zWbElGw(NTrT86o4GyUpPj2=!cKb7NdgeKhi7QMMKzjZ-9#G`1U0Dt^aL(%89>VUsr >zB*PiPEQ*YOA9b53GGJ?HD2*AZFwu9`(4E!1Y0TH8sAoM#>GZSgy$pT;jef~I`kn5{ >zPn%8?bsg%(kc9iWb69(wz(!SQ#Lvn>ulN~r?S;q^sT_HLg%=A2L5^!K&UAGX#MS?! >z+KK5zDd!MC{W`>B$#AlDsFZn*{!1xGY}jrqf!B|Tm!re|6(vVDb$<<s;=*1cN=_Wb >z8v^~}!DY#^lk*P|HRjz}YsjChtW}6$%{RAc`B7P`)VIpYbVDRwDihq<YzuPxyjhSy >zCp+MA+~m$(Q|fn(n&m)d;sd@ZiSXu$Tl^2TyeGf#Is)kr<JeOe^n11><wwP*5ikd0 >zGm0q`;{iraqh7M=K9-?W&|)r(P&LF5JvEEQ3Dl}uELx!9xG>p8@!4=1o3x_2%8f)3 >z(}3D_6$h(duDUVGLxArip^6_DS+^3*FUeF``HzU#e+EPB%8d(tu>Wi-oxti(7bnJ8 >zav4i~S#LknCJrKBAxkPUajXO<NUo!IhqXf^y{7q>*D#F~xr$+K2=kj72bUXn&urKj >z&z_}$VB0&cx5?C8+Ezn*c|NR5<!%xGf)>a1$s_fJTSj@L5U1WLqqYdBj(k_*L=5xJ >zZM5r`N3iPhB|4GlMgE+eu(p#L;~wmc(2HLpT98t1DS)pZH&d0OTWE0HdwcueZ$c+r >z11SiB;QMv0IXy+lG$2YIlg=_THw$LdnHuWKKrSp@%-U9JVU+<dGGkR~$)|RzeLE$( >zEF}{`wme1->3#{VGR(~1%R+hyQUg`xbF3!B7av#*$so|P@v<z}6*(>~Vt|{}x8+xT >z%TQ$(2!jKx^7`k0jOt)!q)O*?nFh`bxS-MJ@J&wfgIX@CU9)$)B{}bHg-vSxKVCVj >zQX<Mumc*A*&`(y8nraon)zFt77CwYM`33LokT=P0m`X`Aj4W)l6Gw@RiBa+fuW8)L >zAk2{ftmue>1vc_+br^-b-*c*4c4GG7VjB#*FFY8JMLfiKIt_b-aS#b8VQb~0=X<iu >z(7o>9g}8rSbH9%|9e<#y!78oRno!^_!(VSXP7ke8$qqwnF0eK^$%mkq2iHco=>{E` >z+|wtA8s5N3&;Ug8I9GAynhe5&@q=et&-``Cd(=aOsd&u}w13n5fK4dZGP>w7n$AcK >z3I&(an0QrX-h)7o;6V4M3}LSwgLbw0b#T6$HeK2LCPp4RCF@Gv5SlM>qHtPO7YkTY >zhuA=o;$YMQ@UVOw?zu}cpL>2x-AGW9UtkaujzbqN%HJEt1iNTzxGDKRf1yrz$m`ph >zL!j{NvmNL_DZXMoUUwl7+iy!+_0y+JCv3(CD5#1*_vG>77$Q7AJ!+~{6`PJ*a19R~ >zBMkJ9bjH=~J+wt<!u}r~4ArtrZLajt*9K_}n`{)U2~i|L4P)x}CC8|~>@BaPI<#$* >zB&6J28kdCOF4-Ip3oVE68#sPBoK4LMMF8&rOTDCugj0+Hgg;`?mhf9~H_M598tC6E >zk31ISLZKPI!;<Ot?vkTShWm#C+IJ7~F(@G&Q)10Y<au1SiSJ*3Ho^giogQjH-ZHuF >z!q!PQ(Sz7<#J58!0!$8|h%1L!aa0QD<NLTpmh+$g;L7|1Vw$KH;|+14)S~n3^!KJw >z)Sf<x!0pUftObU-^jK3Q5Y1bKJu9XOu%th#;jCSdXU|A7tSw$DORXe);v-0pI|S*G >zCm+AtW($Zy;BWbQa-Ujm{W7pxVyQM|5)bJ)imo5zgJjLEm!oU9#d%0wF=c%&Y7&;Y >zAI{Hns9T||np03k=rVjoge_1xDfg54fIzNkNw7Y!FI&;O*_H}`&(7ke*U#a|N(|RD >zX(Zc1Rm%gHJU=J+138^koKpeuG9GFs^gK|X3W?Uyt34PXRN~Uz)I(9G%4*;;S1|5B >zT0u3-RTtU8P(~KkcIzuxCPN9$3W(}mEF}*DJ6h)@$aJOEO%M$S1AYIk?4Dx~*9Gt? >zINIOP^tR|SsUB9=za!by+<P`g7ljqE?@)N0XBCw$yBgSV7@({3O4CSWy<d!fglo<% >z28GAMI^Vgujt6NSEQmjwCnEB%;IIbD!1_&eCn8*2Hkx=4(V0szOXT_^NZ-Fp2jdg4 >zteMKTM#9cmMj>S2kER&Nu<n#mGvS4Uc%e*5k)+X2qU2Ap1xct+(Ox7|FTC}$OAX7L >zx9|!Byw`t0Kk698hQ0#5Ji-!nPm>}(uHl5bvLKhb)}ZZTKR7e%>EP9spL2Nv_vWzG >zxRITSmkfp#h`)lc{y0xEAS$MfBE`DsL8d|Itlp?=GGU%MQ83W9`|oOJ8&?F{w@8P? >zf!<7_EYJVI(->ENa_XL2Imd%7-5vI5$|U_m`R2bvWQ3v<>h^5u+ZS<`s=s(a`=}%J >z`;Dtz=gAIjAVT=}ye1RB!Hie?<9YaVlH8+^fsGk|-6McCM^TM_@`E^?r#^ba_^uj; >zd)eX@b7;@thFuuaVMO6Vv;=!CBvJpsz-G3brdh*TdO3l>3~1A^qXwOb%$$0dTd*6l >z31FL2Euh-TtIF8f&asP1e!6IqevkW|fYyey_0i{Xjm_3iI%fYQUoGgA<36d%b%!Bn >zV+%LhWdIP&!ECk1?9Vc&q#vyDu1Pr@uP@Ty>nK;L?g$E~4hW{m(`0!hgSUa*6J_MT >z$D-0i*5)jJ(^xaCgw<B<!QUFS-p0!#Bt|dYL$D-Ufc@LwBGaftQbcR=!7))7Ug%jD >z;Z;~OqCvwBG269-659!{uNm*OeAT;zKNgd!yQnH_L%bUKHDlr*CEozulIUEww)kh< >zqW@IVsY=ESqx2=`j3v=nCiV>z-WzEquTXieWxi-$2x5t((-$~OU_2u{64OA<bm~1P >zq!@gF^Rzz_6y3j+GcH2!M5*05jMgw#bbmcv716S8PUR~KC@*XSi6;x<3#9BNBff2v >zRqPd1WE=qoPS4sF3{Zb?&QIOaVEC^1^fhk1o!^Oq4lo1n@L(N)u%(QRsN!7rpGkW= >zm@*&D1B9?>;r=Og%uelcH^PnCH}?EAJgO7!#5piY1}m$9mI!;R_k13MbW&L{EB*fj >zD1eN0#BE}(rw^4uroecvWvP~eohZh35)HrZV8pTB!CHrBj?iAJETT4BAz2YMShM#5 >zGDPh{H52k(wtpi$eYyin(LU5m34*10IZOR_$fpyKX&%fz*NFx2-tHf|d<&w0A1yO0 >z)@+d*sNZXTmuFf#d8c;hK6?M-XyLQxd|9e<3z9uofsG6+RD6bNkGnzIzHIizj)Vp# >z;2+_Qq0*eu1wM;Rys3OrTb$6?KS0$2srB=|y&d-=x%iJR3H)@NW;+doux=blR8YZ~ >z<g#$}qzJ<B6eSzonbQBE%fE5++kpUc)$C5KbFJKpwLi}?jPv(+FOM+2v*q&xY+5U> >zH}rG#XlcLxjrZ}(#g&oo){_@Ui=@p~x(yz$Rdo{AIX9lM^Z|Mfb83bmpQl^Q`p>x$ >z_bq0lLXpy;d2*_R6%Xx^yo_Jyx7&bi2vIv0OM_6Womuyz*?#{A3k$y1{;0i$AA@RM >zOffRT=-O0c#L|rCdM-&n`f2MXjbqxS>`s|K{fgUB$s6155X=Em9w&e>{VwGk09!0A >z{0J1jRQ)dsLZ1?j11rhl6yfM`r%wC3XO^#-hD<$*n@8+x5nyF=J!15wzg37?z9Yx; >zPMRooC_Dq)_*8dcAouO?MZ)`sxMpi(QqH%3?UCBTf5V*n1WwP`INfHl6heHAzv20d >zhWt+T9c!2O(#lF`c<Sgk32|+A8(ULd8JUwBoJ55VTJuRcs5QPz7LGnL$BK!cMecqm >zb{jEiFX|{$-+_=U!E@@SvyEJdAy^KBKxB2BEjyhTo1x7mJV=v_o9e&fGFtr6{4E!F >zI>9pCzLZ|R-YYX`>b0t#yNlBHe%Et{Z1NX!=R?HgxkJ&X(w)VRk6Ju3lqkxuK2(h@ >zt0mx8yaGSCZc2GJ<Efs{J0o&YR1tN(zQy)b<R~L=J2vmc$t$RCrEa*0$J)uNR~%vA >z^l#d%!r-$HYCkxf@wO*YHJ0V$X{dizF)_b$V^%I)QaCtau?Dm`l#vVk14B0WOIxfh >z>%m5$UL2&wn&>?P>Kh+gcXo!+NW6>rgT!dh`yXyen0^F*sE?r3<c(}Myckca2Aa9o >z90BFL12_J~>lIkUG?1NGXU5P1`4#Ym2~So`RmTGgHB-LKoS8D07FuMG*EgVmYL|ar >zq90~eL_mnwOi#S(7De)4Of?>lv6Ut)cxm!?hb5$r_9e@`!PcAYPUezwW<5OHT$SO3 >z@K3z5JTamLXZ5v(;>SloGsK&n=+@((3GqaslKUIPE5-n4aQzh?0>4~BZZjwpi}xv2 >z&gyU=I4H3-380HXJ145eIb@N^XB}Z=`50|W*{0lRX2#;S2vx5UMz~>x7h~;H_7k4a >z3aqfzH)KB9vBB;RD2nJ9hn;az16fF7o%O6!_`~&pacX&S?G)%~Wm!-!LvbPJu+_IT >zB<)jp;sW*p4=sJ&8b+zLuoAEahacE_7<M=(Y0JO^R&)p(`NQDvW9sWv&R5zeCpFp* >z^4}SQutDaBaDJ7_cHA<zmGr`W<3+II^irSA>>i7*t&tBYB7FWjJgE7YGnqCXLe?as >zXk_0Uss7hNkq_ND7)d=X*y$0~gMl#tDBYq7W|-$n($WYPCbThpWQZo+Gs;kU6Sc>) >z)(wR;W=FpL4)f|)OWlQ-N3_)Bz(zUkjj1TbG-RQ&mlBHEM8nKZ#UMq3N69LaV1zBB >zK5=|Q1c9n6JJp1xqMJb!fm_Ku6yibP+9Ot!m1K_KtcE?$Z4EckOB;8B7kB{H>*q_~ >z&Mb1NXv#;Y%>9K4u1=AFdt%*z(=|D(M`L7h1&(<1gSukW!Z8)dY@(w<tRct4cb)BJ >zvH!^7K2a?N((2go)#5q}&uc6Vh#!?g-)YQu-7O1aQs1*{A#YXz;^hlcdOx?D!}6GW >z-#(8+n3dOsnyI}v5r)42)HcmCa{6Uagb_B~$Q`+HIjzxfX}Q1$(}LWn_uQSa)ubpb >zyX~&+(3|YC)k_!?<&$$>c@o-Oz`CGWx?U6E2eMeAC&L=oZJY^u>IX^MQYEz5C}}|S >z6X7~bMv1Q_$<TOw)xE2|D9$_I1fH)leo1mU>9I!fk<rb=-gmZQP}<FFWq!s!*dAjD >zxm^1r;@|7Y*ftm9b}x*6S~Uw+KDeLtjch&zI&A-n858MsOr==3v$5NyGNYHtUME7s >z+;hxH<kdZ?Bi%H^T~3vnUu!Wn#5mm67JIX_qvJk`8C5MOAry+#{9L#;8<OHTjqK(9 >zaH8ZoM7YS{?KBn<%)q~qm0z0YOx23wKpLVPeey8?;%@=}Y9%G_3Eg9YyVreTho2n5 >z#=Fgat^FV7HR;wd+VnA&^QO+~I-hI{-)F#drQmVq&!L3`Yff+Vkg>wol+){qR?qMK >z&N8`GS8$hy8QwGkIY(WCXbt=i6zE3;H&DbmuwdSoQX4sCX);2gs}Hf`%s$_aMUQ(2 >z(5(*(TA-mm*+fSDUi14R=2l;4<eSnOx??dD>f@f9GlT&`4v{?x$qb)xeKx9dsMZi* >z)0E|_Vu{BJQC=-tj_i2Nik0n-GK`b4ndtx<xP}t~ujX}M2`KzlLw12vzeThsRJ-e< >zPUdJN^mxI0O~GO-rp+D-0c2LkL|fmOb{;kG(Uy0nNVZJy1J9p9?t*yoI-K=^pErl% >zaf1`fT}tl(?JqDBp3IRo9t!T#xDhaUmIwYE#+!d9X@te5PR_HZzY6{U5KP5?&m}vm >z|JTgITSg8s`bpsHiy|@s9$i>W_=fw1;2k~qvDdE2=f$DJ1DDY{lrSTH{}ece+1;v& >zF(8;^N+CHgsO+)%RjgwCiBli)=Vsl;6FF5Yr(1wUJ>g$YoLlN~@d&xdYHnXR`Ptb> >z&nwsy&)XJW`3+|AIGL!}n8~5M7>;{Uh#S7#1^<=$c@x#=?3hbx0S#wX>bK>fFd!1c >zmgmAoCvX1?D;+Qxxhi@lB(({|Q%*69pfe1Iet|QD%XnD`c(U|l(Kqxx3zi7!gDdQ; >zij>PKgg&$xC4-}vGq4U08|oO`UY?K@ByM_Poe`_FKfV>4`bk6=J1!-Yj-^cdn>)^h >zL~4159rJ<IAolE{T#_Ht5RTG71*1x8Y;b{$ug>s&1dOKog9;O}1S(>0r^Z2@>u0QF >zV1b~|5>op0+8UVGG0iC3r@<Rvio;)!u&9DV=uX4v=DtCu&%yVX4I_0UIjP(9I3PX> >znCCo;z_l;~wGTbZiRmz-)RGIe5;{<x#xroTIp^D;et$4^QE`k#0ALnvX!}PI?HIAV >zgp=Yg(!xB`m#X?ewMF(ICz{9pVSbHVYNMdm^B}Ut3fY1r$ZuRY(dMkJ{YFh@Er%Q_ >zwEgN-^#E%Ft)tU><L7|2=$WB#)?Mg0qv)4dGWqf~S{LgsBt`_&wKQy-98`f(Wt;Fp >z2ZMR&YkRZ2j3?F&(ysLK5tHiQFqzV@V}T`MK~I?lf<Yjd#s70nW|D^B{{_yeNzEZi >zSnEZIeT!UOl=ZKt?AYeVr|0YI+&T17SSr-;<UHo!PBXO~5!Vxp{s-A^e%xmoWw_fy >z9{;aLZ5QX=M%11X!C}bTMWhkV*`+u<`dw8v9qrnQR+hK4t}XXP)nI}!#xvy{tmEGi >z5E=0J^?=?5f(83;5iV-~EyC{<cC?3p#qG(VDZaJb+o7NGk8j5+v|e3Q*c#ewe$Rrw >zNNB~KzqE*=$?BK+h3-MHbpM%u<_plJbw?^xu~7+`3INlz=W1zfLZrAh<zwu*T_c+M >zBgXvmA$AIUrSRplIDYNZIAQ}bVmW#w-9DCZ==n46H$<#aInZvM7~A+2DU0?Ws#%Dk >z9b3|?j)yR6|DxNVp^(PS0c?qaETOENcbyud1F=JrT}QVo7t+de7ZK#rp2=~BYP};z >zQnKds>{|P|0-D6tZ-{$5d#cWp(Dp8u+U9^#&z~MdW#<qdzP<F%Oo2P-NK+|XXO@Em >z&?6FK&xMdBxmuQwY0p_mU9Oa2##ZqC-{}}G>iGh+;ALTguF~*tkhO!z*^Dw3yxI7e >z9uy8pqr)$G6ix|G2VIDhA4-AmU4M&x6mwaAsb?_{RL>BiU{5Kh1Y{Rt$rJV>-YSIe >z+5<yTS)0;W6%evkJbNj}j~#(j5Tp!>DrQVkP7M#qd@k}9S%N8U$0+TeS_elv$v(Jz >zx0`9aO%Js5#5TGlj^jcm74h0ou7bJa4*?FUuCk@AK9<<`2y8ushY#ax!P^>OvrvuQ >z1LJ@t60PJ@3Pi^OYM;)3&M&y4^Ifnuf7NP4G;Wut1Uf3*Y7}g!SmJ}NN*RV%I=)%V >zGX#&vPE-~GZFGU^k(uV6Zfv~I^<sC#>0r>7I@Kl;WK<mccdk9$Uu3<0f#4Ge_P@Bt >z>+AoIwx}}8;jZEn0L}vbQ9wP)$l2X;67+#J7zkp<<KwHSFz>!I`wn3<P7<?-NcBIg >zatK$~zz{dEa~~xGvG#Ke_dkf;D^B;>i#sT7bV!w|j~VHJWEEE{?aZXV5A`$=N}9@r >zWj%);<<A6UDyr`K8+?fO%b;zVV_=Dd<Ge6DLW7_LN`#`ienwv3H(r8wF3l2o#hQ;5 >zM`wTJ{flD%+)YA^-d8L<BWt+=LonFsxsyzG_SPbX>2ryxJX3K2JXF@SU~jl5g4c`| >zCm*uPZ9P(z@&ZNUz*l%-w`b5-4Jj`gE`z=-zXyW-FDdfohvfe-vH>tKFjci4sUn%L >z5SkblL?Rv869*`-%@og#n<zLRj?!}Q`$*(MC|zK{%H#1@zX~?ji?qPrOgTc%03+rM >z{@P}a{tab6SK53Hu=eT|p0IZXtU$yJ1pDXz?<;`-FiCd;a43fRxi;}iT1<R_RR|U^ >z|Mb0s%+^=S?KSu_PJS$A(cXe0frdUbN!KiET!=rJT3J@y$AtF@1=+0%h$VF<mT{#& >zucF%jU8#;PKyN?g@QAjNg=qrL?{@yt2~JWavhT8YayiXz9B7^6Zy}bIdSeoBu9df^ >z8kWBH4kqpg`7PER-O#P8GL+Dj-)E7C8HRFvQ}wsYM<a44eH2$sDK~EnvQR+wd4rh} >zJO<}(0C^RCT+zD4$w)_EU#|%s_&+o%$xUUyV|@qzl~}=kvpI!3OnN#o-FkcYV&u*) >zkwqFAN5{%Q_iFetQsjNTU4=X?R;>y=yCRSWA5zEWl&H3No*t{`2=$+UIhX6XJC_u8 >zAlkPs*#9fZK;M8Q$U*)$TGd5caZUtTe|vG3Vf1C0hz>Gh#j?tsAuKIWC>?)7YZq~F >z(tE~zr;>{`El^W*$yq}D+aT3^F1L2#3Pr)HiIi0si+|rLf-~J?_VAD8HjZyd{DZ%K >z88!MCQdZ?4g~f}K{DHk>&<OmD#kE5K{AkovqvD=#W&ZF7dkI1^Xzt0ahY_*D>I6-4 >zHR|qFPKnX~gaRN$E}s2qrus}21dZOoa1#h;!9NsU2X4A6sRw|5qvHJWQRCyq-glcy >z^E~>)2{hU4uJzL=`@<<4sLV%bz)8WYF`ov98_1TFv+7Nkb7quk*`MQpmz?_h%ET;Q >zK&UK4;IyvP0LCO{Dj(37sHq7IebqO1G)P^K;nCzp>>5hxxxY+Gn=O?V_uiB^TJh~F >z?KRaas1&CH&%fsAf7%o`^pEi_>k%>Avt|(;p$FkQrQ54&v1XqiehtMC6d@iCYAYx; >z0@!pq{bUs-I-Xx6Ks>xHBeR+QsTV!HaLb&>seXY@`p9~RLIhG%BseT*^6gfVKpm3j >zp3zC>l0`@O8^{Y^S-{1pWC;E??{6(>#ocXIH8O{Nlh+XpIIHsP)KJkxTVow)$Kq4H >z`!kWHa*i2dJ`@`5MklD8K6-5khkt6Zo)qgdIIDH3+Hm*en4$627Syvv>_idf=WK>j >zzK{uMpMH_FQ(VF>1<#<|Q~RzNS+%R2U#l9(W=67`Y6$PnrL?R}#M8mR4yi}hki#yE >n<JS;Jv`0y((q;|*wST`p^tRY~5Li>hBMAID5Q6`!o$vnvibn)) > >literal 0 >HcmV?d00001 > >diff --git a/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/w3c-import.log >index 9c10900d3d5a794394f696b1c83b6ada1d7e5070..54943fce1265380c026a3b7b2c91b9c3d29a3069 100644 >--- a/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/w3c-import.log >+++ b/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/w3c-import.log >@@ -1,7 +1,7 @@ > The tests in this directory were imported from the W3C repository. > Do NOT modify these tests directly in WebKit. > Instead, create a pull request on the WPT github: >- https://github.com/w3c/web-platform-tests >+ https://github.com/web-platform-tests/wpt > > Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport > >@@ -35,4 +35,5 @@ List of files: > /LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test-v-256k-320x240-30fps-10kfr-manifest.json > /LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test-v-256k-320x240-30fps-10kfr.webm > /LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test-vp8-vorbis-webvtt.webm >+/LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test-vp9.webm > /LayoutTests/imported/w3c/web-platform-tests/media-source/webm/test.webm >diff --git a/LayoutTests/platform/mac/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt b/LayoutTests/platform/mac/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..46062ce220c16979e63a4e23ca6c50b529b3cded >--- /dev/null >+++ b/LayoutTests/platform/mac/imported/w3c/web-platform-tests/media-source/mediasource-changetype-play-expected.txt >@@ -0,0 +1,8 @@ >+ >+FAIL Check if browser supports enough test media types assert_true: Browser doesn't support at least 2 types of video test media expected true got false >+PASS Test audio-only changeType for audio/mp4; codecs="mp4a.40.2" <-> audio/mp4; codecs="mp4a.40.2" >+PASS Test audio-only changeType for audio/mp4; codecs="mp4a.40.2" <-> audio/mpeg >+PASS Test audio-only changeType for audio/mpeg <-> audio/mp4; codecs="mp4a.40.2" >+PASS Test audio-only changeType for audio/mpeg <-> audio/mpeg >+PASS Test video-only changeType for video/mp4; codecs="avc1.4D4001" <-> video/mp4; codecs="avc1.4D4001" >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
commit-queue
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 188626
:
347223
|
347233
|
347234
|
347268
| 347272