From ea6c42799854ab9f3c0adb13108464211ed15018 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Sun, 12 Mar 2023 07:57:35 +0100 Subject: [PATCH 01/24] Document XMLHttpRequestUpload --- .../readystatechange_event/index.md | 4 + .../web/api/xmlhttprequest/send/index.md | 2 +- .../web/api/xmlhttprequest/upload/index.md | 16 +- .../api/xmlhttprequesteventtarget/index.md | 2 + .../abort_event/dgszyjnxcaipwzy.jpg | Bin 0 -> 62373 bytes .../xmlhttprequestupload/abort_event/index.md | 141 ++++++++++++++++++ .../error_event/dgszyjnxcaipwzy.jpg | Bin 0 -> 62373 bytes .../xmlhttprequestupload/error_event/index.md | 141 ++++++++++++++++++ .../web/api/xmlhttprequestupload/index.md | 59 ++++++++ .../xmlhttprequestupload/load_event/image.jpg | Bin 0 -> 62373 bytes .../xmlhttprequestupload/load_event/index.md | 141 ++++++++++++++++++ .../loadend_event/index.md | 141 ++++++++++++++++++ .../loadstart_event/dgszyjnxcaipwzy.jpg | Bin 0 -> 62373 bytes .../loadstart_event/index.md | 141 ++++++++++++++++++ .../progress_event/index.md | 141 ++++++++++++++++++ .../readystatechange_event/index.md | 62 ++++++++ .../timeout_event/index.md | 69 +++++++++ 17 files changed, 1051 insertions(+), 9 deletions(-) create mode 100644 files/en-us/web/api/xmlhttprequestupload/abort_event/dgszyjnxcaipwzy.jpg create mode 100644 files/en-us/web/api/xmlhttprequestupload/abort_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/error_event/dgszyjnxcaipwzy.jpg create mode 100644 files/en-us/web/api/xmlhttprequestupload/error_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/load_event/image.jpg create mode 100644 files/en-us/web/api/xmlhttprequestupload/load_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/loadstart_event/dgszyjnxcaipwzy.jpg create mode 100644 files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/progress_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md create mode 100644 files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md diff --git a/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md b/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md index 9786eb51f6336c2..c19b6ba1295505d 100644 --- a/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md +++ b/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md @@ -56,3 +56,7 @@ xhr.send(); ## Browser compatibility {{Compat}} + +## See also + +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequest/send/index.md b/files/en-us/web/api/xmlhttprequest/send/index.md index 59f6ea7624f1578..5ee79413da9ad9e 100644 --- a/files/en-us/web/api/xmlhttprequest/send/index.md +++ b/files/en-us/web/api/xmlhttprequest/send/index.md @@ -81,7 +81,7 @@ xhr.send(null); const xhr = new XMLHttpRequest(); xhr.open("POST", '/server', true); -//Send the proper header information along with the request +// Send the proper header information along with the request xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = () => { // Call a function when the state changes. diff --git a/files/en-us/web/api/xmlhttprequest/upload/index.md b/files/en-us/web/api/xmlhttprequest/upload/index.md index 3badf319ada5854..b6f784b8ed6b05a 100644 --- a/files/en-us/web/api/xmlhttprequest/upload/index.md +++ b/files/en-us/web/api/xmlhttprequest/upload/index.md @@ -26,29 +26,29 @@ The following events can be triggered on an upload object and used to monitor th - {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}} + {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} The upload has begun. - {{domxref("XMLHttpRequest/progress_event", "progress")}} + {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} Periodically delivered to indicate the amount of progress made so far. - {{domxref("XMLHttpRequest/abort_event", "abort")}} + {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} The upload operation was aborted. - {{domxref("XMLHttpRequest/error_event", "error")}} + {{domxref("XMLHttpRequestUpload/error_event", "error")}} The upload failed due to an error. - {{domxref("XMLHttpRequest/load_event", "load")}} + {{domxref("XMLHttpRequestUpload/load_event", "load")}} The upload completed successfully. - {{domxref("XMLHttpRequest/timeout_event", "timeout")}} + {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} The upload timed out because a reply did not arrive within the time interval specified by the @@ -56,7 +56,7 @@ The following events can be triggered on an upload object and used to monitor th - {{domxref("XMLHttpRequest/loadend_event", "loadend")}} + {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} The upload finished. This event does not differentiate between success or failure, and is sent at the end of the upload regardless of the @@ -79,4 +79,4 @@ The following events can be triggered on an upload object and used to monitor th ## See also - [Using XMLHttpRequest](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest) -- [File and Directory Entries API](/en-US/docs/Web/API/File_and_Directory_Entries_API) +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 09151fa925a4be5..41c4f6d05fdc24f 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -23,6 +23,7 @@ The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/loadend_event", "loadend")}} - {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequest/progress_event", "progress")}} +- {{domxref("XMLHTTPRequest/readystatechange_event", "readystatechange)}} - {{domxref("XMLHttpRequest/timeout_event", "timeout")}} ## Inheritance for `XMLHttpRequestUpload` @@ -37,6 +38,7 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} +- {{domxref("XMLHTTPRequest/readystatechange_event", "readystatechange)}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications diff --git a/files/en-us/web/api/xmlhttprequestupload/abort_event/dgszyjnxcaipwzy.jpg b/files/en-us/web/api/xmlhttprequestupload/abort_event/dgszyjnxcaipwzy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d85b214128e98861dfc3548ad9f9793887f97611 GIT binary patch literal 62373 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 literal 0 HcmV?d00001 diff --git a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md new file mode 100644 index 000000000000000..eae1c905671531a --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md @@ -0,0 +1,141 @@ +--- +title: "XMLHttpRequestUpload: abort event" +slug: Web/API/XMLHttpRequestUpload/abort_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.abort_event +--- + +{{APIRef}} + +The `abort` event is fired when a request has been aborted, for example because the program called {{domxref("XMLHttpRequest.abort()")}}. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('abort', (event) => { }) + +onabort = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +### Live example + +#### HTML + +```html +
+ + + +
+ + +``` + +```css hidden +.event-log { + width: 25rem; + height: 4rem; + border: 1px solid black; + margin: 0.5rem; + padding: 0.2rem; +} + +input { + width: 11rem; + margin: 0.5rem; +} +``` + +#### JavaScript + +```js +const xhrButtonSuccess = document.querySelector('.xhr.success'); +const xhrButtonError = document.querySelector('.xhr.error'); +const xhrButtonAbort = document.querySelector('.xhr.abort'); +const log = document.querySelector('.event-log'); + +function handleEvent(e) { + log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +} + +function addListeners(xhr) { + xhr.addEventListener('loadstart', handleEvent); + xhr.addEventListener('load', handleEvent); + xhr.addEventListener('loadend', handleEvent); + xhr.addEventListener('progress', handleEvent); + xhr.addEventListener('error', handleEvent); + xhr.addEventListener('abort', handleEvent); +} + +function runXHR(url) { + log.textContent = ''; + + const xhr = new XMLHttpRequest(); + addListeners(xhr); + xhr.open("GET", url); + xhr.send(); + return xhr; +} + +xhrButtonSuccess.addEventListener('click', () => { + runXHR('dgszyjnxcaipwzy.jpg'); +}); + +xhrButtonError.addEventListener('click', () => { + runXHR('https://somewhere.org/i-dont-exist'); +}); + +xhrButtonAbort.addEventListener('click', () => { + runXHR('dgszyjnxcaipwzy.jpg').abort(); +}); +``` + +#### Result + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- Related events: {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequest/load_event", "load")}}, {{domxref("XMLHttpRequest/progress_event", "progress")}}, {{domxref("XMLHttpRequest/error_event", "error")}}, {{domxref("XMLHttpRequest/loadend_event", "loadend")}} +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/dgszyjnxcaipwzy.jpg b/files/en-us/web/api/xmlhttprequestupload/error_event/dgszyjnxcaipwzy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d85b214128e98861dfc3548ad9f9793887f97611 GIT binary patch literal 62373 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 literal 0 HcmV?d00001 diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md new file mode 100644 index 000000000000000..f133177aeed330c --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md @@ -0,0 +1,141 @@ +--- +title: "XMLHttpRequestUpload: error event" +slug: Web/API/XMLHttpRequestUpload/error_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.error_event +--- + +{{APIRef}} + +The `error` event is fired when the request encountered an error. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('error', (event) => { }) + +onerror = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +### Live example + +#### HTML + +```html +
+ + + +
+ + +``` + +```css hidden +.event-log { + width: 25rem; + height: 4rem; + border: 1px solid black; + margin: 0.5rem; + padding: 0.2rem; +} + +input { + width: 11rem; + margin: 0.5rem; +} +``` + +#### JavaScript + +```js +const xhrButtonSuccess = document.querySelector('.xhr.success'); +const xhrButtonError = document.querySelector('.xhr.error'); +const xhrButtonAbort = document.querySelector('.xhr.abort'); +const log = document.querySelector('.event-log'); + +function handleEvent(e) { + log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +} + +function addListeners(xhr) { + xhr.addEventListener('loadstart', handleEvent); + xhr.addEventListener('load', handleEvent); + xhr.addEventListener('loadend', handleEvent); + xhr.addEventListener('progress', handleEvent); + xhr.addEventListener('error', handleEvent); + xhr.addEventListener('abort', handleEvent); +} + +function runXHR(url) { + log.textContent = ''; + + const xhr = new XMLHttpRequest(); + addListeners(xhr); + xhr.open("GET", url); + xhr.send(); + return xhr; +} + +xhrButtonSuccess.addEventListener('click', () => { + runXHR('dgszyjnxcaipwzy.jpg'); +}); + +xhrButtonError.addEventListener('click', () => { + runXHR('https://somewhere.org/i-dont-exist'); +}); + +xhrButtonAbort.addEventListener('click', () => { + runXHR('dgszyjnxcaipwzy.jpg').abort(); +}); +``` + +#### Result + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- Related events: {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequest/load_event", "load")}}, {{domxref("XMLHttpRequest/progress_event", "progress")}}, {{domxref("XMLHttpRequest/loadend_event", "loadend")}}, {{domxref("XMLHttpRequest/abort_event", "abort")}} +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md new file mode 100644 index 000000000000000..17fecdb629abc7c --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -0,0 +1,59 @@ +--- +title: XMLHttpRequestUpload +slug: Web/API/XMLHttpRequestUpload +page-type: web-api-interface +browser-compat: api.XMLHttpRequestUpload +--- + +{{DefaultAPISidebar("XMLHttpRequest")}} + +The **`XMLHttpRequestUpload`** interface represents the upload process, allowing to listen for events associated with a specific {{domxref("XMLHttpRequest")}}. It is an _opaque_ object that represents the underlying, browser-dependant, upload process. It is {{domxref("XMLHttpRequestEventTarget")}} and is can be obtained by calling {{domxref("XMLHttpRequest.upload")}}. + +{{AvailableInWorkers("notservice")}} + +## Instance properties + +_This interface has no specific property, but inherits the properties of {{domxref("XMLHttpRequestEventTarget")}} and of {{domxref("EventTarget")}}._ + +## Instance methods + +_This interface has no specific method, but inherits the methods of {{domxref("XMLHttpRequestEventTarget")}} and of {{domxref("EventTarget")}}._ + +## Events + +- {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} + - : Fired when a request has been aborted, for example because the program called {{domxref("XMLHttpRequest.abort()")}}. + Also available via the `onabort` event handler property. +- {{domxref("XMLHttpRequestUpload/error_event", "error")}} + - : Fired when the request encountered an error. + Also available via the `onerror` event handler property. +- {{domxref("XMLHttpRequestUpload/load_event", "load")}} + - : Fired when an `XMLHttpRequest` transaction completes successfully. + Also available via the `onload` event handler property. +- {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} + - : Fired when a request has completed, whether successfully (after {{domxref("XMLHttpRequest/load_event", "load")}}) or unsuccessfully (after {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} or {{domxref("XMLHttpRequest/error_event", "error")}}). + Also available via the `onloadend` event handler property. +- {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} + - : Fired when a request has started to load data. + Also available via the `onloadstart` event handler property. +- {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} + - : Fired periodically when a request receives more data. + Also available via the `onprogress` event handler property. +- {{domxref("XMLHttpRequestUpload/readystatechange_event", "readystatechange")}} + - : Fired whenever the {{domxref("XMLHttpRequest.readyState", "readyState")}} property changes. + Also available via the `onreadystatechange` event handler property. +- {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} + - : Fired when progress is terminated due to preset time expiring. + Also available via the `ontimeout` event handler property. + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("XMLHttpRequest")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/image.jpg b/files/en-us/web/api/xmlhttprequestupload/load_event/image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d85b214128e98861dfc3548ad9f9793887f97611 GIT binary patch literal 62373 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 literal 0 HcmV?d00001 diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md new file mode 100644 index 000000000000000..631a10f1e990a55 --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -0,0 +1,141 @@ +--- +title: "XMLHttpRequest: load event" +slug: Web/API/XMLHttpRequest/load_event +page-type: web-api-event +browser-compat: api.XMLHttpRequest.load_event +--- + +{{APIRef}} + +The `load` event is fired when an {{domxref("XMLHttpRequest")}} transaction completes successfully. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('load', (event) => { }) + +onload = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +### Live example + +#### HTML + +```html +
+ + + +
+ + +``` + +```css hidden +.event-log { + width: 25rem; + height: 4rem; + border: 1px solid black; + margin: 0.5rem; + padding: 0.2rem; +} + +input { + width: 11rem; + margin: 0.5rem; +} +``` + +#### JavaScript + +```js +const xhrButtonSuccess = document.querySelector('.xhr.success'); +const xhrButtonError = document.querySelector('.xhr.error'); +const xhrButtonAbort = document.querySelector('.xhr.abort'); +const log = document.querySelector('.event-log'); + +function handleEvent(e) { + log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +} + +function addListeners(xhr) { + xhr.addEventListener('loadstart', handleEvent); + xhr.addEventListener('load', handleEvent); + xhr.addEventListener('loadend', handleEvent); + xhr.addEventListener('progress', handleEvent); + xhr.addEventListener('error', handleEvent); + xhr.addEventListener('abort', handleEvent); +} + +function runXHR(url) { + log.textContent = ''; + + const xhr = new XMLHttpRequest(); + addListeners(xhr); + xhr.open("GET", url); + xhr.send(); + return xhr; +} + +xhrButtonSuccess.addEventListener('click', () => { + runXHR('image.jpg'); +}); + +xhrButtonError.addEventListener('click', () => { + runXHR('https://somewhere.org/i-dont-exist'); +}); + +xhrButtonAbort.addEventListener('click', () => { + runXHR('image.jpg').abort(); +}); +``` + +#### Result + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- Related events: {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequest/loadend_event", "loadend")}}, {{domxref("XMLHttpRequest/progress_event", "progress")}}, {{domxref("XMLHttpRequest/error_event", "error")}}, {{domxref("XMLHttpRequest/abort_event", "abort")}} +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md new file mode 100644 index 000000000000000..5d14fbd64cc326c --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -0,0 +1,141 @@ +--- +title: "XMLHttpRequestUpload: loadend event" +slug: Web/API/XMLHttpRequestUpload/loadend_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.loadend_event +--- + +{{APIRef}} + +The **`loadend`** event is fired when a request has completed, whether successfully (after {{domxref("XMLHttpRequestUpload/load_event", "load")}}) or unsuccessfully (after {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} or {{domxref("XMLHttpRequestUpload/error_event", "error")}}). + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('loadend', (event) => { }) + +onloadend = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +### Live example + +#### HTML + +```html +
+ + + +
+ + +``` + +```css hidden +.event-log { + width: 25rem; + height: 4rem; + border: 1px solid black; + margin: 0.5rem; + padding: 0.2rem; +} + +input { + width: 11rem; + margin: 0.5rem; +} +``` + +#### JavaScript + +```js +const xhrButtonSuccess = document.querySelector('.xhr.success'); +const xhrButtonError = document.querySelector('.xhr.error'); +const xhrButtonAbort = document.querySelector('.xhr.abort'); +const log = document.querySelector('.event-log'); + +function handleEvent(e) { + log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +} + +function addListeners(xhr) { + xhr.addEventListener('loadstart', handleEvent); + xhr.addEventListener('load', handleEvent); + xhr.addEventListener('loadend', handleEvent); + xhr.addEventListener('progress', handleEvent); + xhr.addEventListener('error', handleEvent); + xhr.addEventListener('abort', handleEvent); +} + +function runXHR(url) { + log.textContent = ''; + + const xhr = new XMLHttpRequest(); + addListeners(xhr); + xhr.open("GET", url); + xhr.send(); + return xhr; +} + +xhrButtonSuccess.addEventListener('click', () => { + runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json'); +}); + +xhrButtonError.addEventListener('click', () => { + runXHR('http://i-dont-exist'); +}); + +xhrButtonAbort.addEventListener('click', () => { + runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json').abort(); +}); +``` + +#### Result + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/dgszyjnxcaipwzy.jpg b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/dgszyjnxcaipwzy.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d85b214128e98861dfc3548ad9f9793887f97611 GIT binary patch literal 62373 zcmb4qWmr^E7w#~G0}8^>h{P~-H$w?SIMmP`(jC$vARr*!-Q6KAAc#l}NOvnR3@O3@ z3Zh=V@7B-z+;#rF?_PWFv(96xH>>`V|I7J7OPaZVlqK@kxVMs}Et zgpf3!u!s;2AtB+ThmUB8iD`tG>6wN8zvbT`fDD8ufhU2B0|5ZZaB#_R{tW@>0RSK_ z&bri}bui3~n@Vjeml4yM^GI&5z-Z9BvP_pj8|cpi3&wvhyi5ek73Ar+GmAy%JW`1)FcQ+O zjnjpa_00+pYCxed9FtCgH}2XA3uO*0wwK?_bP1IOS_UQ*PtqsIrp?M9OydnGq=%aV zcl<_YPMpLQc*>Rs9L6_@ecrSv&7HTs)ENe!*iM zy2QGyW;d}_grz9Tb|ASU%_=Qf${;kq&=oo89S+0fnWJl*~yS)SunSP z{f*}j%-_+q)|!Hrl|%do-pYsw;^xGKX+Y!z1tV1iklH+j+Jr{cwl-26?_AUJ*wvqN z;89f4Rm^87agECr^}2i22^VC&qTmZxJZY_!pAS?QR7Rwc?!kSP;dls~5}HSrMD8ye z({gP~np)#27my03t@4KxWXjMO`Jt4GyhI_2s~5qg>UIIg1vJN1x`nne@8KU}tC^XN z;Q9mUaRdSYS2`T^2NKW?G&l1T3}3aHg{+5U{jP(X3&yHU&mlHMAaZ0(-7`usBe8Rv zV-VbruhWF$kY5Mp8mo_u0^LM_xdbJG09=6OfDWA%%#fDzQqYtC9UnCB_;_YLM^Lp&`Fs-K`u1+Q2b)A-;{bMd?@>D)Oqbex3p6WcF z;D7p~0aKt&ba?!z^uLG3M)$#f-8D_qjsLCO>vu?I)oE+~F8vQ6y4W>=gxF{E_|E0Z zEYsC?lBHKFPK#XR_YR{nixSZFioI7qN{QtU#T;>l^1-jQx=Vj>X?#%0bvwj@s+DW z8D3#1msQ(3POg;|Ozb!pJ4X5)qOq{!ck#SEc^e3Q3F@Qmd@6%Vs&ox9 z%be)w<^<)H$eCSIIRIby4T zV4meW7DYIr{Kw-lA5aIv27$wAa!eGxAw*7OaR2}veHfmYAc=PknNR(#xXb>{QE&C7 zlb20>g(`-w)P3Vu(Q9gqw>~X?Hl_gITp`HcxmY}(*qgInsbjYA4QWok_DmWd6UQWp zfE-|EW?gQC%%;GBYlf=t@6XwQB!Uy!v-z99uD|+Z_j|9#^VEcGlaimJh32Zr3(S*wW5n{fo3j%IKuS4e#L~c z%ZJ`Ufjghke4~ROt-AUQ`RICXAF>pW->5>sJn25Q4v?#pE@fGDp6|wAFz$y~FCAhg z`Y_4}B$7in&3B2(k_}`7)V8s#^fD+heVM z0pneD!r>GY6sH!%YlsAm%bO|Ypp*n031-#-tgbH5b{{FDj!r_~lZD4m4*C{a%Tx zLJdH9yap=}nU{JD8vrkoWDZ!clj3o>7W6lh;pdo7>!^&rd-UW+NWnILZ~1d-*WjN8 zaS4^y>{{P=Ce;iTG>ihzP0&eHmoN1Rs-*~($@5AqA-0HmnsOkCO`L{+r)zr5x(2vF z@wvaDQc?D@8*1dltGhXOW4SHFi08nnJk~ufz(TV~38t*81(H5}67+=m%YM9BtK4>0 z3jHNgP^YJ%Nr+TkTNO2|Eck$#0|j6k;eUeQ<4Cj!9)wC3hNDM`|eguHiAo0_N}*!srOrGM@WD9(y1+$+K5KL|G{0 zf1JM*@eICpyiI0byfi0*{esbRNs8<=4bu`1YBgo4DfRKvZ;7-!BqiRxA6e;!UkZuB zl*{%=RGA;zfl2A0qIfF9k>LW+N}Pj8nl2wvQ|XWX7xc-T&ufo0^M^2o4wV-sl6~FQ z7)$i*=8k>j5XU5?a%x|euRGccR{<4b`UCD|pZCq96nm2wNqH#FN}7P7g;&fnS45~( z5d$<-IX6K9n+vnN!NoJ7xY?hMoIeGPzBaXZ#%j@@xu`!eWmlGWS_sukk9156YCfLG zM@0tB?@?XBx~q9R7n7RhJ#a{CrR36CsA*fZO5a$^fyvlXR315IE<%^SXZDEL{UOI9 zJ%ndQJu=ZJ%hi0%Pl$UuUD4*Ri!jQfruI%C_qr0!C=&nTLZ^AsE8Dn7|!jH#q{ACq!g$XXxTo46Wgm zIl8JE>JvWnFj&9-`8Pfp<>S9wKV@lhD~zRgntuKKS$wQt!aD=WSY`DnN^sHUE2}At z{@l^*7+gGdiy0RsN-ge_Q@)6R4)dF??YlvOjn+r)GNc)E%EBwn<+*}Fib0rSSZ3aW>_UH zQ56mV$TQK=45<2Xtz2Cb7fr8wmUc~DbCf6YW?ML8`%R<-UpmH$8B|N=NRUN2i+x|V zdw)Z=={!;Fc4e#$fg}o+#w2wwR8#HZ!1R(DQ6N&P@&9axyZu8 zgd>OxO}B#Z_>GWgZy)>}UHoOZ{EK3L7LK`K=Ic)~6Wra*YLc0)mwZWo`2LL|%e}+z z>vG(`;B8S6lYfU-Nuw;+5TTQh#)Ooo;Yf^7X&*>QWy=Rmt$gbLsC%|$`Xz9?-t%DE z_|bb|)ioOfi(9K?o_)z?6Z{-ulYfbx#H<=k=)G}VKCWM?70>83J{+yRyH22FUfr4yG&PB z-T#N~rXXf&SwColvw;+Zhu7$AI0%lUOcF{&&__H{u+~)|ClKeh;)}Yz^7Iw@dW)tx z*KK1^ccSI$RhzlH4xkk=OqFlXKx@+-rgd4w`&#WTZyc&cz3Fvl@a1qKY|o)i&5ToI zc}VxN#x@TEf<}WZQMkM&b~2&q+3qHPyNmg_{2V@q8=Cw1a5pPTw`in~TIu6z8?@*X zu|M>4F3bt+@Rt<1xcRd#h^#P5 zy>nI(6G)7V9ekJWS(^YMW@EQ`V~x~4`lE>n=7x?1Z5ia>v`uGgHms+*CQ3AP{&I|# z4hD@+)O4|~)-tQ3t!V0;)7mVWBK9v*mp-NzKYz|3PO-~2PpGn>%BNJpO+QoTm`a+G z0w#QfWK_6*>()Y~5si4Mp+~@DR#z;D0JI)$mhg3dXhX{eAWo=1Tf{O<-K~lVf`w zg`)1ZhjMU}@zb7es>Qj{Je3hoD{&9CQU(t${mCv`IJlEfRE3iafb%XLkiGi*5uX^Cs};N z9VenWSm%4&=<2Y1V#-K9yoUHFzq$b%QXx-TH}kW0#;0G?cp=Z8qYnM07tI;`oX-wV zpm3>M-@V{1=EDykE3sQ|$32GI#5qwAT^2f%uF$@;eb19)&(g*9vEk6sgVNzoiVCIQ z1y=3V8LUP;^Wz&@od#h}<5%>3lp zBA6Lfn}Gl&##jouuHWJgdP-N4wg|Rgo7?5R_fyx`bQ@piIdq@qBXRT!@yNZD=+1G8 zdCO5XEUI4WuX?Jrk3DYLOcQe(^zAcb57!5V`~#Gpw_)o)4SHt8N_cIi40|*cq zq04VSV{fowob8pXC_@hd4T^P18AFnrbzbu)svpjzcq9E6Pd<HHlrj<=r4LyAFWxsXB3tucX$7eG;hvKWRQF`n>=C2b_0=cf8uU zcjmlHW$)ON`{48{cq?=&3XA^nz9@O>s(bz7H;HB<6Jbm)&@;@Z1NrwggGmctRgr~5 z`SaPEo)7%2O1F$5!)E~-Kd`PTl~kotM=ZK&36X#m4EyUX>BqU{B248EI95=a&npY> z%raYDe_o$AuZL`TPut9=S56&Z`LABf_*RAKz~dub4_tbmi^s|)^ZGUKe~WIEtlgvL997@je}FnR%4GxBf|DCTTU1_uvUlI)MIkcu z3sv=DNHHWR{?3hFCWrkY=j3Uyh$SvaS%8O#{UfsX=7W$|(^eNWvPT<9nXWQ2%96Ir znf@lhJT=poiVR@QhC6$mcw{?4%lZ;SW7wq!lP2`K2`(`0miptMxLH+99G&m^Q{qoT z=5LP-1NbUkr}JvBfBuEHzRXYe-rUbF-ESB^Y;vofR^gE{CDsg-a#MCxRJ*yBu#G9T zqre7N{i|u--Q-AB6j@j3CzytMr1NBSLi<76+pio6HPMqY&pa4qJ~n^UxK`=HWlX){ z_3e+mJl^rr`}5*i!;}aObF5PGE-xxMWu+O)oIyseld{1`J}-wD^a)LHYQQ?1 z7TaBQ@HR|ZRGC3_HczT;%L(9Q+7PC<&#)VnFOchEp51CMDn~KQvxNr7)wQD-ZjpSq z{wHk;6RA7}h>}i7r9evh1Hq}+8n@aZ1sl3vZknZ4PVH<%qEtCC?S!N@5Hg4aTg?1O z*KY8i>{SP;q@F(kfg2Xl8-JUN-*oQ@7|$GeG%>`PzQp#sr)NZP)?0tm!V4p3=jNWh z^mvDUFj0n5^>=S2vg8D?F$2gPNyD@qVM=R z=jIP@zEr4*HPIO*g%x?zG~ggb;liBN=a7>J1BnN8A+I{X;4bHP}W(Jg(Z7RvXN z;mm5!N8yFc( z1zFS51r^!*D1S?#lGrJbg7;T+c>0#;0H=5$16PB8HF5_#`#5XN=N!kI|EO+u60dW@d2qZvvU_yS#iyI$ z65;o0qy;yPmJ=DeeR}hpIr1$O2H%eJmHk-!?dP8f5%%$49tXr8BX@5u2}*%DY&nW> zxfCUB62{?9*EuhV2xlttgcEqiT$-QKNPuMna13KRN;jk-GN_Z$XSjXADGps(WeWZW zhzyypXMBi#?R!}>J$N_2jD-~}|KuB2hymhAM94v7GL|u+!d>>&!#nR?S|u=x^;Gsu z^tK|1G#x^Tg=%PAnB|J9Qc?URn;|E0Wb`P{HtfPYRE%fM?GL`ouW0E%-=~`ML)t!+ z4S`63q$wO#aa{MtX6h>KZ*l+&9{QYLupBs{XWmjWON8-)8^3sJN1i08hQD(Y=e9Wt zJ*9;aCp;m%IZK9J-M;GC=D&SB=XLmtvH7;itQdGZU59Xl;}Hrn#gI|z|JqJBoH@4d zjrV6T|L!4NJBRi@rq8fd1RxLPzkrscTqy7bD@M>Vq17jbs4*KiTyHER$M5S{Wl33^ z`>)e?*!8WCv1Ru);jMUk7)YKfOfCf)8E3U4tJiRrUKi@0yFER2a=K>~&ZMpYMy?L( zBowfK2ZihKK7ln*K`#Bni)krhdq9VgKac0z25n2v`Lfqo&Yym?8UHBzhw(rJ0E7(4 zg+mD;@9%!@FDmr*!@kA8b#JmiHR}PY!sBUhTsKEiXFjW+Pop|H0(6^1c4ZVo{@taDCFr1VWC>KelDtJ>pO)1q!CE5CcewmU3I*3wz zKRH~nX9$C+3K+`QkP+Zq%7s@7j_12dIXYp#cE76y}<7 z2p%&>b7p{KIlp01L$jt-wyqWeIni7vhL^!i`4E(#Z7@8-iNi*sX{eTc^}1rALY&DG zO&mD#mSbJHPLBNk?Fd1RkeP63S--}POWjAcssi_4KRDh*9w%gGZDkaoX$%XHa58FJ zdh3+f7V@l3+K}y)1E`SYfEz-=T`R+m7LYO^2SQku&4e>6-NldS>YKaw)Jbxnmy==+ zC!dr{xn{cSPKJNn&>CGmm6X#M+9oyN$$9n2MGd%%8R-omq4+P7U`;%n54uU6JP($r<1G)tF z*GW(&Id%fJm~m#(m}e;gUw%YSO`bQ^dk$`i@rux~)=t9Y-f8WQ$qPjAhLuy0$bluz zEtHFAugD)jRy^N%oXJ^M;Q|1p0-hQoqGZ4VEmks3^y_ES;H}P5eKpU~(E_S?aTVoJ zkTLViHOswHYFB&{0t8+9k>7`_?edC(e8Zc6fX53HyP?_NYtn3^qjLlR32C6Q@a+6U zth~g{nSul}o*i~NdzR+x)PA1+u*dD&4zZzY0>+j_ht;F_WzHxKN`!-BTvcwb`O5cY z>8-eys>01lXkut`g7MYe017aJYY7B(KTq*%zNvnDwT;Mh;ND?0yLuTDmYnfx%W>4> z73)-0DKJ?2<$B%RF?W+rQ+(rBj!A^)n~Zu8bOqrhn~b^gT*-I>Z0(o6PB* zXF6v!?I`Bek%L1DJ=uHh;(Qc2#vK2l)Zr3S;bWcH@4+J`E?1*zkV29t3x97yV$u|IOg`4 z2=G*%FBYG`k-y}n_|D;e%UxTfNM|U=Fle8{( z8(;mGx>J>s%7|*IsvOS7ZS}PDN%Ff_?`wB|`EUBxj>xHM-(ZrzzZ45P^L2s(fElcV zzeYE^7Mw0#bKMq?${z1X^UwUP{Gt9V^a~;AMe$9$!izGLm9FqCFEdya=^|oL7w0ha zGR>)GL^npBQ!Iy}e(P?OCPep;vi`64r{8{@iLt1=t_Smy4~lP^)sE*u?E~=My^fG{ znyqKiA-a2vwpV{2pc$}?sef=;p@haiUdxyymqcMpUQR#t(u4aVbw(12D5ev+_VS#W zL$qHa(rK2cA^3S{dq<5)dDg%%&zrQ1+$dF*Y!PB2LFK;1hb;Wz4FyJE`Ae*nbT zu7B>$gUx>C@3KjO$(auI#}-xXVZ6VVrBcB_un$xuJ@4Kviwof%r{R4y^!AFSHo=?DvJuux0{$He*HxA?k^!B72q_JlB(yt+TOcaF(D!%Pg)DM9>^o;otG{Y@sPtqGozI zc;(lL{{Sr0Tz^-O=nXN`twC$-gfA|(#MjIBLuIc10n8O0KL6_4xb?IIkfpT-9CYb- z=<^v`6LL#0^d3Q+==r0yb=KEZ)M(bLZU#wf>s>M|+#W{cuya69kOJY%VYeSuMkldG z&A;E;9~}KMEWN!}Tzt(~{e89Z*EIQoY*Dc0!z)>|FaUrzmu5>azPB@wV1lQ>I3TQV z(X>c~{E|7Pr>UB#{j$zru$t-Xhz=kY{Aq;L6{je<@u>gRP*>%3;vdTD!QkEFqW+G_ zn<55>1ENYs#=W*%58dqq`V>I{yjW&7!Whyp2uIo-Haf1uUvPXG#IBLeq0b5LX^u3D z@g!J-s~F`)8sX)g2EDq&@z*^CpMbmeES`6*^4v0V?>+N5w2;3q zs5MKwt$!uYg>-0$2>?BD!~}sjVUZxYa0u5~V!*-v(P>q%(`7}5d8Rhulu(&=Mmb%e z4S6mIFI<@kCFUy|wf`YMyXJn|^JFP)YStBfVN7xaB-Pa|sS^%pXHOqLH;HN@MQ2@|!9baBdK0BhI5ROv zZ8#nqiRa~C?DVgiqT@pgm#qP}P7?PuoHrRp0{~aBWpp070s`&?VaCWZ5(SC+GfUVt zt?u)%>Ne>c+7TU)?x#A^X+uc}aS0jX*Umre(}b{Z25tue)l)u2rZTyS2v!N=;sHdM zhhu?qWeY-~p(9egZFM!Abv6A*bB($WOEqR3pl*Ny6=0kO;>oNJPuqi~KEu3QiYKW| zmMf2F1PBD^0FLUQmQoNTMUm;F?6*4cp9zQK`Z}esnx3{V`WkOpVVsIFu~j920Y9R@ z+0-Zf@sq#v!%_D)Lc|F;Rm5R4M7sEtRD^g&X%r@!U++{2gFp`beEKkLy$Y=b8*#;Q zKJ_rXaD=T6fN;t)>tyTm;xpq9DSLwNYyg%bEA!A*XdCv&{>S+d9t0Q^3ySq04lW8X zot-Z>)8l?8tg&bw_ej}kb2NpG=uujRHK)?Mv=+6Hz&^&=UYRU}TVy&;naUd-@~3GN z$&@oPMC>NA5{%CG%VoJZC-uoOOK;oUL$@Ae_1$}GeT3eiAyLg&C}08HAw(EP z+{);T4&3IqduDvg76=2=An*j^kgNs&0PH*Wj#c+CpuXugK%!eTh`(HgOPDAVEsb^; z+xG2o@MYlAV&SX$>$%Yup6?Tb0h!e|aqa8#1%yY$K0!>iuS6KS9c`X{`*d@8bj!YY z5S1iHqEdy_Nq@_)_~GrB7SiUGD|A*|(?t60Exp9VB5VUT!6=^d)2C-$)Z^mrg+Lyo z4bm(`R-^N{j;qqvrIV;^q&|2b7uaHwi&yQ}DC5@a+v_%;kNJQ;37u9*z&NKeE64;2 z?qPOOKpi9Y@)1RhQ$!wjyGeD=m8I!Og>pq7>EUq_laF-_u;B% za5=S^h@ZobReH>}LBYb{y9^_g0R4(QNba}!#xKV#*YQ?j`KhsM|78mjX=Z4C*qW`> zE1oEkQe`JY$??4kWnOH!0MJoGNYx4kZvC_7hWgBG_LdA6o<_6bz)A{v^l?Vvss219 zhcwT9cx}^6;Jgk;P}xTD)t?U)E|FZ#()kg>Yr}+ZB>=!jI&R%y04qL(vz9|ckPRIF z#4=Bgl~c|HLl8lVw}aF@y5fjtkcLDsvk_?>1@VjtSWlaYILGC2XAoB1l!Q6+-9~WW zjZMj^l-ZW655m)Q>9%PUgnnuf0~XX1YA7Qt7jn|PwI0w$@G8vO=_wU{rXyju+^Cq5#lgNQL8fDTy+<=jtj>VGM9G?ULPXM_%!P5v`tK zgy2>ge$^lQdwW$ZF%oGpv4kY@w5aX_5H~*Mlnp>TtC1gHxRoM|xCBSlQ?VdJ9;U)c z!X!wnf&)=h5reWzxt|1qs}pZRUFntaY*R$oRKOI~rNcFwG(5OC6-D*vxcr7@34q2U zt0zq5Vnd41`6mR>J+u*C7}9CnU&S=^?d%CUy=>}v!8A=QC=JQSJC+j7>8O;#t0WOA z01s+xqZFU2BUkS{&X2dV7pW9cq$s=|e26rosuIaJnHJ8bo7O4OO<91OPNOvUchY;W1+dS0X0rZnByp zeq^L-FG{+^Of1jkV(yptK}`#u-`3~L-mhmFWce|(nj^O#=K`Xj?5&t$DIkm8l43eM zcm_|9&cRReG=oE(|Jczh1yTHfsB>I5mh+ZZg3Eh8n_mBA3=!h#Z;?q`^!V1Lt*N@h zQ}duzJv)BZFK}8a+;ywGSY<_B*3z04)%KgOAiT@*J6}`DIt7udcCox%ewoa}rY^Fg zrZ22r8J3B8!uxexoFfJ&>!P&Y0>%to@~SVZv<`haGd195FGL6hhX~y|>`RTwN*jT? z-Zik(3K16dQiwU4y*P#DtcctKLB%ZB zSBw=oE)MV^#yzN-!ywwnZ(O5RS^r0=R~Y_QzHeHR2^G%*M7LMzdYy=3YjRm_+!IP> z@wv7LC09r&uPVBU7F-&T8?Eyyi+ph${Lz%3Dk#%4BVX-4U{g=|%-hyS(9X}=c&2++ zCvy%m?fTcOI`>HY*sUBB*)F?Lu5;n?|RC5s7%gxSoQ^&i!HBUUm*h~;7)u<`g>-%aK;f)=B zoK&LH;~Q;^h~=tDuj6UU-CvX2QC737G+xQY+sdsNDW!Ln1No2p>cSQ~rS1-p_9 zg=(Rd&9hE3x_KX#KJ$E^ZD^w9sC8~rY>Z}rXy?JN{zzkWs|1-zGcD9(-r|UMy3>Z& zLD-f*6YJ@nnBk$sk3o0_KZ)^zz>Pb*ieDpBYQX*tN;z11$pKoPH4 zXe-3LbC__pRC^i6L=LEI9olK3%~`9@dT5y`2SnGiS+Qoz)$(R% z;PWDm{|otM*>FSF?OJ%Vvm7ZEj|d$Be0oVnLt9y8-&1QadBDc>8VUeV$6+$&u)YsN zF10k0JE97ymBNt&unLc695zh!XH5lSUYQ#N4vxbsPw;_6gzACc&-jd7LT;fL4>jWv zc&vdGBnp7%RN%RZ{tPqi|KpQz>WbmCD-nyM0FW6^alfS{z?9DjS1!S}vW(#|_b91@ z#QWWRHdD;ntXgW|17gj(VY>~J_NL2K?fNz(75b@elX43@WmK#m0*<8{bC zJJsCAh=}B^4f({p$4%#jJ1;x#JHmF+wby$ABT|eqC&H5){qioIth09Mw&*YhNAMr_|sHH!#;=oID<8$|2n6X;)v^63pV982{dITtHe(bnxOm z=<7yolhlLlXbc-C;&}H6B}jYGxMX8~y|{Rf_j(yzLt3;d0kpY-P^^QS`c`54;*4mL z)aj&mA6^ZhY{*d5-g1;PzrmwRzH!(z$*_~shraRvM=lamr;_k}HzUoXvA%C$Nn+~< z%)>vq$oDc#3-0OrE@#5{OHQF=rtqgwM%E;BTMH7?BJ%30^06n2YHsgV$|iTP2t1bb1e8;Bmu*7Dg0zB(Bh^ew-HNTLaw4T%An6Rt3m{hG2eQ1Jn3Cbuld59T7`8cHw1k7Fv4 zNANqL`rKEh?CLn`!N>soFaUtu93$=2pIKzp_}^y0N~RKcjE2AWu=x>o3^_qmf)UPX z4dcQCEb!p!kAfWz< zy$g)r&8DbQ4ZL_nQOgHAlWuA)0cllCsu@3|DIQtwH zd76xud?(WLoL2Wq!)O5KdZULN)Ho<&5tHRefYLpOdr zKu<*xE!wwWK#|Ve_^`-ysn#x12cQ}OMQ0;>;rkWc;eNE3?#7Mv6w@L%eRxIpz=(a% z6>ecgibZ%)28@otw-Bn+`%Pxj}wq4n^&)gh3CBg1QW0Wk~`0ovUp2J(yz2 zSn-3>X}T>RXx<`U;HfXO90t`fM=s=h2)l^43Gt!DG+G}ZHVr(h8Y12lb2hF*7oV$o z4)tVRt~g{}Wu@slJBZffSfVEzX`QA?HeHwbl%D!q6$Ne7=DPUlP3F~bkr#_~u(oOZRESH zoNuv>m-AWP1zSCMAPd17CMGIvpT+*9oR*0sao>6A8&uFi3m{1qOj=4M(iZaa(q}Tw zMH<$*ERAZ)`vPJbFNx$(%GUOsedTVpk8GPB-?S0(aJ5xUsjD#yBXi7OIBvXhAX>=PLMo)o6{!b;T}SmutKb6+X}>S^xbOeS?z9en-(YJ zviGP!*VEMeZ{~3RX-A{PPfStU1ct!7KRs=TYH;FzDjjTfG`noJD>h1+#3tw)NE&7?n_F?l6eSr7i zzDiRPwXVpFVy9_A7>|yj#az%;QP1woa{gOsKHI#bZ{?zjaa0(lk_>+2GQ+58w4|BW zw`nS6`=0mT)e5O$8mp8-Wkfj3{r6K@Z};lK{usA)kUH9(S+aMV()AJZ){N;ZHTGOtEmt)Rq0O*Kswz!Qyms@|vff?p zZJ4;4Fy7c8(H@s(lM#ud3v|MwN`HDvU(h*P#{6e-u3jsovhCHB^`>w8HgaCN+uUn6 zCXc#d@2S+q*Q+4on{l2L{iZw=OGuDl;c>trjGvE9(IQFDXFc+8?nAp?TG`qGLddyi zy=W{4lc&Jj?N)eNa5Pb5mxbX{>hMWGQ>m3KgmcbppywQ_kp+c6g{8qOLS-(lyyMJT zrE1Il-o)1&)}Du7R9IHFb$97@-Qv@r7H;yNotdp;Cb~4p|WAp{sNn> z>}q$J52bR%$GYjpOVByudZ8~hB?=)o4qf!O!9_(d3cymeIyyhHUGzUX$IK*2`o|YP zvDcV5EnL@I;e`GD{WmT`ZCrdml(LOcOWq}bii6Qt1=uW6yOaq$W7o ztMk4N%;Vy!#yfS>L9@bQdRT}>Z$}gc`W=GpP2zU7vblK=1$naCmZl1B#@XG)O-Ef_ zB4?M2kqHyl`_!2!LVP_t_H8<61&7k^nd@)fUx$55rH=bf^B!!9QT zWf4FA<+6J;6kMUrOR8qzR@51p(w1ru=P&!Q4l|y!HY&B%D~mq%;j<;rwO8a1@!Z7V z04Orx(I;Co-Dx}+E>-xkT3{)FGtvz0xB1KMg{P<{42+e z$pZCM!~BPbK}P%=SZ_m;%gf_rqcGW?eI{;1i<#?W_BnqwV z;}NuVUKDI?g0H@<8OVyBY?_~(a>_eg6&QO&=AOT$AYD;Mq$2sVyI{{^ZFhuN;M>8t=XtUbiRD4KwwY8%X9isr*qd3yCS^x;g4=Hi z;&l$WzVo$H4lF?nQ@yO4NQOYl{*^QhW&yh6_@tnvk-)@THyc>Oan%{0)Y+T~(js{9 z@^l=R1*a+J{qR_>`yLDIh2fR9W@ohYJyV{TcnJhssQlHS} zK440a0)RL`d>|e^E*|hdwS)InjzC;8JW?>TAig{~6GVW3LP$=V1#U$ttmO&S5ecVa zRS+%xU)6*-&v1VJ{s#zCxc10HUHD;*x<0gq>W`?g4%{V+D2%sRlQWo=Rmu$WLUPB+ zsROczy|VA?N~5`mDt%y-?%(tM_6hNe%Wi#(rvtmVP^Js9Vael3q|SdE;L3&bO1--r0cihU(b+ zec^;{%qerlSL2^NPJi(=t(`W$QCsNwGZ^yuUo$dT>>>8If~m)cTkYDi9QzF~HbU3G z8n<=*8cm~BebdOze7QQZje0~7<$Y*fyBO|q$GOfs#hpJFlSTgjW&-$PJ5{w(HoV0cS7x@dRX0LL%tfXyt^TD zYwZrsr4j^BcdGAwJ@Fsk!gvV(Ud&_6v`_MC(R|F6arL|<{E)Bz>6F?VoT&Mv8S6vG zq=UmgDYIac0-6uXu>n3PP52^2pCx8(L>&Kc_2C2PPnM`|<%k#B5d%6yqmG#zGl!R^ zF5XX*3svW|zGlb#bp6o8d5R)hGu9-ht*3ZbEE+ctZvK2-WiarIaVs;d;yq$JeY zKnkZGsyDM%js0>@N?_$`mzv7X z_{&wASE`K_HZN~&0@C_^f|U=GUqfDjJgkzFxgdTJW23Xo=;40#PECnc3sa2s*3bW% z70dJ8>AUV00ZH;*#%gi{MoBwDQpAEtGIv4Hf>kQ>=(yH?Y)2Y&GQ5D{O~rz<7o_?o zb^4kDnjTfMYiE)tq}!1+e*Na7bS)T=OjVzW>fM`J7vuM}amRx*E>p zarWJgN$UCspfkbOSlTFmlc{p36iol_cp)yp!9cP>gQNF9|K1CBbTTwxQYLA4d~lWc zMr1GE4b$S9hkCqv_7@f?-twUGsg&ONL+b!lt%_zZS+p!ov+v~1EH}1_Ly1}Df zrVy!?QEqhb^80@DWA?L#6BiWTa;RkD@CLQboL7oPUZH1tJOh8|j*Nz*x(p6G_nimu~wA$P661=(#R&a^%eyP}8hgpC}jr%mV zC=hQ%iBhKZ(wne&?c66s?iEpypV+*k)1TwgokJ;DuO~~S*_twFt!C7>4;v#Itx-eo zaxOyk6q8{sLc6b0zjkUoQfl=aUndbG-*^|xTsWM6{re$%{_jkT@iTtcA6n-vL~N7| zBy@*Ro%3+1F%nyE@AqZ<`As$&_F zRu~d3V%m3>)*Y5M&5O^Qv~M%6Uk&8{QO~~j-H*x~oOrI%R4mWoTmzg`*=>l6bcyIv`%AP!O)^w6Pd7CjRrsu-HdgJijXv7* zBg^i1YxUE(wl--va=+ZTX31Ifez-*CGW0~YC|!Knez|tdf-|4BSuJ!QhT0Su}Kh{Blf5fdz4SrN~|Wa702EqC{pVbK~SyO z6{AK8swisrm+$ZOdj5P~ujl=Y`+i^deO>qUJZ6n!LPkGqhl{JLHZ$`veiHtgkfA&;i zeZUDoRtT_5zI{Q!COxk_jO`1%@xTWBkZlaVU2eedn}kz|C|<6g%VP*Nocxg3KibzgY?_}@f;6Z4FhfV} z3SIs~dT{wbaoj06@uev;K(H`5g5GH9+nMF*mZvVbTpYlbUwMI=eotw+nc175Gq8rs- zQo$?8ApeeQhn{WG?LjAe9g)sa1e|eUia+qc!=mPK;5BZzu;udi^miMe@t%*u@>8O- z-a6b}EH#9609U+ubsp?N1M0(&*6Q^jMsZhHK0OB~F3FH0mzj1HW9u5he@9_s@Ibt} zXDrf?{Q=U9ZzMhO={9P^i`KS!#JEVcPB58;01| zl$sBK*j4_syWjedDcwCf-d#2i9Js=%lm?qIBO_k6X616&$y}R3PQ@z$T}zJkfO>dh z4Zlc*;VYki_EL2`L=UWHsw;o}w_UXVh*v^_p1UTiun=93jEHQ)8`PH)(Vit%_6jOl zF}TMP!vqAeB|1*>uwdQU1U+12MjjO_;Jbd`_`?N7{e}%3R}bz$AYr| z=&wn8#R8$G4F8+r|8TI$&tYON-E5MbsSK@%69$vADd%aR!CGPukv>RT(OM1wJP%h<=_Y#L$V=eopXD-1pLbYBRLt-LHsy2^G z+#d`qM4OXGanmTZiT(w&BQ`qwlDHAOYIfC3F%z9a+hy(8c^(9F>(9dQv(>w$!P(U? z&y*0splVYS?tb5RKh)=GQ#zGBgEVhM=63>I%IYr2>S-H)aseAW6H$;RpK4@Zi`PO1 z^NSp^b%?>+(AEinHnuhA>u30stePy3S{r*UQnDdp;1hwiA`&wgD>$-_ACU9aaY*OT zl0<%#*Sc&|T{#18R+?LZEZawFulY#_%goWmDT1|#lbM4xO<0wq^cBXDk6qzRx-)~B z$|jzCAhPc*lu6JkVaT8}E}61e&`uV3CbKUDN`<0!JY_F!pKgi^;e(H`sSln zImf$lyVBTefRowJ-htI0*wuZR^DyDfIOh3R_P%i^k0SMxD}1o;Q1xXeEEh3{5&TPw z6IX?!c5fCQI4q$hLtx*7Zrebq`GRNMxVM$#Y@5kDP}5fFn^aY+1JNpZIl_~7-0f0< zAF*B8n_%CV#hmWZIlOI|<$cBRiqt}STSN$VNFcjhv4m`=7}yZ0`lmFx&E&j{5S3<) zCNZgRbRLEMmzYVvuI-S!g^%jSwLUqObE7>b4S-IffRL?lscZ^hq(x$1O7ODrX5eU2 z5NoVbMwb#PD^n@Swmq?Z7E*5_{ZX)PrbVx$JBhiA`&5b`#s{!x%f|{o+8`2Ppyl2=H88Lm*jd+bnW*qf?5Z+6vdKN?TpaCAj{Zgv9?pJ( zk=?VdSEWu7lwII1u7aV;hWerraQ$Zkh)OvZ zgDUoi62SD0gPU8a_2Eg$-g4YTC~Mw|tcF(vf6L8>D5)`{|8)w#SJo)sQJk&SeUNKo zP{gdT#5LMcJrZLuW2?Q>9$tW}b^f|L1K|1+m>xG7IGsn28XZrw15`D|SyY+WqS-SG z(V=({cW%wLu-~R9@xT;Oe+v5O<=WdMoPI7xVBWaO7&Cpv@QUm0@ry$4$UJ2pMvk#; z#RaCNcF!2{kp{uhFv2PO&RyC_GJ>63M-}qXWwj6Ym?m}-J_GV}p=^aClQSn9kLD8; z0Bi+t8d1*=O=^&B8wqK6_APXye-;*%+aQ^Of2frxP@1T4WKI-GN~Sbf7D=p`xY=ZV z`+-ef_x--9)ABvDyLpvxPXvL?5c#4Xl+CACdnz)dg$-@KLfJ>Tjod8JN_HC!30cT1 z=8d}JLT>QZdMs)BwCoS79`w9kM8Qh#R7VxhLu5c z^gFxft|RWm6A5`-=dOSZm_8Mod^w^i)`(V6TR>*!5mhvK$;%D$Z_?7g7LcwMW|n4hzARS>J44-@Wf z@xmCTqiA`Dbncb%3h;;M09?KJ@`=X9ywqwFKVumf0t1;ZvAIMF0ai(x>@M%6t=;IT z8c?=fuZslqYd0ff(W!-f=fkj2>1P=U&5P4cNESJU;O92%TLgU|FKN;?6s+;Ew^B8a zk?zBaWItEugroLfXu*F8(n>_X=QgaX*cH&9vU?Uf9bCyXaO zNBlT7q{V&0zsU_B`3ed}icuL>SGXLiCLOeN9k$_8eGu|zc^OL}y$`)+P%-x=v? z8T8N!HFQOyj>4YqB6PGhR2_16_S6Pte&6zvQtO>v*1;W-IqzuydU9;8&R4RAkjvWg zo`jeszPA#40pK^ALG_R%(4*$r!>^th>%D1QCvhLP9!_zuFo18b;5*S}wo@;o1|MjQ1>8+t*R$co%(t z@TEfiBb-U8?>s<=Cg$9ZF4~q%QpdS6g;P#ZUvaVlsa=m?;llcVNg5Xv*wA8 z%6`o&N@8N*VIB}ovnHCo{iSE^Rq^j^kzr<%geY;gcUfDt$f5g(kRgfX$^AWDmD~i} z)9M_dobu|FNVJ$25U&tw_a!D+&(UKmV(~`~pF`iNIme{JW@Znv&2mBabqTw2B6s_H zo<}!j0!})1&)D@XD{6&Yr`z5X4K58$L*Zrq2-cS)<6XYwFM=jNkb&_Cs~WBmg(l) zV^LQ2jg^=4Bk5k|`Wk1W*w->o1mOc&Xxw}DuKcVK65B>vC{W|Xd$1gFnVpsi@nhJI*3 z5AW)w-4ibzQC#@@)+?PBos24kST%)ODA@t4IYYhLZi|dI&+n2B?;KzxFIb20`Zb(e zfg%F}^|A+xSKEKFz4IkGZXud(;|TSZZpbVM!g6$mrXeTT4*i->V;I^i1PAB}ht#^s zxgqQrtst?WvChO6gb;uhOfZ(tR1>{Lp-FtOuM@3((P&QylrGap5Yt3nn;4_E{Jl1A z_LsGv;o?9+QEUe>1tTAzmVxvItJJedYjFv(J=a9t#YZO>o|HmQ&)3Q!z=v*|=U`H} zG+v#-8mH-kna>j~dhA0F*TNvpo0luiDigD@hRAx0zfErbOQ7U#_S!iCv69w3n0foO zlvl|)wA0o_Rq?7G$a5!feoBtySj!#(`TuKEdqNPjdM4jShvl?*S;T215s;;Z6f>)$ z4|C;du+v=apR7u3s5vsM)rEd88d82===A)FR)rMw_2B!?UDnug6swEfrf}!-fQx%w z8o=&BIz&8GL99+7jVn(!`G-Iqo|v!jL_9@+l>`2%IVm&Va3oo^WWu`W9uo8dotmVn zUFOnRy~Ho6td-U~^XS{vk1_vl`-gD^{=arR@FsPo`zf<^{C~n~LR0VYSWs%Y&IX7r z${}Ux!0XPIXcmzXwV`$qbs3$dVS<1k@sC+uyxzuePpUAl_r@%`d_&SWAHVubC_h4) zQzDcgJAMB6u|IKBdQY-ew24q3*vm#l6Rv9c^Bamp4V^Tn+2=(Vw* z7VF(avSv(O%Aa%hP_u>SPcgxVi#MjVsrsxU5bVa8kY1(!1?pL*dE&RUmgejQmx>53 z??z^z0;v2=LwS_mp-l+D?25_x5$Dl-gnk4wv)es{qtOTawTnjJ>^ z)}2A}SL+>4?ci9)q7pt>4vx9uogN%bwvNR+*PLPTc8oRoVR%CZW9JjrHrKtsYx}{- z1`GT}&PIP9D-%nUjB8#Lv+EfU?~~KKy!kedUdXE?T?H-N4pI}#Dky}$V0j>KLzpjo z@WDRkvEz8^DUdK^>}QP_-5kRn>AYbsHy{QUrV2pw+d=%D72Ue^M#W#G0DMM{5bWhJ zzNV)%l}<0qy~;e!I#t26qLgDAaflrp$0Ope6p-O4s~T4mNno0}E|yElq^N8lQ^+D? z$DXR#G-U>g(La!Jeb9sQGoD|Q-N`_QOIlst`2?biQW7(E-HhWpyoD`rv=sL|CoLs@ zSsZEER}l_%4tN*%PCTc)WR#v5x=BW3XkhBU?X1!O73|X^Jlu-!NOpn2 zT`W=`W0!%+cK;>OktH)Hn<-YQ9H`1RsjS`vIOW7#6Um~^K8V^1uD#&cBZ%gG2 zi;B34(!4a{^bj2B``wp3)||bCRQL=f8l<#FX zKo@R!1K;@llznfxJ#Qd@m9lV-N7_KlS4@F7sRIzjopR3hF=A{a`Hf}_28n<}mvG5Nn9=PDo{^eIC_#At z3Ab+oPYau$GF;g7K&>T02DF#P=`){d?nbZI!1HGmi`_Yg;V7;3;DeOjx4@#v7smF! z(+$+84)TeN^i*%@`4#$tR^>#o+3H_^5`+XIIH#X$eNf7ahaO%-%&PRs-Fl`zGV+#w z25r6uWS4>z9>Rk^F?EQ|vCS8wh*czB1IlCop4h7&2RI6EAiy8UZF*8OUBd8!f%$}P zM31fGT`UE5g3ipJM&~!VI|oZu6RUULpZXy+0RPqT3k9U=jXK%D_^>|F%~W^n7w4O@vwr zBp!+_vAnKQBP|_((Z$IYRsWzKWAbXOXF~05%mqKlb!HE4SS;aEq}=ekH->dAxYZBN zmX1bnUK%MqNJbML8d>tN)`cpm4`dbt))l^?fuFEK_jBe6$q~=LXw^|gevK9y1Jm$I zE21OjqB{EM<8>-{$TZZz4!cegtgKk$4%K=59M(Q0E^?A-2&Ic zCx^MYb-vD?P->^;Iet1awRZNn2i@86^~eT}W}>IG4KyEgLD4_kNLuv~-DG>tyqbN)Hwl!2z9V(cXHSWSn=$Are-pHVw;rb+EmCCsLr>%a3r@E;a-;#a(d+^YB@kn)X_wsH67R z3i}j)?3Yu>m;v()qM-X18&x;s$ZyAiv$wxW(6}WI5FiA<&_6PPRB!r;kpjlNHxj&H zX{Do14R*7!`c=x@nAFnkS+X5sAyi_oB%4$!tk6swbkf@&*KGdzx_O6VdYHqXBfN`~ za*--{GT%^Z$1k~O@Y(?-Qk?TZOgD|VMW8@UZ)8N+I zM=csN9AnOBOk!CkWur4DPXDO@R)9Jql?&f^;}M+&5RZJgKpNESwV>Jg5~o` zV2FGmxU^lw*zV)X$PvVM<%{z{-!n_WD!bdSCYOhyW$+#^efx0G_XE=3c>cubir4{O z?#b)=Df659DUFNP=`KFtL3qkRc=EKj{6~pYHaUd2ix^l4I`HLQ3VT+ial6-a_`}`= zM5f;_ur7rS2=e=O?|mJQOph7~g8WmERo~~YLA6nGXBox1MpxOi))pOJ$c#5X5k@A& zKHx$r&pedy&#q(TmqYh^0|@-t#1!|RKQ>VRQ7s{*JZ7rSoW<0&CYt4w^$Pg*dh%)y zpHhdc1kxgX7vK$>K}>0F;^Qu9`u3TR=n_T!U_D|E41AkB(pIgVct1)OsD@K^Wn%1p zgp?rZWgJi<{q^(F_C})Vhtk3hU9{8d{_;z{yG$1ubV;}ivkO1|o9dU6ulLkZx(=u- z4SnnxQt-?-XP{O4{au&?cXyPGgM4?ak2-|;_bqsIPwYkOZIgPi!(hYOgbx{-axgQQ zQk;lFSX2=1J}@UVfV#1Rnxa{HAB(p$`GG#Xa*Ft23xiDG(EveaDNFR|G>rp-ip$!| zu^x{OKHag{*Y^w+&>xFpBJY7rqPZQEA~EJOa)>mIn;r`GovzFfmYCv(uLYu52O-G` z8iD|=IDh~tm6;O#r%;EO0a@r;Xn8H+GZiiI=NG{)_pRHwiFG;u?8@-OlIhOMs}#u_ zxRl`OkF6-KNR4Nfe^EQx<4YAHcqkpXpdgDhUvrOSA33QH+tGso6~Av;gv&bZX;P2N zZ{i^plXg_d@rC?_*#X-npie6S8T(-97w15}3!-X321c;@I@%Q1q%}yk(@tmNC^~Q{ zNuD~E9$d$#t{<-= z`nEsaW?MO3c)|#BYEIG{G(0W-3|1dh=cyjKk{orS7YT7pQI#SmJQ&{5>B{b$WYqb< zr}N=9mv~c{%OeOGA>eg?20xx`JCubOC8jlG6&cy=+wVyl=IG6A?uF5`5l0%$Ivp(Y zROs(pc|0us{f1|N2GYy1a}NDYXTXAeDv!WlEvV`)Iqtl*XV&F;;Wtd$=V*1?q-(Q- zHvaG0@BO%A-?41xdWAxcZK12hkS>if>kN}jorHW3vjKSEd`fBL*-$xiS1GWsQRT$~QV8^s4mk8Vke1Sh1t zTinY^wroHT3wcdd)c{Fsx<)tcd9;}(Rqxc7kFLP9Qd~XvlvOwakL(RqHcF6eI(JgK zSMV!py6v=Pa!Pjmxz@mEn(q`J-)maqgL>w12|eO+yELVq8UA1sXXH@T;g@QZ zU$^?^-tSv<$&+iXgP1j$@8?CKDup&3Qx!KE(}!-<=;G?lV;OtqjU+n2LP{_~iO)Lx zBI!8GsvLXbX26MBO)ne`*Viu=T_-(M$=r)hD}`5-q|N)L5sh2_Ef7e|%D7t$R05Z6 z>~uH>*QP7*ag;mc9!wpToZIk&e_<#YB58iZ&&zAtOqrtS(YiQ9+uf`b0I?<2PcykR zJM{A9&zO_$rno>$u};HR!KrFL%4z%ddt@79l`(X%vqU>N@p< zS)JaoHd}N^b`n+F#pR`B0X7~Ij!+PIlUS*lhPG%VO_^zW_bY2#bN{O*=xMr8R)aW zNoLIwBVRnz64P=SaAzq^GknH#_p7(I$2|JW2AJw*I~phm?bm8**f-5U3SROq3=7eC zQn6=r2V3LN>B+=1ceaS9*CMju-7D6t?}cLp&opJr48+q~J93I!oq`rg>Ckh12X>7< zsZ)R`dfszz^ToKvXT3c*>j_&9wfJ3bNaS$B_Iw@Cc>nK1?mVy;rHN~_<_JHDWW&mX zB;;7NS?b~`G+l^g#uRIWp|kUr4=$}dU^MGxySD#CPtjTwX1UgA`R#<4GP6vR z8xY=T6e5N92c7N-DfO%36+ik8^%2!&`kaw2zi%CEX#5xxm0@yjWz9h*eb(O(1xt)Y zqBRyJ@ccSm#kd~nV({He^fX6Z4zUD|Vm+8=eD>*18zTs*SskqC#QFsxgGrMNOo z7==zqsTpZ%oiFa}ZlY+;UsH>jEc`1n-gaHT=GZdZ@u9<`cd|fr#6qT8g9?8}qZ~fR ze!GH4t{7!Z6;C^KM|NlCbME@ek0OVOlHa!y1b^R}b^0O7n!VqZywcpD}hTS44R0C>C*4 zn&48~fhMDSHJ|b#aR5!{_)ZZ013D>09 z?tj26?qJDpmEox&kE;m{^Bwwyb7&RXG!1P>3Sl z%X}mC9bir?RIo?WPWzu81y#2PSt3OnTQ%(Pn?=rfJ0Vl5I!go1twG=FGRYtBSXO6s z@br{Ma3Au7Df{ckzjv?ffh(u;l8JI>9s^5SM%`j9rPJ@Ege5kjp9AUd-t{%|)*vND zHnS~=K-C4l)VwNs>!xw)1n1-5{_(3xatppl2auW*|3@2-9wQ)zaQfxs;95)x)IJAR zRlz^)<;fw>DVSD%4q6j^H(%&&8^yL|3O|+hE3jh|O53-5O_Oh8Fe>g>yA!Bux_;O)(d{Bns=10ZcS!%mh*tqU)W3qGV>e{rilrM= ze6*xjnp&m#KH4w1+jj74X%j)XH}K}`;X|o-f`)F!X)x8PV&IwqTRa`DWpJ4(T=kgg z)OmBwS>PspE4Dj_&gH%G#JsLlqvn5;H_@8%qvwmFz9h?7+~CW+HPfT;)~h1bKEVbc z#nSB@2scK;20Iz5ZJ4U@>(jHFPb`=Xd5mQmWwNy44W`B!EDFMk2I^58v!1>FE7`}N z5H6vg$F8af4=Il$}m}vj&Ouq-kNz_o+pLu5~bT zl#qSKbV%-Qzf5_oqx6jl#_MlDUmVmx+v9%E!ko8x@Tu!d#motu2J4-^&*ztOLr$H$ z{x@L3@#H^0vB-x?WerOky1>6xxtPn%A2R*ipE{OQlBnnLB*AwC_P-Z@+4xK}SM@+e_=Ww!d$AX!lPI&^BmT5BMnA#S4<1-UrXJ zzEENd?(xA-MeZlp!rUI8O}}FiZ0Sz#m|o|4@0G4x)cR;n-7&r3!0IeNvK>=?)=FYQ0q#>@|tSV@8iS)TeQPBOMFMhjEWaluLqrO{@h_3ugg=iRI zzW19j6E3=X90oRY$rd_c3r*bApMTr*<43`1scO?HLxeT8?!%x?rd!>^+@Af7n6idp zO9_J(lu!>U zNfLG?H+M~P;`h6F-IW8$NG z-W;KrvNZ@*fFy%!72HAndp4GdDCul>qc6g~Cs0a0NYXdOw(d!}MX=D)XjGNfOI`Jf z9l_EuD-#Iv=C~-?{_Hj9n*N7pU+wSaqzGB&)DBQ6Ho9P4W}Pwzjd^qo#tR@Jy{R`KyaJ$N`he! zyGj@B`x?N_#pz{}fBn;;oE1JfFuFJMvru=bG58CZDNa9zu50BZ-Me&r+zhW5yWpw? z%+7kd$5C#zM&3s1y3nrFVhBOOkd>eP+l7tdB}oJXUS(dW-JcHf3DtZn_JYmnM;=r4 zS-xX;vCz0|2k^R7==||02*&M|GxpkSP(vc+5r;UftS0s>|GwpBc$wUIJgEbT^ynvF zGq7H)bWzett!s}FJ~Ic@Le>(K%q)YHpzXMf=G8iwSD`4>luPucBrScAu~>tNpY!TXcKs9nR(51rnsDf7 zkH;fZ_fI!kNhWimC-2#XeF`knJ5#RM(|}PCQQ7lT9j&zY@b#iPnn_v1#yzjex8BGe ztC?k*0&twa3t`xfrO4wZ)Z90y_V7SeZ) z0}iM7s}J#K)C>Res?R{1m@>-Xm9*%9#e>gvud}}|@!qaBXgSz0_U~Bnaw`f?byI%2 zlS~-e7s zj}Hdz>%2i-FK3#tR>Gn%t4wsEZGxmbn%9oWVbN9&=Ch+6JSq>d`+(rxWPB*QV^$aX zOI!IEXXei0!~ERHC+Li0d^gaCA=om6uPW$kJ6Xxd3C;6 z;Y}N-2Re72W>uf4N*zsf{Lk99p>%F3R5{izn{RsaL;MhVaEQ9Ec*8^q(F@NNi!IsT zV*Q$*@3ReVnmN@#D$l5e%iEH%Pr`(=8FoQPb-e(K)r5W3O+hG!MOAecnA^aUEGy(S z_O_uw(utz=Yuo(LTPXN_%$=->uJj%W(cUV;eDVD=+sNiw;gdeVV$d36)hc<)ct4mi zPuw9kx7JBV?(V!3c5lADzXDPShBjVubYT0Z&UKS-bjpr0Ox@FNr#LzLlV+9cpJv*o zoN%e~0UKQ8OfDqM~||OHNuTH?mI^z}0z%l-V>r030+IZesi7zU3{&c)~7JcLjYRs3VhY{w^e;8&Nt zQ&R`*F?r1)N4oKag9OHE;Na# z#m+#)!efrZJS>Nz8|Vo9tTpQ$7k|Jsx_1S@bi2H5d+3!TnWdA)DYsbz}re~x=i`ks@A?Wrf-s=*Aq z{kjl;6;Na|83IjzYu`6N^o&VOhNs&PDUl6toiGFg?tIRAGbkVSv2aNHJB}2UvJ$IL z%P2RF-_)yiayu@@?aC4@E==Q>FdB6tf1PD;Rx&;)e)v_@7fxV*akql07_oWmH_@hGk{NK`-rex(EF8NmB>7>*S#;HQjp0c!Y9r^E=trDwnPJT3ih7 zkt0{WEk@Wql(W4(#lvAR{AVUpQb1p0o|S91{eAmFt7vKT`yuTtm1DcU503H~H=hz~ zf8QeNSaElxVx})Z)o)kP)81d}Vi<9=-E3uIye`ZS9V~^sCmkhtaA9 zacF?!Q(KMi_CZz?|e3ds1iOzXPDLyR^VgG##;4$Dm zMQQ48CEPCz;-qI&5+$umPvULU(^3AbbqqVEN6}K|Cr{{?^Hl!KnycPX18{W`bo>yJ z4!&$Z<`axf#)-P5XJ5NbQAwXIZ9Vq14x%9t6VUk>2-bc7C_o_)^JYHLdS6`z^Q0Is zVHo|R-E=vl&!wWvg&AdguyO&ev%*k%iB4al)!U#b!A^qo4-l)BzDTs3n&K>)pc`p0A8Flbt2Z1hbP2mFxd2UrAtr@q+2$#CQcm#1I*C8+mX)`vE^W)`<1zzs>Iv4g%>E?p~+8wLR z;YboGj`h%~^{<~_jkBse*bjNp4Eudc%c%)?Rmf=jK2moFa_{`eq|LKoL92SI!CcdI zol-fI-eY{W4}sKIug%b);IF5LZwSpZX>f^`L@H_yOe8gK4V*z>y)AY+QlXMVDs&Gm zB^9I{__{@o19aP^ZtXQf&ytwgy>v1!HY4Baoj`_0K1ZmSM)PA?*tny&y8H5y0@8uDX9&V3N>rJ^R7)A zYD_PxwbJl|sc-?kSi>;tcTyfbOyPr5rtN~B`xZfYCI%v8i0wa}zB7BkY?%*E?WwrE_8B1G(w9c7B# z-wQtaC0hv>i3->#?CP5$Z>^a6rUG%b@jSXq zTJEc6N|$ujETD@Ve12v(O#ph?;r{j2_Apk8zw<_77@&jCRMto{%&i4MnfjISx~fNZQQ)Gh zC3Qwsen^V7wk>fHp^W%_tAPL1#p=qFi!M@0(!d`-_tbw^uL3&RP)#j#WQ~iTFH}ZT z%l;x8Vw+$CUlAv2<9?ET=1rvu$M{vy-%C5pg?LQPk#m00ACF>W(#M+;t59j>nB=p_ zx4qcD0ZV_X*p(7`W=u3%L27v+al0+x3X>`Z)&cy!wW@Tw;Nbm%6njs}Ysm0AHNsh= z(?Z@C+cFDjqp;U1o4kdipA!K^*&!x4<&Y=;v}{ApFzN?<~Z%#qdW(1YLax8y*G zE`>V^E)~J=t@-P4Yoa>|Yp6QK-?v)JX69a{nw8>sA92clG4oom+O~|`*j48D=bX13k)lNTGm-+r(s)a_pNKLui{e3HW678p;bFI07 zQ~sk@miYVDdZCCDjDPxBbGyWY;n_w@s&zEvJO4nY)CbeA6gh?C(rh{g{TFw9prMJx zrC%Pf%BpyG&}3mo;*NI$>PYG+GXj73L?Xr4o<-|vb=F5F+;A1UJG^>JLrdUs%vzp^ zK#K6c!-Zq}$n^92m1So&*we#zV6N-J42pd;KjZL?P0G!Hvf;Hpz{v`Gne#I3MSk%; zYB6a{nz@%bcVu8VYvEv73^Z|vw&DD~C1$v*E>yKU?Pr|vf35C9bZ4<)s!8$W&Ix_N z0en070Ccob!?ua{d1#*zH*o{Oip%vnT#?;wHXr^wbOOEW!*%9Z25cK+xiC!6tJ%go_~6{a zztsJghD4HLN~8L}$Z|&7AF7^((-0yK1wjsr4+ZVY>O?nvj#gpPEsc%4 zkgmS2TZG(>%{Ut02{?QzbT1EHQ;=>@BuBmhsXQWt4Mqq5VJ1|-(=KwK-$36alM0Y2& z%y$U`L=lgJaQZ;!2sxG*$PFW|jkXSz4wsTC+INNmKIUq=ieE^IY~HqKxO&vx!6Gi3 zVY;z!c>3w}PK8iNcz8I0=~XLU{~}ps@a@=A_M(t#L$A5jQFp_J2a*h#FL?LI#_6O9W5PLKHQp}*h!%+!iTJ;otA-NwO~zAZcrw1z zYH&c}TfLjCtdY_}J6{9ZXqZ~7uh9%{9lUX!;;XLnD@QVn2M?J=cRf2TW~y78-LlT0 z5({}(?uT7oa>xmxtWx#YXn=K4zeuPLh>{|S^^I(THyfqxia-QaZPgI2Bj+EhBEzTh z;vYq@>EtkV(W+g-%N95FFkZFBWaH%lJLXZ{`Zo)sN2<7q8-0PGQx1v!QsY3%zs}wk zRZ+eOI6B{C_^&DMUmg~9#$V5s*>D5ci(YDBi(a7~+3wAddCdS2-En7U)cyKsHiMa^ z1|f$NwnAEd5ilo4wIJbbMs&uRhmL|zf*}TMu3j<5Qus>UY%llhaQ74rCmgveCu!r* zt8pvM@F*#zif{X+=7XbHi}Eh)&hcE(qiHdVrPei7dyv7T1a;!nO}V##cOMd-axOuT z9d1!!_5j|VfcS2H+jsh5M^4Z9-}#q0A7@o{mW=r9EvVBGk34Z?s{)82#^L?P7Z!-nKZuy!^8rdFSg!4z}#+ z%bs&oQ8GPfKIyQqC0zfI9&y!eKG^$t!GWi$jG~R+O##fFf3miPm$Byhk21}($Wm=} zUR+cw&*Y75;io0Ug8jaA*&hMNG-Ke$L+sP3esb_CHcV23iQ>z1u;q+I@`~AdbGxLx zv|!vXPCBF=zW$OyjJJpQDStWSv3h?A^i&}3EkRp3gaC|7Wx*;N2XA}2dBYomL%3~A zkh59o^j-g+*;X|Yo$3iI^NtQ<&kSXsY01*x*`)UgRWH+&oY0nT172dxS#?1dsj;^4 zi0Q}4!Ut$6d8jN>w zHD$iaVE0=aY9jr_y!`YQy|3!(6u1uChdk*Mx`=Zih3FOyehnh!wU17`!qIxlV>hXD_T*-Y0wSW+k?N6g*EA(_qQj&lJ}Dzuz2|ut|Df!HD;-0;M)DlO ziKUOEk-QT_i*yf4vF)G+MZE%5aFLYO`1@86AE5PmJOre^Rd;0lIqdAa3JCFLkdOrhk^2e)eiJYKzqrU8$ zYg$Y9c|~?CZsuGq7H4TnYOLBg1jU$gRBaZinUa1!yDFA@_U&8rF>x9sxuN_~uXuKG zPqOuj{XMoCWikEHb2?GH(Mcuev}unv880kGbyMCM+(|E~MoQXuF2u@^av^xhpr+yZ zRgmOkWsKa=x6b_1NJ#m7=#w`zxcz^C>*ICe<^pXjV%A5FJ56UY*b!KMoQ0F z`Ojxh*;c*DSbTffsb5eIk_8|A<9i9x@bw+zeS6QQG|wAzD!Js;yj`ds;58tPSgAXh%%;oP5ahbqzIS$uS`!xX_8%E_i4bfz1%FHWq2nuxO}_5BG{l^9p7Ege z0UO2GWt}44wn0-6%1bD*#c}3n!_-jF{t&Y!Xv?E>glHh>W^R)*|nyN-K)*(&DGp5g`bpZ`_3YN#f+7VJNhz?kWxqF2NBXH5|^x2KsFD*ghM@^&LxE!9$`C7@MY!=$+agE8bw$2VVM*fSRP`1KwZdXH4%uI{Bcj)4NP?EXc%9ZCegTx9gcRy^(!9 zoVo1f-khXOpr<5R#%|rnNfU|Yrzic76*RuHEB{w32631|%>C|@u_F_QXj}}T&G-nz zx7ytb{SVxDJzyGII@_p5Y(S%9#)JVAqxjcEce(vVW}u{e+awDgQ{jGmV$kSmsd?YL z`_q*O)qR1+AJ<|{gnHghCs6-Tj!zXEf{*WN<%a*-+1;^6;UC7@@%byrg|66h;in$h zHP>ERqlPT7J($@Y2llDCc5JOz3vq(Pc^ZwtOWa~6i-5byNV@RE7SE@!#pvX1!YP~X z{sPcUU+^E#jvir;*f#`uILV6#`rta6{kuz+ouJ^?RV#aV=zt1zS^npj@Tz#j-GgRc*U- z5PZqFUR_b^+Cm{`}3n4A3T&3v)kP|Afpa!(c>Fy7ji+W?orq4_EB#hWWWOD5k6 zbNq!;gyNnPlF*;zyr&SlBSa!oxL4c70*43i@X?^r$ z|0SH^yveQloWj%39d=&S(>XS4yf>y(v(IhA4FNkoIm#3~WS*Q%L5FylAH1Gmk&tMv zSi0FZa#>=YD%$#eZWVm7e*SUUPIUT@6i;IdxJ?Qq&CUOwr*gtX87cuu&?Fw)%hcho zv2Midzan=l<}ZxTstc-8$4m#kXzZ=dHo50cC0CmMu*BZp7O^!`Z+G(#n^T#Kor%de zDb-g!2`XKGU+Em(`vCuA*A{EZ-@d}zVpr&KkA1U$m$Kg9qaOq{eC0sA%WU12jxdKw zI00&Y}cr1lxOe$4<76yW~y%$Y?kz zWg+n$J@wA;^E+2glm$mK1=KTmn2+EKEjO{IrK70$-k&$~xDor1QyF*eqY`$~`Vm#g z?><{!Z2mixO8n>D1HMnjm!vN@>c)=ES$s7LW(VDQU4O%>QwtGl&^dnt1`8RB)fu$f zG8KdOGh=8S0l{H@uW?r7!~&vN_mY~p_`c!_OH|dIXx-(%ucpZNiU;!VOHbyl>&kR= z7PG%M9Z1SbWCU}ki5F}A&g zcE@YAVJ~8JIr-vlTPtf0kFt>Z5&is;CAQ3T$wc@5U%iu21d(ylfiH&tq`C-IA zJNL?EZsj5|KQcchLa68PbJQX5VE^sZiGS`i3VkwvRqzv^+%9ZAa^=D{3SfPyZ_(B?-#Z1JvwXp;zSI%&5*S|N{ z{7?hDt>)Jh$BpayWssh*c;~xL&F}sIJZ&bVXgLJWF#bMlfRI{*zsB$C0PjnZFcBZI^V>z*%%_qcWW0U($QJX?Nd5nCxnI&&L(d{795irujd5Uwc;aaFS&`<;3+r z%BvjEN{9C9h&EB(I|8lPP`!wgZfJr!nK5A)W(-i}o}j0SG42G5HoQNPJz3YK9Pkm0 zT&+fJv3?M^#@6#$KqaN)$5~;=q+Z%Eqd511LRv3o0)L^z?6r^)6De@O?}6a$dZHS* zDG8r*R|h+~NR=Cx@o^DiN*_{`w6ru?$Md8n+YztunICjasFjlrjyNT$O2_F5o~?*- zvd>s9ik#$egmSIbpj9HK8s*17Vc%phkW(WQiOPTn#Q}0jSBKSE6oBHjzFND!z#LG$ zMS27wX~`^apWH8Uo8ecgK-rIR`7E-l&pHnIdFoMc9mX zNtX;i*d7yBouY`){`{1#1sZPAvSOt=^5XZPZNqrC_dZu0m4roKpvI^g%v7dCl@@6b zahhpKEI3!bqc_CsHxQ*;nnA{aK+E#YFx#MKD)vg8kIqGpa1uDGdw%+_f`H^@L{HvCbmSIs$?fRn3#y}EfO8einb!&zziV%eq&s^odFh(dKCy|m2 zh14ew&8j9GtsW%!SrU-D0J0^}ZB#1>fg<S5guVvNg{T{`tW9D5nC1$w{1Sq0#OweEpFMWN~f>2#lK`UXIHUR0-4cB@WY@ zdzf3@YFl&t=Ap352Rqe3A4u%+IG#F4!A)C{6n}6D?dZXovr$NPO?dLj}X6u|2 za@)RfP-df=tlu$_yGSWn?Ndn%4Qp-g7pE1dZ)Vz;d7&#jry)=LRYssP7Y2qdI~u0{EF9Set5RZj)|OZ$3?wpAPt&;0Zj zk57qnh~p7*se*NN##2;a;MKP$%@4E$((~`0E)UX~@I0-^xq0tf_OSB2pUschsyP=?NL}o zEO23p5&d6NGTwA9)@=YGl07s8j9U(tE`iQxIq2yWzrlw0(Hf&s!u^Vf_f62vj=lQm zPn^ExmEY|T0xA%N^~=bh3+F&5^{qmE_MLA7lzAPox{kF+=p2Aqg>V}x?^h-OzQ>~u z8(Hu zT%A^|+%bkZneR(CsXR}q-Rv4fawDRJGSlmpEw~<$VZN7Y{a!+g%e>|Q_qn-mLLD3O?vwj+VRzY- zK3d`NXy9m1SSDZZw%IdjLQ!Qk9oMu&(QnP=#cq|yMa@~dM5ro@SOQ$u4<#7xqk8(P zv0hs$sHUGz=1fPVp{Ef16DWBZgIiuedk)dpc58O1P>dpKYm~K17jY~%wrTC9zlCwt zOev-7aq;as@>wwv>kT0%PI2UiMfv0;A%bm@{o}24Ir4UQgO( zg&xX1*}rq0%}(v{yD5f|1#EQH&AZ^eg^bNIT(XJ#BvB~anHKbYolLS&mVo7Q^6vi zQP|x>MUPRWuus)pJlMMX-S?PxU~m$$?9#8Os^H+@l;2z*YraFEQIOZuOaSvGi4fJo zT)1~?tVOc28r^Tj@%koYI7)CLS2ZGRIdwyyx2i3BL9JvEF@aZMlBaFOYm^)ladnapn6EU+8yC%6 z24mz6EmN3L)uiuY-Y^T86randWWL@IXF)34AG%#>kJ+OtnBG5>j$=7sU~^anYPK?0 zVCZ#2v+BN=!{aT@CFixw$Q>K~XmbGb5we0Xq0e`d6&~A#4GP{n(fIUQPbFI2#i?cJ zqSD|n@1O{715Q`12KUa;vl3LUafv-xXPI>++vDd_Lp5x{md{EQl7L~}`-#)5JvRE4%hx|dB25vaA**+%o2av@j=E=C0!fgas0(mMd4AOEx%e)XA zpgE5T*T;IB&U4fmYU+Ger^4eqZ?htmAn!(Ykk3*2MfWNO6T(7MAHstYedNB<`2Y^p z$TuDx+vw^CF~tAmJs6m^hqAd6@Z1)m?*yW?QC{VN{Gio z?HN4zUoLj`u(?5bSDZ;#~&a=}LA-}u883-q{ZUCycF7M(^d^k|pi8r1b# zb98#oQ;}&qSI77s>$!0a1M-F1X9VyGJ7TR~_N`pCbkyPM5R3e#0q!-Aaq&_T*~lsv z+Hrf?bJfh6RO}Bqp>?md-1t=fd@S?t9GOi@FweiZ{DQISzYpy*ySZ}13=#2*5`<;x zgUET)_pxM=tO4hmye%4m0vx9KpE|ofcU?Ze_O`KoJ%RV(%-;!Z^uj@+mkmN#;V5Pm zSM}4K6OXzY5)bGD&PsN|5}ntST+JGC^uf}~GoIJ~ydwW1MuIX_i|G0{ymT_M;cZ6G zx~`wYII-mQ!K~&Mu3+CAr&q9B*4`g`R~qtTV`Is8TzZ)wC@llGmd(Dk^2Ru?998bW zk`g(-&@&!9w9!t{QT0bmzwvXeX$KZ5dD3tRGuiQN)$-viDl;~6mo$O}zwc+**V4j- zU6p%r#qEMhE`h95cI9MZQF`n0+k7vT`ObTyF95#JHVa~vIawi_y2>f(R_Sa}!kU$4 z01}^**nYLlQA<={jhsXk{f1!K39eS7t8-ifnRM;$r^}7}z%pPE)U6dNH^2(E2Cvt? zeY9)Z>e93=bfxw@;as&+Ip5DgFO9PKX<-#H63-A>i#L&-;ayziWdi>%+MQMhq{449 zs`vOMSjD#jDts~f2f$ZNW^@7&-OcgxnD#;=nt% z`U~6oRqP`fLh@%?C2FF=!^da65P0Vew$~-tb>Cql>72t=jGoYP;fvR%06mOVhN zIl2Pwb(KzYKQc6?uZn~ooxoBPBRx6uMJbUIsuWWKBdxy5y^` zru@!QfaC4Y_$V>uEe2Jj7_G7WhPT9Do*K;>$f*P4-JWuH(o{14*mmtH%EDVuw#9Mq zG%{!Enl@96rbdM2OE(-Z^8GK=E-<4iNgZU~N>vC(4K*EBjVRbq=DIbQkoUW+P`fmi zt*`xI?)6kqaLPCn9LNPwm6+|v4d;h3KUvWI*r(&dB_-`Zbw4ZEGOiLhh|* zoy)34eMm6+aIlBEK+oVFqFmZx`@8LN(HayQzlKO1jKEwFueuzR2#+xYPO>>A1#&{7 z-AiRLbkya^-NP$4^T;1-HOvl~C<-Uysn?sABf!E@pL^H@7Z}29Iegq_jyzCqgL?iX z#l`1fziL~-C7|V?s9(;M$jfdQDWAwDVROQnzZbu|17d=trFO)yDVF(LLhBe zVuiXvRmu6(5&o}irjwq&BoZ?_JGx<=W>g3z(mNEU5AvestosIgC~NlXmj?^~zFcYC zMMf<8-h2_;c2)J6b`JCOj_S+VJAD)!OGrtd&z1g0-%-b(t2&$6ucWqGVt3>q{5Iy- zL>@LSe9=MO;Lb0HFdg@@>cFC#1%^XZ`-5y`5s#n|W6-5v*_9S)=LGdIAl=f~?}BNe zs_e(FAYXKQsr(#rfTlUGi@%b&!v$yiIe!Kkvt+GD9&|)~KyVExZ9ghwFBMy-&f0I7 zR9MQ(SbfbU?cE{&(~~`J@VMdK-glnqI#=Fb7bTxJfxSYVg^ADM+ls0(dg|oH7~UcB z&>NbdQH5VHgmkBeOZl;&Z4G?`VV*A2%s=p#M?)FDu{2x8=?t{ zneMk1D&y&9%~tKS zKN*ep4NI^G3ddkxn#)n|fU?@rY_)D~`Hqi1cHHdvaOJA0^su5USaFz|I^jM~_FT7e zD@D21771~_Iv4Fm<4%?fJ!ZyZA)^t`O}r+43j8X=B@Be#E#9wd#Ts1Z#?~f|gMYC7 zVgR!XX5*=i_wlhz-h^ZXHS%TT3xfNN*|n{Dwwcyv=A+u|OuP!%PWbl`!MxI62esc$ zFm?-fWSDE3aII9(-a*c0jM_RCY^TcXPL>TkDwgCD=qV4J!la-JoJbGFhhSe z`1@-N8!|A~f%Us`RxkSRkfW99K#%MZ>Hw_%FQR>eIpCCjspXC2CxD_FEdt9FCs)Rz zg}CWAACsx_!?KESO;I<$TRgb!g2c^>$dEi4f((V@tb-Z~59Cg!J)X|0BErSlidD!=dY~k}worgaAFVt?io}Oc z^rXA}HBz;2OhPE=@uQ|Hx)TdUpMoZ+@W2_HrK8pR;!+?xdW$H&OI( z@eQaM64=wxntPTXB-cZuC|l1!h)1Eu*jwjJ9-EPJqOu0fg_dRCqKFIMQgOxk^l{V@ z;Ss`$#03^vR#fs-nlY0@%?E$dh<4qu^5eI$3Yy)@3!R$&+h#Q0qYoH6#;;u%m$2}l zpW-&+79e;-wJY+;MK#E}K{U?|B_!bSHs%2?n#zT09qJ z0CFNj64{}>%aJo5kGkMt&5PAAvFg<^2inOM5e-Z4QWTdX3!wD?mnLh|F&f^P zFGv3HMg5`V+!fA)qH0-iu+v1Xf|!=$DZH`L839F@1Z5&%ZIjza9$9O`ho8$y!ZF+D zayYSGr2KO>?BRzwm6!vtD zwJM<(UJXJ^E1f-gb&;0(7wo`g;tui;!MGanS}lqMB?YMkGndu1x9!jFSBJoSeNFE0 zQgS{Us4BUJ=bgrD$;w=Lf_ovSCN4^2I^P;PuxQx3XsIbQimgTC^x$8HtAAP88e~PL zFr=Duq@u#)o(3lI^5NQ|uUyW7InzjRt@ZLh1@S(C)R1Sg&(|@aR=VcscFzofCsV-4 z!xl6*8LbNpZzfmF-_#rgaBfH#|3so)m@eJS*oe#4V?G@gd1GsdDivHp2{80pkC9?J zLeE?K8xI_#WQ}peRj2@F+&2eWO`XwnP@LAFR7u;8!QXIPJtq3 z$ab#HRbKNrm_>U|OJ$6j_=!?Ht!g5icu#QsigKZxIRuCJPsYHmdY2+=Ty|}MoFeB8 z(E5m=BWWn&z3z!=bDlV9yTFv>EMfpeqqXz{+hC~8Y$b)C@9aXk~?LUKCL3whVOWi&!3w6KbxV6C#^?6y{}6HN$X zU9^9*&TW!&Dy{6$Y2z#{5MTMeSzrD^cJYv*3E<;)nTm>ca4YhCX`zSvrd(Z)OT;E4Qn`P&=RVVIx*#{_fB=pob4gbcTlu$7=mZa$XJn zT(^T3Vb#duNumkQ`Pfqi>aHND&JkMJ3ihH9yKeojyI2@pQC;b+I1ZnuHv_fM+?{3lrBCg-J??3Se;G;2P)4H^{| zJT&3j9eu>zEnc-qc@QV-5eOtiO0NlRvS2huf7YX+kha>mn^5Oj`*Zp%4p`y3wC&4S zc~mx!46yF!I*eEk_r4@c5eSFL#9tsV%{HcV3VFD|W>*JA^b( zeV4$E<(K2AAST}zt4TjUuz_DidC74`N z${1IcpkNYkWw&~`UA90$y;WEkYj$#Z(7}@wGZGTYt$cIcdh~`!&TRm*P!`(?Ie%RJ zzUAK@0ZqQynTN1Spxu69S$H^Ea6Ld-7y(t0)u+7z7s#q7$;s{s*GVv{!{qQej$09{ z)d$lf2UH!CpHaDbqC`YUlHnTj;L=pS0+v!SBuz7bt6(DJP*7d{q_H*%h4S{Tj}KCG zfrk4eOx-#|3NF6=u15LRMGP$Gif)}QQ0pCu$h3sOqhvL%hhI%_^@^q*zH#_5=&XvT zF3O!gW<`_T%C6@|{cQwlfra}t5)CJh2RZOH^OG{{+@R`Z(!i2f#urdcaP z&OJky!o*wE$?ZpE4j~R0{E9}xybW6NAEvdb7rq%k`n$tXN~)6_NAH|I%Ea#|q#Ep- zi8x=##4*T~=L#rNb7ilh{236KoKLKk`Kicb{$lE>uzZ1twVRQz0L0AF8!{t<&{vQR zfbMC9Mr9iNMGa#&(1E1`ReBOS+V26z_H>T!1AN%$Tmq*=?9$h0hnZE;Fvb~q9mf4Ukknye{^`LSx_ed0H_bj0 zuOy@`WQ94scd}|P^w6<@Jli|P$*weKu?rdm@;jDo!0HsvhWD*92>NV4VaU)!3_Z`mz&-iT1C+Wll>cj-p#p54vbb0!q7mp)kza4Q&> z;p3)}IqYUgrz%Eh$Vf1YLvL^&3-yZXuJPbNlD!fyaLWRsvJ~eu0Ab)((P$(Akh(1 z5OVgG>6V5Xb<)|OzqZ7fLi+$WHQ3J5sw?7|_20+U)OxO8RHV;q6np)O`iUI8oqyFA z{bkC$M%if~l0^WrCL?;$8M5|f<^0>#{X;jm`6?5YE;n{wlFVSSdRu<*s82H{Xa|*V z<;tnLXjtNLlF$%RA=puIyU<0&f-y~;)@Gi9#xr+vdS^*}pJ~+$Bc?@wZ;Zm6X5F~s zt!f9qw!jH5gJak6E=Tcy`FYhn+ndO)%Y?`GQCXu&Q%O(|qdQ3CrHga2^Q9W=8yM|6 zk0_lKYX%5a{*5yE97ax{wfuCtf$A{#=(gKQ&l8@dp`9U54(ylO=!=#sV>Of%TX~jK znV5eWK&9SBb(zrkUpiRI8hXT*C~ZKKp^+D>K@=vy|FY4WsygaW^9dHfZ!OK9%-g7v zFc-K@KeczTni5biV+GL*A+rY$B+6^<+<>BO!zyHv*9=jf(WoD>yDNs2-lOhhwlinb zc_svz@k`Y0;R^D;!Hjlueeq>=#0kOO1fmm!lI!InuSnp`>EI%@H3YAo<()p_ml(>0 zF(#^P4vo9*5uzli6K9i`whYFKx3}ZhRAa zmcpZr`VzrQDCs-g;(XPoEHI@BC5pS<5ji!*HP}r!bADL4y}DX&8XzsZ(5$T;1>1+0 z6&ux51Uo;gOgr|}nUtRs*+bo)r7i2Eq!|fyw|nOjfjLStxC?x)SCf9c;o6S_Z_fE; zS#jD?oDq%iX^z63>0xf`q`J$`9z%}orBlYRtxQ73McY_4$gVyd6G9apqYZOks(Chi zCVB-u<2`L{{Xq$mdU^ODe4xfJ2@SosGq;AP_N-xnj45)jE{q=5H~bJu`4(;{MR%hj zNi;-f(RIchAqKr}NA+pWQ2aM&P~jXsJkLLG#=liVfcHguC2`Igf*y{Bs~G{0K~)Z6 zj#XD*axL8EcZV+&R=G|Hi!w1brnh(Ewkc`3U#gcM8{T;WubW!jiA7^>e29VxPt-$I zXnG-27a61SN!@K^==@me35Qs4GH1yF9nz#v)z)}d?tl#NN49|A<%kK?Fc;U;09JrT zS~uPri_j)7)G$G@5U-Z(fo~;-!zDd8Z4<|MbB>D=QgJ1ZXgS=az>Gat;i~|)RcZGl;l}k3hyb}3g#}%q^^Oc9BdX+V`Bc7K9 zvieR{T&Mig1;HVNq$BjzL> zlsHB0UdY|demRv%@e^(f*sD2(GRg}FB)l#$L`wR#9^JLMdw#sT7X@8xc4vt~@+MY` z?gTPB&$^ts@p(I=l6c<_DhJwr1Zl*ze%jn?1FFsn2=6AVXmsc9=I^hjn}bx&fFtb$ zcjmWit6?n}SctIsi2_a)FE>1Dml)!rL0I$!Pi9ekPHb6LFo@JTtxIf-^>EuX51rCA zOQK)mOj1t5Ivx$tk3@TDa2_gv0!%sSl|@$>i!Hs_Ta5uOb)H{iRTlJHU63pr9L23# zXu;-K=Lnj@b1ajwdz*+~2A5|G8;f#(Eru&nVAlHBbS-(=iE8)d{(>dyczkFlDP9#8DBl z0y9K>{k|9DgFuJk>wWlb=(oSl^zOG7r@z-r-1p2!mABER1sPmK|D|A!@qhDh=4r|H zXlpMSUu!#_S?`n~?PvZ^rvmK$_FYnhxuWpQ{jECrnIncFN1c{sQ}sL?u44_gdX-F_ zdeMI233A#I>7g0+`7Q^omc_6vRqmxsh3l$bdzX$i{!{+=*sW6zfBH%~4}?cz6mLf3 zS#xL5YoA#qX@_-3(7NOic|uW^TA2e#n6tXp2Fq(e3GQV|6DRg@hV5RObg5@np@etS zUN*X9T}cd6(jnCzg^;g;k0v}UQD%*0u1_>l15OLh>u|#P=qrYrJD_jhqkA(rx~@Iw zja&R>+hE_Vn#&$dFt1@>WItWV#ONAkm}c1@bFY@!PUNt z!GMHTitvEY_41Rc+3fFG_MnrtE+-bHs#SvsEUfpBfT&KaRxg2ESS^qXC2!75VAVvr zWRaUtncu%mr_PwwM1fENHrWSkTQAHdcaF z(?g@6j{_xi4VCo4^Tl|DyEjfUf6>0C#A*Y9K?wK+rvY>3B&=7?N<0idWlh<&_XPE* zZo`{sgU~78tX7*!KqN0wP>?h`ORiN}4bmoMgMGq`2J9VbBEHtkD;O}c=^ z?~|F9dP`9?>fL@<_Y&^`CJuEYQksp2$zJS=x0Q{RZ^`9+wdGIEn_oHbwZo#VUa4Wu zFsffa#*d)zwpF7o-clOCGKISnb5fr8Va^rdB3cT(!_|B4yLNMmQ6q|w8n0;-Ep}1z zj{K2aParwYKB-{2C<=O9G*m=d51sUBhRmH=*KVyPy05!@90ze|C^trG!}l5>o;a$K z`Wklh9qo*2$ZYl@q`N_Oj!;j0`@(}G1 z&`sn(34)|mFA8CioD1Z+j7|vc`+e8hNG6W%BudnEfQu3jr+*+aZ<4J);?CfC^X8Iz zC7p-c$p5U<<7Hi9wznNp+-Dnn_Te=k)&x=zquD@wHv!5za65 zYK*Groj(4qOqj^oBEQ4@hFH_>0s6dw(3kk}fGLC48JLbS&&w#_FVxgsAf0}Z)4yaK zp`c$6$pbl|aLrA}t@OQ+SDXr)-RWgU-0u7ct@Q5g-I(;6Y7FvrxR)8YDblWj?=qq> zamo_@gum>qzNbA;V(*raCs?QNc2B~TO@pS|S( zu_Y)Xoo&=l<#tH+ihMWUO%ezkSvNgAUqoRO1*x>J4|`n;s{ts;dv6)4 zlQ1eZJ=l&WB*06-ZWhb(I;+2QxkQeb_xcssfHy8(Qv3XH&iTC@HLfTRDvWfZHJAZe z=fWC~G#l$mx5hDq=~@37hZQAh&NMjRl<8Ko(qUv-gX1IHDb;Sud(4^tLS|`CQO~ZX zKiQwJvWz_unpxGbOx&dH_wSy}OjTuP$I;USl{72XhkwT}hIxAE_{0Ce2qXW=7{5*X zqgu81=SS-gMf-_W{8*z@8)Odf+;x{ZWXYXG57fNUO1FLhgS($liRa1gxl3v~O$t+c zj{;dt5MmhnjgB;Qp1L8ZJ`8%s`z!a#LQ4lwF<q098dI`dP1~%b7#jmMIKqE2i>|X5Q~Wo_kqTwqo~AUpoOXf!y9T)lBV~t-{GwYbmdqRdaF1R? zE%(%Y2?^CQlg0+`CR##`^gW&t~uA;0r&sl z4SmE84Jj?$ltBalf@VnFV?o9XcV?Ur6~5tgeW`(S=@xe-KV0GA*((X%jKY2Py?lAn zvEl-gNQIi2A^KnFtA%&u>7`a2C}1a|wci$+7>elf*QHHcaB$~*;0p!eBI0jbd~<29)}u}GLq}`Ihd2ixL>NG&wv~HH;k_V8 z-Rh1wj7Lg`)){xpxqHn4tst44*h9R5Tm>d15Sjw%m1t`1tapw&gW5%fUE3$S+~6Yc zQZ0&yJj-@?JFE^+=g@j{glF(dgNJui3zj|gKd02@I7UiH`HNJ!-m7T6t2q60{Nv8f zg*Vid54(htv7wfu+Yz-g10Qx6so8m%w@?=DhztS-FGwe%F45kw<(vX z`=nPeV-BicI|m7EJu=j6Syd(H-GCmzoDY*o1khBu>`5$n?- zhlUX&(7CNXz_I6(-#Grse^4TGVu|+i2Kz7goH-5AVq?0MC41ls;(USi)R0rXfI#-@;O#m zZLHnaIk&i;AAdGgn9rf`LU>bkXouQHd|JJsI$sMV9@kRfY zeja#QvAX>P*$i$FcQ)qn?QsZTwCGWp!U`F26Somk#?%Z`I}kqpvr=t)T$Lo!&Fhsn z3NxEe7)=&6GV!|ACMz$WvB10zqb(=CVH3GqB!jw#r*!T~w_fYejVg@i{;ob8?>sr^ zvKzN9>pPT%yEV)LFdV9tdqYleRTJPmvSf31OVdF4z&InQaGwoB-T@tATYm0;GU(w` zAL~csKLQolsxXMm#4+A0yo1Xtn&Kn0zaQ5{|@Jp&(eHfrmUYALi>E7Gpa$&_3thUGQ9Z)m`5Km1!6K9TB^wmKqO zzwGjXS0O^q}oV{Qt~>j?@0^?9IQDm?wXLsKwi;X@|C7=;v6QQ*2xl9 zs% ziGM0w92%*-w3&7o`XMTBeyh~M1w!p4{nLMpcWk|@an5CCw}k=81@;aLH7sis{t(E@ zYzG~EF|bAfH(S+x`a}NO(oy39vnGHtF(e}@2lp(UICob3oG74xj7Oc|Z2;A5u3>Cc z@p3JB9fV~$ab#uptddZM?@aKXLr33W*$n{|99rMQww$xvHa%JO#FqBX14 zeb@;Lm|>4eY|_DgFtVYGPSh`mlCx1h!iI1rTz${vZlm14E0JRg?}t5l2*CKFqO0eT zdKs5`PE*IX#mh7BjGhK3dMRF2sjw{3uzL19ka5&a9&k7#I@cvCCX`2+AMe4AY z)#uE<>@hU{E&QeUh|S!N3&UHsAs-TI?hiF2>sf!FM)l6_s2st}M*C?48n;+~RC`C% zV4VQL6Z}Zp>UJ^CI}owcW3N*K(ca^hX=ly>W9!ypW&X_Ucl)#QVIMi!u6F$}w9miT zldU|t?EhpKSEP^EBPTX$RsZ3LxnKWiqv2&GCYhn-D(70a!S2~RI-N8@_gu+JfUxiD z!;4ElPyt5acv?&IJ?}MEeH5WsJC>DqR0u^)Qbzr)jTCrK*3m?k$bzz#IMzm3+gM8L zKNz03Z!0r-you~yL#%}qZ<|_$&MRn^!{ASy7%@@l$XCIiZ>pMt^)Z)SHDY&Z2x*Rk z1uE&5mC%QN<0?7}KpFZLUnQu6&>{bJ4uL>y##R1FW`dKMrw(0;dz&*J|NfsoR~x9? zbzVi@>~{3gTl3y+(NV^giY(qUl2?!?Vj_Vz0PyN(NfXB&MycM7?iSe8qA4|PCJi74 zT)IOe4&Lf7CjuUtR+@Ax^z$+~p=t1+j2)8~`#5WIOE$-Y^lmlOs1{!3RV(>H1j*i`ssHKnGx6|z#BlqLPb%Swu*7n+kk%^GKGm zq^CDJ;^tr?M4LfU>JHWEUHxKt#HS5I6yNpn z&9(NSX7kBjcT(w3xMi}oR-%juqvYbF1uS&bu+fw^@vCh5V{5J$m3U>LqIxsn=XuP* z00K96iE-)@c|^3RH}_$yi?Zg^@#c@4HzRq* zP$jQn{`sM+Fy_)8YM+PApc4Ks&me|OCv{){!^H>)lhGBmk~;E)Ed809dJ47MvR?{V z_d*2>MCukKqYm}}W%hz&?b3;Lu*?ubs@-4|Pr*Y0jQ-SDNuoA9!lmLbkSXPngu@8i zK_AKwLSBG0T$Bi|lqx8gwf7mVZmD=}t9N(%k$~6IXBjI8CDgw&ow!p+>~AnqWGqF+ z%~=`Y`0|%xpi|oqCg#^LcX)gRyS3j_4jX;PAJ41XB^SJ+(F8ncrms*Y7bY~k%D8!Y zI`vxW0K)U-k{nL~3{__Z!*WEFh2OabTrt-n!q|0%Q$Fr{SawIHrF71SaMi8g&IDh8%+HWmm;Ucj!&{I{wxlv4l&{ ze!lPXGeUf6_{aHLb;;D)9+YaX4mowi`sMrukBxkz4wK@d9#pqtVefX8=m*~!S+}09UAZ=K(e#ukRkFV) z3!=?qu2e@Ab)`a<6Y47ciKDVdh^2Gw__`PF#{CE!z z>z-k7a^HPNi;Ts~)}QMNH)|;m>PGnU!_e{KOY%1U` zP?m6=?Il*3f3ErnJ`|XE!oZN%i#?VddHtEztWX&o2*(~<{`LW+jv9qh*kl&+vr{S7 zQDMXu4h=e7WV;o?kU&V1{k9V+vefIiCdgr-SM;WO2GeN9qRzyZIw@1p{=%~SbVZW{ z=k1nlID{a;EAS60R6CTIdU2mVwPRCits-BUYc^30IPRm0@9lij)!EJn+Fh+!W2o|Q z<}IKOx(g)74|#}Wb7tq}ji=}268(~f;U{Rpx2Jp)-s)U#4Iifhxvj* z#f!@Zi@;y;S*Ps7?TUEIE&)Z6g#>=tty2Q1&RrSbz%qXq~D^RJu*<` z>TH@#3jxmkyj%6UF8>o+gxq*Nej$_G3-we-^W+OQwl(}^OvVR&@)2zFICXu}oR7fz zM*Y?^gC+4<%S&>SO!2?4br!N8uF5%Iq+I0Zy_lZ-EGuJ$Qs{RQI(W6lvqhzqP3;*t z`>v8isEh0cmMi;1wx%();r{Zt&Sf5?l;rO#zJj6s#1EHl56Y|MN~gR3^}_r1E_T1{ zI;Epsk5K8f`(2We#_^k@EKuIMJ-J8IVJlg>1P+I*CvsqzGqAT1X=Sgv1!ZiA^HB)G z%Xgso6rlG0i)c*=x2~oj{;XoQM>MK+#_?m$PncQlC0}%6-b5T8CQ#bzpL6+F4B#pW zh5R0fyIJ?5+o3&v?NUm1VrrwPWrD>8v%U%_C~Tl5DtLVHa)z4|GqL+MS90taG|_)e zVR7gRputy*-}Ya;A1XkLRJ}A z!)@Fe)=Kz|#1RHF-LlSq9k(G{>*~@YVBLyYZjO(5MYU_E02`M-cKND)v=D*r+Qhw> z5NDDqf$^uS2R5MV-&!cni%q&V1=yd~i_5`2c=C>)fVseNwUaHjB%u1)nO_DE7S{>R z8DHYLc#`e&X#&hTx|(hEjJYq%fO9W4BNCIB-1Zu;gP`JM-|gqJ6QpMi?N>W5Lh zwaGMVZqbkE$F%K?ksQ$Ety&J`U^=)i(~`v+J=uOo*UhAD)Dd9|xRbwl$!$(7kUR*b z>Gr{TJ*pGK#BjN`d_&4f+!&3&a!E&dJMLew30jDcbGN5eng>8O&j50klku35?vW=H z&Mms8CQS~YNoJzk1PI45y(!V@a-2Hd&pnPecGH@~9=lG3WVsQTz(#-9kTH2L;w zBHr|y`fLb|N)KH;v5*U_k$!7jJfaU@RE&U0-?Uvq%bNzn{csxljr_L#7~XGfA>Gq` z!OVf(?OX@t6{;1APC8PZ1rNG--3pBF!2N_|Haq?YPe#4`k>KPMzqzc!rnuro7F zB!e}6-1Leci0oXm6o_ zBihsKbtLC!sn)+9F`cq+rJjn|CtD1o1LQgXF&#?T=r8zZG6*IxT`nPKcjU<^SgIGP z1(f~DawAaQe^Qd`M7Hx2e9Kg(&C-DbIJsVxA{RL79ceAfS)rh78Ki=eIWVFdkL+C_ zq%z?$MZdmiq~G@YZmweMA@?Yr=I-=LMW$OAySM~5<$hSifa4f#BQ%@G{7Q-n%t6Je zc8P<4_BFvZ>lGrRD4|wi3#-&ACv`k`U6_mQ^oBY_^e2Do4D7vQ{)-jajFS#A?lVo& zsXT`Hz>l>D@)d%+(Bf10a>;v1F&PACXRayK`(69!>CUEZoozsG#tWd|5zz1Ji4K18 za^J@^vo8864bI5=wz)H@Tn?D;*L5DA(lioUPn#ivN`QS)S@xN+6F!$yUzbw50clO2 zb?+Z+PKw1+8)J2+CIeT_OTio`HR+IntU0k)WrQ(>#4GK}Z;(7W4RyZZmyKUg#M}+L zGJRdq&rmIX`MGn{1@(QD8^P;ohPhA6qg8&BQ|b=!((|$2h%SDk_g0bUAd~##?b3=~ z_U3w;uxJ3!z4#IS;2GJZ@y2VzZ&8$xp9dq|*z1z?;?6l>@JwBG{hI66_HOQkBF1=Asx170UqU88# zGUh^ESQcBIT7s&kkNc!Vz6!YS%|b!~zQ9q{2rZqzDAy*3&rE+t^C3e;b?FY&jt+H% z?qm^D1PT?=`(0+4^TL=>&RZ?b#L22J8&=jLhinJRRQ?Ga#~UY(9qvY^=sikzef@iD zN-uQFw0_3xtDQ!HfTCDeavfSPKLz}}mYSjh4K4AZo%#u>CY;p}92_2^ggt**1n#~; zY6M*E7@Xq`&36Mdc*`e0@(Mkybz_;lE*WlZ+MAY|Z;Dz606I4Ac- zQkH5($o@mY)Z0%@2OuUmNeY`U%bnYf9$^KI$}KgqKi;5l@IYZp1BhzUKCio-nx z$+4K^G6bw!eD_<^66w*JPKOd+L`nc;Pmdn0^L4K)&g&gK*Pu#hv>RaRdm2f7@yN(M z4mv0zC$?0;4`t5qbgxUO6CJln$!zx<%oK2Qmswg{U5HGGC;YaM`MS{BTA!g|oydRD z^iCfOk%J|gzIFntIvXI6#@%w-qLYb~N06;DX|}M4VSnpvbnj8jh(})bZ2~IB z@@1N?&K1p&sX;`Gttl_;xzExL=Nx9_H)wXXS=3T^pVD&ov~OdbAt#QTo^OB z?r7{3+`Gx*^)Ws%CTI!6>y#2CBi>Ix>--G)s*T$mi*H@xjx~T!mfGw&bOsB-Cg9ut z_&FYW#N04fw53Y~^Wu8@f+PaOOVy^hlA(~)(ROw9UKr~ zOc%mYzxT5>t9HBe`81<~7vA#bi z;J%(++-pyL;$K+Yd0$+F`Cd;YcimyG>j~s|&p?c@m0Hf$Rf~M*Bn4$^9NELoeT)i; zpnWY_-6B%LiVoyg0_Y)K<3rY&A{PIcgvyO%8~qKxxlv?sH{OsoxpglaKhL1HC&d0( zd5C~)ySMNiY zRGUUOVng;?{3#<%n{$y4?MWBlNiyL@2Rv?$6|NRsZlWSLGdyeDpj7uOp%zerHt>>9 z>+a`=PI+fg+>H>jObIWMMK#4|q9^}OBxw)Z*ov>ELun}W>91vJq+K_<{uxtKgEc8_ z-^*ZvILTCuYXXO(=%fBI#q3Ax?86cmRCHS~Ow9O`%zZXBnA~D#r>YFBy5+~aeLCF{ zM;N6C){>{2U;SfxIyFD&5koAz#2r7u$uI8k0H8*L8xNjFv+S2zPK&5pYKF23UdRUX zQgF?u;yfq!XYyJJ`;&_&yDaVU_>0vPuykNB!k106lvH0%E-Q?dJ~NoqPN6ftybtNH zg@;0is;+Zfr%I0Ze0RKOdFXRoajLUmzw@bI0g~Dla_VUq`G5iM^ADyQu>t4gWbQQm z%FEQW3}e3k)>{nQ1LSGa_b5B-@x}AZl5k*_3u>7RJ!9oydS{);NAz}T6q7rl*RD=k z{kLKg5@(H7cJbi`fF_PCMRUkR2AXrps{>6qD8V(aal$Ak8au69HGoUhkA!c=$Qm$S ztNSX>-Yw+%8(4E`;$l?yyswVSUr6yZJs@BS%hE``IOLS}OM2$yIk9lD7PE&}SbBTW@SWrXuLHloet&VK zDf%HNt|85Wc^zK=l!8A%YtEPJ+AO2&emv12Nh0a^60=L=2x*s~bf4I$9nAL^L*P8N z7el7uTAuH?S*30_)=?rz&n%VJpzg|tDHlqk%4CBneo0!K@_Nd~G(ct}0jA_t4;}Q2MIc%zm_kub{ zoW_F>K1N92d_)RsaqoA(@8z7FBh;ScNLE1buY_ESj)!o-1WjAC-}Vsp8T7TxE2HVP zrYU(rlCGYuDGkH}1cL)#g)~`VnL`o?1D98);|HzsRn5 zb@^*N(Vh+J>`%xB@YGhsImi=8-6E!qfqThZ7}nLT{FB2LpU5oz$?y0m&B@G4FCQ*% z)R2Pe9AXX*YoEo7d>7&2{Ib84)BFs3IMlKa#zsdg4FBe9s zjy1gVXmy^Mrc>ve1KtDC6!n!Z(tWlY{%XTBdgg7<%8rPJnO@hAVb*0+N&f zR-x5XAFPQ|jwKSt+bYuDl!8uj_0&j-)Uq%SvDs8m_V1H#Q|8E3cNgi#t9=k7zy&)I zL+DuinF+zON1wK?gz^6t?3y6?I~dC!E3}SyubMD6lO>>1#?&r|Uo^{{oydHlkLGa+_NHQ6 z-%rB2ozW^jV)0&&LGEATB&8pB}an4~hxWReqElkS73jc1pTAZOxd$WBYrQ*dn zy!-l2ZFpmMR|+?8=GzyadKj?YWqlefL%Oaf?VJAieI0r()gA0m-(dD6)6zj z5o;h_p7Y-34kn!9imzKFu2^X5rhJ*uk+$kYwrAaOys=-xf%CBM6l4FxS3wnK&fvPs z7Hj24@RG%uO(eQnskbG%G(s4#8P~Yeq@u z{ut$c(@LWPXJQ5t&SAj-uYxQzJ8d93{zl=GJX|V6Y};!s(ma$lgo##>saqr4o7ZoC zJ^3WkCyr9@w-613kOvtW7pmL{OS5TMqeq=b=EPM7htvUR<^a9q2G+~cw>%WMhGD|) z#VD7FkLYlLz70$Rtw$h{b}sXv9Xob*c}0#dmwF8ZWXN6B$rne3dW%N+J5z3H=AqKS zV^*5Yl4AxVCQ*IoC~#;oFE%L_K{!_nYtyxQ>)_bl(9n3?5Ji6eW-32mdDL1Cc<$Up zCI=ziy0(ZTcyF1zQErX${Pk444)^jmD7Js$gXdvo&f?{ z7&d9~i}6QSZH0(WW3_+t6t`CDGwc_FSzotHqTVWeype=4()Kbmu8z6AXi6l+LH5eH z6hEs^tx(oBVWa1oJxvJxC|rw{*VRT&GeL%H^Q~_3O?<`Opg0+gh#uG*It>f)ohIz3 zmcy{>F0@J&Cr8p!bs1W2GF_VPGtT(iRHYzF^d*Gk-w?W!AxhvBsqLD%0wKt#$y(wQ z$~Pvsbg5M8;NA*l@YNK>y`Sy_+qc);r1?71FBjWoWrT3L>vw40_rO=y!}AhR&s#Q8 zt5ZFFINaRTh=|6ByMA#{9qCJ17NTAs`w>`5vvOKyj%X065ylYU`P4(zlu{S8!kYwE zv2$6Squ9W#D(%kI*YDYJej5m%!efD-2|R8y7`93F!W*Ggm1DbaX%I*2ytfBu)z1g| zl0+3vC{bdr)K=0GQx}fFSPA6Dh@hC5W^ZRS&4TN$GCJ30bauj;0-EUD=HA0CQ}$Js zDbVOBciHoy*u;r+ zcj6k79AT=w-FGGIBD2J73h4JMy%8xSe$Fu73=JO<5gHD_JriogJK=|yLg7e%^OvG= zY$>s%xJ-7|={g97hGUF6<0zo6y$Hr}9D~gmz^ZBW`RfBR)$3^oEqKBAFR5SMY2^du zGx}2-d6SwzAxA-cAUQrhzI+GO@#o~PVCCj!>lMBW2Nq#X~3xzMyr z@8~D=$j68zKv32KY~_eB*FzUh;0hUwxH(9Rq+4)-^Zi;;|LI#o8%27uEhFfz>JxX} z1PFHwsT(rJx3Hf@z;+iFWkq@GJoOQQnYB&Xce&i&kL>x+a^ev1XrgT)NHuaQ6Q zU96K5Lk!fDBGlD;2I`LXB6R6CaVS+TKJ_t=T6C?|JsB^HI&o^-LMsWn3mRlmW6hGD zOo!UtNa0cywS0ii;0Nirqq3@TxTJwSPG}t_JM8=okINQ4HnB+ZaK}EU7IsG#(|2e2 zFLQ<=c)~!Mp_7*%z1K}1EA4$5iw6CuuCAhIwQzZdu5tOOQ#P7bopKqspCd2_XFXjy z%27T9Hq6oSY}1ObQ1;BIELtV6OVs=^p(2~NcTvdmHWW@>DOyhTb@ibIkv(p=C{bVp zI!R2mk5kG@*SSC&l~%@_CF|b98B}2K)3ZE4WC(O}Fl$5}8vZb8H_MYv^wM`d>Kf`c zY#-Q@`UI8bQmfzO&k=LF=|PT_=PZ)dn~tkCrWK`=I$C>wLkhiN=pTrpn0LR5WmMvfTxOv(>doYiGPTDUFuSwl~AI`3T zgUH~I@+~2{Vj3MgaabZp-LoP1S&I~?$7F%@1rPnvZneax*_@)|_K!9{&&cqocu*#p zFf1Rl?>#x%T8l%W&Ij};Qy@o0XWCi}RWju@9R?EUYpW%PbANs=y(_Xg&RsY@I>#); zx_qjWJk0DPND=9~5KZX70NIn8JllX-X5Oa$4SPs`j{q7<6|++4mA{IKgwkP&8TJq> z`v4Y!(f1i<>gP#=NwV=6P^#n(+g+&$aqR^dpNs^Yjm=n=^K9C4X$(UQ?NIMXR$Uyb z&R0|!5zXp5wK2&S2Qsycbq0UgY5nngSYz(TF}RZ)WPi3t8nqghXA~buUl4(kKgN6Q zL+#dh#7s@R9y4EPJ7_)w?Qqa#hsc_>^(%Xnp6(86DG3>G^CvvDf)G-n!k z&H%T(vw}<}ZWRkE>xtc+cQ^7jo!+nk;W#mW3yx1@dRp?ju2Z)^s!0a=E{fI4U>E_* z9sC4-nwY#0m|u7iyeUgYufiT$2IY0I{PlDsq0f1AVBe>~7@`|fQ$3SA;;B(3iIO}m zh+T1KNI9z)lvd~qO3TIlUR0bAaLzYuM8OLzj4srs2nz9ZFH50RNYnBIVwaF2scea+ z9zF#y8ZH|tL^YGYn4J5w87f%qV=wlg1yjqFF)e*>)OJ1*4!mE{cY|F@ywQ9oy?w)z zI0}C#=puNivLx_nXLJIK*r`iRv7Io<{a7QX3ygmL=C?q>Hh6#;FuZ&ok;n=r{M{P9 zanus+MZ>i^n1+t)dY)|~kX9%MRkAX?lfOc^bBWN#hyloCW&C-C9p7fsIeA0SyV=-X0ehy9I~Y= z#~-6j+C{xnrQ8jC(og5IiqZa=tZjrXW-_dP=-o#Y@AUdB^CIxN@vI{=aGL);>BSWA z7kFi?Snf_(^EG&a<{Z)BK|HQ1#MehRNIAj1^&J!rNg@M4ch`& z4}YBT_PkD+$91HNDp+oeJd*L39xZmLIW*~d#c9KI6_)xf8T)i64osr6mv$tKC9#(& zr}B35-qph_6CjD+wnPPxSKr+;d=$7j3rjFqe7^sOhPCFs=w8=l&QXo+IBhfWToUW; zJkVWdUzW)U!90N+#k4vANW2|G0N#_r;m2?Pto`PnwWK4UGtN);q$@^bbzA^#fV7Po zc5P&XVSjA;QvWUlCVd$|y>-LBgMT$m*UnOcjyqoTpqNoT$O$F$SW1&8y=dRB+&Xpf zFnJH9{`;iUBnDqwDu#2P2yl5M?NsKH2byf`^;)SE<_?@T)q!~c1h2-E>SbqUS4z(B zXnA3*!YpIE)q;%#xT@Y{<$+;17I@j+IL-_caB9}LBl$%M7bhtY8cyc$+{oFpX(9FA zBV@52Ke`AhIb*o2b6^B5IwOLO4L8>Vu~yEZbM^NV>^{04;T#ZUi{srrC_K(bfXEMct;nDYhL9K zdtpV<@yhqxfF#8V%53o83Fvon6~mN@*s8NN)~2iB0z~1!bz>%L$oPIJLr@j4_Jp5T zRh?B-hMR3dG$Y1u7nKl)?Xwr5UMg;rRZJ^*waSW}M(25dv~z2`I9rJw}BBkU}tuXJ0-Jqtc6lU9;OwNiq;?I@SdykNNs^o?;>fl6AQfZk0N zcPE-i^<`LIP*00Xlz+_6AM}i5q3$BkR4LsRSieBpZSMpA?Ul&Kr-26ESxb1e4s+Lw zu2voECQ-JQ_*8q>@93+{F*x!bBw5{~t#5}W>UZ>OK`HC{krCP#E|I#30M$%n4g^IZ z)p7Z~lMD0cVPg?pyh`B!JX({U-pIR3Jzy2}c>bh+AP8Ix$m(OUVp5@amP4R3GVAj+ z&sz2i{vFz;BfaY>Y&I}Cmk?hYaPWq`>ViTbp-*ao(05*W7H}Y!ilOg;K`9lgfsU$ZmY4t8an6lIn(j@j;C`eS#?bzj6kujz z{r}3}O#fNTOe_NYQYt`0LDsAP)%|8+W@cgf$>=rjfj5@ECC!|?U)_uF%TE9B*I=w{ zaAcCS-(vgNV`itQ{n@yN@AN;WYQMu{^y?k6>^2nrX9(|z-Jy>1o z{lQT4UOFrP8{r|ZuLcH1-!up7tHOeapAst2-~5+EOgcD;*$9S-p4sjoO39<>Nw4{n z+g~Xvi};a0t$i)<)Z4I}hddIe6#p>|?!$B9>t9;7?u&KndL~c0ML8`PtZq?M;%kkV z80M{*o>+A=65hI8pBoLJx`ocn%&qlSg>Q#K>WNp=8{_3V7}jSocWzt3RsA^2EKKIR zZ@#?WF?|wzt{$y?9*#h$v!nUq`a9Y;5Py|nN*5e_!in+VZHy=~Y-ZbJt3@MZY)MIZ za8^9jkd-ddzY}+HHTs^!Ed)j*#FUV8TG-YUBYI2q!?`)pV|hQ(*DY-La(!!z($vmw z^gOEaaMf76f-gp-`(|Dyt4>|WA#xIPM%M#^jL2(?&EvS5j&NZ`WhP+~0$b%s*k6Q)pK4gXt^{e9y|x(=K=O?=)#dCs<}~ z@6)btZ~wr0ZhRV{nO#qD6@wR5I=8Ox(>1jBB*aN$H7mrcn`lO)$dgnqWlw5EdJMF} zsUWl`W@RPfp;x7ugE+b;2VV5kG^s~l(b#tjr{M{|;r$Ukb%gBiz-y8#ME@~e&Z#Ks z2rWB=9Ug;5$3tzfW&JsL8P1!Yn_EyaX{}qWI?OwoXgl2X3;&L)JDbWXReSd2a^@w| zkdR-8Q*>niy(@}qgU3;=t~IHM!RJr3vRQd0>iD>akur?^qd3e}zoyhhPe#vm{iKlh zd(D&fRNrGm`%~O`eCVE@5r9K-%N+4Hy4yiO^C!W5jW7Et(VMiwqeQzxyhyWB2?V9?MjW+ zQ0#N;Kc?+UKu@Vm*R9QC$2*SEO?&#nIZFevGQvB}1A7H%k$3yUk3)663U(ZkUEA^! zeh7__`JF&Q{@%==f`KdgoVWDkjK)q_De+Z}yasLeBa|5oP|c8#Zx3h;CY$CFB0X;Q zLj>@BW7UbA`1=~=4&p$5$9|F83O=d6kGR(tW_*kP=O4NKIkD!Q8rb%*)=%sTXJ|-R zogBlGQJq9cJt9tHr=ZQ-lZAgmB7H-YIMGEVvl0wtSD} zN2hx3P(#^aj+?QQisMI2eMLp>hFU2~gV>UF#M+_nOmi@eC1F76KxzL-i1Au*9bOg< z&ruYyuUUSL=DN$Oqf$HC`}HjbXImP(^?B<;l5$*TW_I4a4jt9M!^a1^81eN!P2yQZq0id<=HQoj zHuuLp4M|A^smQrguJZY2fC0_s=GSU6Q279~;z1*zXQ2@J^H6nUVQ^-)j_Esc*xu8e zuo40!%E-?2P>W-_-u!^bWqt#7OUkZUX-QFT1lE zFdbK}N@8cpK@o2Wnp}@W^1dwdn&W$QBBmAY2q{>-9nSeJWU8e1_zCK>{`HqCzYW+t zZ>AwygPx^RYXGI72Gx6_62b~c*~xn8e!a@Mx~aXQ36D0;2th9jn588Q#l?}w-Sv4e zkjkxl4@DmdX(wrQ-o1z=WSh-}al4Ve`THTv(j>zhx%e(f4b`gavK&D|3;@R_aZY2? zOqFV_-(jNrE-!&K+Wu{Zwo^ z?k;Oy>;iV>o>gOkFC5!W{DRmJ z6m`pwuVmBw@GhJsjx#%=0d^%-@-o%;AS^7*FE=-ru({>B)EmwpX7S6NAGoZ2$iMV` zaC0yGACnPdMp00(TrMhJyQf@61R!$wwc^OD!LTjit_IANOE}5E;t;NBlJDr-a`0*T zP+}~nP~H2KqUl|yB?F5ifR)(|veKRb{&!WC{Q7ye1e}tmN&_~vrj9Crm)Rb^{+~~* zNRHo#bsDm}_1rrujUZ72xVN3a|l?~22HW`0XIxB=_Jjq!}^mstbJ6!c&|2cfM zs_Izjz!=c&Id-GrP0O$nr>_93s-NWM*?!vapwF%3T1UsbsGkiqPN*_9N3H!$=p>=r7XY&7m^Fc4uF+rXsckmd~>jCVDuVMOzpQ&v`n-JDrK z?7wCS?KkERS|yJp^IdrlhJC3C3CZV$CrK_q+^qYzKV@69I{lwj@kGLnYB!0S&BThc42{P?L7-bKY7XgDLzMM6C0oA|)O<}shKgTM+J z@s47mg^iQ|l8_zVNhx*owD7&}V!|s$I!H z7pTA)ww#qtz9B9@<+vXO{RIQ_KniTR?0G5$!iWM4-QQpI0K+82SwI+S*U?ckvD*N6 z`jGJ(%T-==KIZ#$tV=sM2x~2SfCvdoW_D+78}Jm`-rm{%J@?pX1V1*j8sf=#?zQd7eH zO%uZWt8uDoW)k4AHR9)K)7myFt7H=|>LXLETCJb@iQg3iy;;AS<)~^{couoPS~@Z? zX9Ziv3pfZnqkK~IZTi^YQ_Uy6TM2i(N2~qL1MO}}hSM&qC!cc}r5%M8rr%+VnwJFp zslKs$l>d*39r9FxIOrJ?60%{vZ|9_21}8^3H2JN&j1YK7Q8}T1rJvYJ(%)}&36f0pfz}j9Sai_C{a3>=Gk>Clb8spIy^sy6O8S6>dA`QSKcNr!gL#^X zf4EPr1}42Y+$#B5$?3PKc(b!6Ej^VtU2LwK~A^FOUX{w<&G`A# z@2?<(XS9d}Z5caOlt{q@d&G6`&*3)s_mPz>bL~joM!@|L+`3)E;`^{X`&U*<4iss& zan;?~<|~d`1yQCtzWhngi!QTuE~!+w@@wV>IE*39M@M_A&sms%4>#Zn2WBjdmJk_I z0_19mSDmdI^_a0a;Gp`qtKK^~BaP*NHAZT`brZ(CBQNCBJ`VfX1AtSyl zEDmamSS~P6QS=KS>RWzovMViqaXO&CFk*V`5t~P0r~*sD#F+k7!#{>bdWA{l54vN^ zA~r#Fc#rivM)_n)XCm`X>5%Ruv zN$6TdiMdKWxY>YHz5nsWyIR&IKb{yUh8PQpy%Cu?9TE$`X;}-tP>_R}?>SB>d@OyW zu+fjcS+jrXQ(DCm>xxFX0W_9b>p<(8<=kVTSNmGmx;d-09)+h{FlXFb*kutE5>Ple z-z~Cynxp-Ef)&~0dg2vlh2={&HssQnswXR~D`(+`PYe_eigl4qm7I^=5-sNNDlfGv zMC2d!hF2!&{jp9H+pjf$ro*Z-txV#t|F|P|<*ISVRhT%qUg4UCM4kNGh~$mjf!o1X kwz~r{fn~QBY(E+J2g|QWUfi(R*}4A+mZ0;G>EGo40Koqrr~m)} literal 0 HcmV?d00001 diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md new file mode 100644 index 000000000000000..d13c8a631cabcf3 --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md @@ -0,0 +1,141 @@ +--- +title: "XMLHttpRequestUpload: loadstart event" +slug: Web/API/XMLHttpRequestUpload/loadstart_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.loadstart_event +--- + +{{APIRef}} + +The **`loadstart`** event is fired when a request has started to load data. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('loadstart', (event) => { }) + +onloadstart = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +### Live example + +#### HTML + +```html +
+ + + +
+ + +``` + +```css hidden +.event-log { + width: 25rem; + height: 4rem; + border: 1px solid black; + margin: 0.5rem; + padding: 0.2rem; +} + +input { + width: 11rem; + margin: 0.5rem; +} +``` + +#### JavaScript + +```js +const xhrButtonSuccess = document.querySelector('.xhr.success'); +const xhrButtonError = document.querySelector('.xhr.error'); +const xhrButtonAbort = document.querySelector('.xhr.abort'); +const log = document.querySelector('.event-log'); + +function handleEvent(e) { + log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +} + +function addListeners(xhr) { + xhr.addEventListener('loadstart', handleEvent); + xhr.addEventListener('load', handleEvent); + xhr.addEventListener('loadend', handleEvent); + xhr.addEventListener('progress', handleEvent); + xhr.addEventListener('error', handleEvent); + xhr.addEventListener('abort', handleEvent); +} + +function runXHR(url) { + log.textContent = ''; + + const xhr = new XMLHttpRequest(); + addListeners(xhr); + xhr.open("GET", url); + xhr.send(); + return xhr; +} + +xhrButtonSuccess.addEventListener('click', () => { + runXHR('dgszyjnxcaipwzy.jpg'); +}); + +xhrButtonError.addEventListener('click', () => { + runXHR('https://somewhere.org/i-dont-exist'); +}); + +xhrButtonAbort.addEventListener('click', () => { + runXHR('dgszyjnxcaipwzy.jpg').abort(); +}); +``` + +#### Result + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md new file mode 100644 index 000000000000000..bdf004b5ac4d0e6 --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md @@ -0,0 +1,141 @@ +--- +title: "XMLHttpRequestUpload: progress event" +slug: Web/API/XMLHttpRequestUpload/progress_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.progress_event +--- + +{{APIRef}} + +The **`progress`** event is fired periodically when a request receives more data. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('progress', (event) => { }) + +onprogress = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +### Live example + +#### HTML + +```html +
+ + + +
+ + +``` + +```css hidden +.event-log { + width: 25rem; + height: 4rem; + border: 1px solid black; + margin: 0.5rem; + padding: 0.2rem; +} + +input { + width: 11rem; + margin: 0.5rem; +} +``` + +#### JavaScript + +```js +const xhrButtonSuccess = document.querySelector('.xhr.success'); +const xhrButtonError = document.querySelector('.xhr.error'); +const xhrButtonAbort = document.querySelector('.xhr.abort'); +const log = document.querySelector('.event-log'); + +function handleEvent(e) { + log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +} + +function addListeners(xhr) { + xhr.addEventListener('loadstart', handleEvent); + xhr.addEventListener('load', handleEvent); + xhr.addEventListener('loadend', handleEvent); + xhr.addEventListener('progress', handleEvent); + xhr.addEventListener('error', handleEvent); + xhr.addEventListener('abort', handleEvent); +} + +function runXHR(url) { + log.textContent = ''; + + const xhr = new XMLHttpRequest(); + addListeners(xhr); + xhr.open("GET", url); + xhr.send(); + return xhr; +} + +xhrButtonSuccess.addEventListener('click', () => { + runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json'); +}); + +xhrButtonError.addEventListener('click', () => { + runXHR('http://i-dont-exist'); +}); + +xhrButtonAbort.addEventListener('click', () => { + runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json').abort(); +}); +``` + +#### Result + +{{ EmbedLiveSample('Live_example', '100%', '150px') }} + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#) +- {{domxref("XMLHttpRequestUpload")}}monitoring_progress diff --git a/files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md b/files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md new file mode 100644 index 000000000000000..b0d5ccdb88fcd33 --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md @@ -0,0 +1,62 @@ +--- +title: 'XMLHttpRequestUpload: readystatechange event' +slug: Web/API/XMLHttpRequestUpload/readystatechange_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.readystatechange_event +--- + +{{APIRef}} + +The `readystatechange` event is fired whenever the {{domxref("XMLHttpRequest.readyState", "readyState")}} property of the {{domxref("XMLHttpRequest")}} changes. + +> **Warning:** This should not be used with synchronous requests and must +> not be used from native code. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('readystatechange', (event) => { }) + +onreadystatechange = (event) => { } +``` + +## Event type + +A generic {{DOMxRef("Event")}} with no added properties. + +## Examples + +```js +const xhr = new XMLHttpRequest(); +const method = "GET"; +const url = "https://developer.mozilla.org/"; + +xhr.open(method, url, true); +xhr.onreadystatechange = () => { + // In local files, status is 0 upon success in Mozilla Firefox + if (xhr.readyState === XMLHttpRequest.DONE) { + const status = xhr.status; + if (status === 0 || (status >= 200 && status < 400)) { + // The request has been completed successfully + console.log(xhr.responseText); + } else { + // Oh no! There has been an error with the request! + } + } +}; +xhr.send(); +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md new file mode 100644 index 000000000000000..85d0451a1da8807 --- /dev/null +++ b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md @@ -0,0 +1,69 @@ +--- +title: 'XMLHttpRequestUpload: timeout event' +slug: Web/API/XMLHttpRequestUpload/timeout_event +page-type: web-api-event +browser-compat: api.XMLHttpRequestUpload.timeout_event +--- + +{{APIRef}} + +The **`timeout`** event is fired when progression is terminated due to preset time expiring. + +## Syntax + +Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. + +```js +addEventListener('timeout', (event) => { }) + +ontimeout = (event) => { } +``` + +## Event type + +A {{domxref("ProgressEvent")}}. Inherits from {{domxref("Event")}}. + +{{InheritanceDiagram("ProgressEvent")}} + +## Event properties + +_In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available._ + +- {{domxref("ProgressEvent.lengthComputable", "lengthComputable")}} {{ReadOnlyInline}} + - : A boolean flag indicating if the total work to be done, and the amount of work already done, by the underlying process is calculable. In other words, it tells if the progress is measurable or not. +- {{domxref("ProgressEvent.loaded", "loaded")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer value indicating the amount of work already performed by the underlying process. The ratio of work done can be calculated by dividing `total` by the value of this property. When downloading a resource using HTTP, this only counts the body of the HTTP message, and doesn't include headers and other overhead. +- {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} + - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. + +## Examples + +```js +const client = new XMLHttpRequest(); +client.open('GET', 'http://www.example.org/example.txt'); +client.ontimeout = () => { + console.error('Timeout!!') +}; + +client.send(); +``` + +You could also set up the event handler using the {{domxref("EventTarget/addEventListener", "addEventListener()")}} method: + +```js +client.addEventListener('timeout', () => { + console.error("Timeout!!"); +}); +``` + +## Specifications + +{{Specifications}} + +## Browser compatibility + +{{Compat}} + +## See also + +- {{domxref("XMLHttpRequestUpload")}} From a7506584e7ccece2ccde50a50b87275dca19787e Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 08:59:26 +0200 Subject: [PATCH 02/24] Fixes --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 4 ---- files/en-us/web/api/xmlhttprequestupload/index.md | 2 ++ 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 41c4f6d05fdc24f..95b73a16334edc8 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -13,8 +13,6 @@ You don't use `XMLHttpRequestEventTarget` directly; instead you interact with th ## Inheritance for `XMLHttpRequest` -{{InheritanceDiagram("XMLHttpRequest")}} - The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/abort_event", "abort")}} @@ -28,8 +26,6 @@ The following events are made available to {{domxref("XMLHttpRequest")}}: ## Inheritance for `XMLHttpRequestUpload` -{{InheritanceDiagram("XMLHttpRequestUpload")}} - The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index 17fecdb629abc7c..ffca8632c403fac 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -11,6 +11,8 @@ The **`XMLHttpRequestUpload`** interface represents the upload process, allowing {{AvailableInWorkers("notservice")}} +{{InheritanceDiagram}} + ## Instance properties _This interface has no specific property, but inherits the properties of {{domxref("XMLHttpRequestEventTarget")}} and of {{domxref("EventTarget")}}._ From 573d02cb7a2254d86ab11de7b35062d633406a32 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 09:01:04 +0200 Subject: [PATCH 03/24] Fixes --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 95b73a16334edc8..9c64c70d68a073f 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -13,6 +13,8 @@ You don't use `XMLHttpRequestEventTarget` directly; instead you interact with th ## Inheritance for `XMLHttpRequest` +{{InheritanceDiagram("XMLHttpRequest")}} + The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/abort_event", "abort")}} @@ -21,11 +23,13 @@ The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/loadend_event", "loadend")}} - {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequest/progress_event", "progress")}} -- {{domxref("XMLHTTPRequest/readystatechange_event", "readystatechange)}} +- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange)}} - {{domxref("XMLHttpRequest/timeout_event", "timeout")}} ## Inheritance for `XMLHttpRequestUpload` +{{InheritanceDiagram("XMLHttpRequestUpload")}} + The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} @@ -34,7 +38,7 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} -- {{domxref("XMLHTTPRequest/readystatechange_event", "readystatechange)}} +- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange)}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications From b71f9a57de00a445a0950c34c3ae3d7c6a1b0440 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 09:04:21 +0200 Subject: [PATCH 04/24] Fixes typos --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 9c64c70d68a073f..6818457bcf75dfe 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -23,7 +23,7 @@ The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/loadend_event", "loadend")}} - {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequest/progress_event", "progress")}} -- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange)}} +- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange")}} - {{domxref("XMLHttpRequest/timeout_event", "timeout")}} ## Inheritance for `XMLHttpRequestUpload` @@ -38,7 +38,7 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} -- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange)}} +- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange")}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications From 384c34e79a733c6ecca8ce203f2976d31e600836 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 09:07:32 +0200 Subject: [PATCH 05/24] Fixes typos --- .../en-us/web/api/xmlhttprequestupload/load_event/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md index 631a10f1e990a55..e08dcd24545e1d1 100644 --- a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -1,13 +1,13 @@ --- -title: "XMLHttpRequest: load event" -slug: Web/API/XMLHttpRequest/load_event +title: "XMLHttpRequestUpload: load event" +slug: Web/API/XMLHttpRequestUpload/load_event page-type: web-api-event browser-compat: api.XMLHttpRequest.load_event --- {{APIRef}} -The `load` event is fired when an {{domxref("XMLHttpRequest")}} transaction completes successfully. +The `load` event is fired when an {{domxref("XMLHttpRequestUpload")}} transaction completes successfully. ## Syntax From 6a03622475ca40e16cf3b7ad51a66f5bd8883727 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Thu, 30 Mar 2023 13:43:47 +0200 Subject: [PATCH 06/24] Add example --- .../abort_event/dgszyjnxcaipwzy.jpg | Bin 62373 -> 0 bytes .../xmlhttprequestupload/abort_event/index.md | 184 ++++++++++------- .../error_event/dgszyjnxcaipwzy.jpg | Bin 62373 -> 0 bytes .../xmlhttprequestupload/error_event/index.md | 184 ++++++++++------- .../web/api/xmlhttprequestupload/index.md | 144 +++++++++++++- .../xmlhttprequestupload/load_event/image.jpg | Bin 62373 -> 0 bytes .../xmlhttprequestupload/load_event/index.md | 186 +++++++++++------- .../loadend_event/index.md | 186 +++++++++++------- .../loadstart_event/dgszyjnxcaipwzy.jpg | Bin 62373 -> 0 bytes .../loadstart_event/index.md | 184 ++++++++++------- .../progress_event/index.md | 184 ++++++++++------- .../readystatechange_event/index.md | 62 ------ .../timeout_event/index.md | 141 ++++++++++++- 13 files changed, 977 insertions(+), 478 deletions(-) delete mode 100644 files/en-us/web/api/xmlhttprequestupload/abort_event/dgszyjnxcaipwzy.jpg delete mode 100644 files/en-us/web/api/xmlhttprequestupload/error_event/dgszyjnxcaipwzy.jpg delete mode 100644 files/en-us/web/api/xmlhttprequestupload/load_event/image.jpg delete mode 100644 files/en-us/web/api/xmlhttprequestupload/loadstart_event/dgszyjnxcaipwzy.jpg delete mode 100644 files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md diff --git a/files/en-us/web/api/xmlhttprequestupload/abort_event/dgszyjnxcaipwzy.jpg b/files/en-us/web/api/xmlhttprequestupload/abort_event/dgszyjnxcaipwzy.jpg deleted file mode 100644 index d85b214128e98861dfc3548ad9f9793887f97611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62373 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 diff --git a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md index eae1c905671531a..7e7d70b075b9d07 100644 --- a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md @@ -38,95 +38,145 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Live example +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. #### HTML ```html -
- - - -
- - + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + ``` -```css hidden -.event-log { - width: 25rem; - height: 4rem; - border: 1px solid black; - margin: 0.5rem; - padding: 0.2rem; -} +#### CSS -input { - width: 11rem; - margin: 0.5rem; +```css +body { + background-color: lightblue; } -``` - -#### JavaScript -```js -const xhrButtonSuccess = document.querySelector('.xhr.success'); -const xhrButtonError = document.querySelector('.xhr.error'); -const xhrButtonAbort = document.querySelector('.xhr.abort'); -const log = document.querySelector('.event-log'); +main { + margin: 50px auto; + text-align: center; +} -function handleEvent(e) { - log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +#file { + display: none; } -function addListeners(xhr) { - xhr.addEventListener('loadstart', handleEvent); - xhr.addEventListener('load', handleEvent); - xhr.addEventListener('loadend', handleEvent); - xhr.addEventListener('progress', handleEvent); - xhr.addEventListener('error', handleEvent); - xhr.addEventListener('abort', handleEvent); +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; } -function runXHR(url) { - log.textContent = ''; +progress { + display: none; +} - const xhr = new XMLHttpRequest(); - addListeners(xhr); - xhr.open("GET", url); - xhr.send(); - return xhr; +progress.visible { + display: inline; } +``` -xhrButtonSuccess.addEventListener('click', () => { - runXHR('dgszyjnxcaipwzy.jpg'); -}); +#### JavaScript -xhrButtonError.addEventListener('click', () => { - runXHR('https://somewhere.org/i-dont-exist'); -}); +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); -xhrButtonAbort.addEventListener('click', () => { - runXHR('dgszyjnxcaipwzy.jpg').abort(); + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` -#### Result - -{{ EmbedLiveSample('Live_example', '100%', '150px') }} - ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/dgszyjnxcaipwzy.jpg b/files/en-us/web/api/xmlhttprequestupload/error_event/dgszyjnxcaipwzy.jpg deleted file mode 100644 index d85b214128e98861dfc3548ad9f9793887f97611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62373 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 diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md index f133177aeed330c..8b864b3950f0069 100644 --- a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md @@ -38,95 +38,145 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Live example +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. #### HTML ```html -
- - - -
- - + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + ``` -```css hidden -.event-log { - width: 25rem; - height: 4rem; - border: 1px solid black; - margin: 0.5rem; - padding: 0.2rem; -} +#### CSS -input { - width: 11rem; - margin: 0.5rem; +```css +body { + background-color: lightblue; } -``` - -#### JavaScript -```js -const xhrButtonSuccess = document.querySelector('.xhr.success'); -const xhrButtonError = document.querySelector('.xhr.error'); -const xhrButtonAbort = document.querySelector('.xhr.abort'); -const log = document.querySelector('.event-log'); +main { + margin: 50px auto; + text-align: center; +} -function handleEvent(e) { - log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +#file { + display: none; } -function addListeners(xhr) { - xhr.addEventListener('loadstart', handleEvent); - xhr.addEventListener('load', handleEvent); - xhr.addEventListener('loadend', handleEvent); - xhr.addEventListener('progress', handleEvent); - xhr.addEventListener('error', handleEvent); - xhr.addEventListener('abort', handleEvent); +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; } -function runXHR(url) { - log.textContent = ''; +progress { + display: none; +} - const xhr = new XMLHttpRequest(); - addListeners(xhr); - xhr.open("GET", url); - xhr.send(); - return xhr; +progress.visible { + display: inline; } +``` -xhrButtonSuccess.addEventListener('click', () => { - runXHR('dgszyjnxcaipwzy.jpg'); -}); +#### JavaScript -xhrButtonError.addEventListener('click', () => { - runXHR('https://somewhere.org/i-dont-exist'); -}); +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); -xhrButtonAbort.addEventListener('click', () => { - runXHR('dgszyjnxcaipwzy.jpg').abort(); + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` -#### Result - -{{ EmbedLiveSample('Live_example', '100%', '150px') }} - ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index ffca8632c403fac..1591b0c742aa325 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -41,13 +41,151 @@ _This interface has no specific method, but inherits the methods of {{domxref("X - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} - : Fired periodically when a request receives more data. Also available via the `onprogress` event handler property. -- {{domxref("XMLHttpRequestUpload/readystatechange_event", "readystatechange")}} - - : Fired whenever the {{domxref("XMLHttpRequest.readyState", "readyState")}} property changes. - Also available via the `onreadystatechange` event handler property. - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} - : Fired when progress is terminated due to preset time expiring. Also available via the `ontimeout` event handler property. +## Examples + +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. + +#### HTML + +```html + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + +``` + +#### CSS + +```css +body { + background-color: lightblue; +} + +main { + margin: 50px auto; + text-align: center; +} + +#file { + display: none; +} + +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; +} + +progress { + display: none; +} + +progress.visible { + display: inline; +} +``` + +#### JavaScript + +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); + + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); +}); +``` + ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/image.jpg b/files/en-us/web/api/xmlhttprequestupload/load_event/image.jpg deleted file mode 100644 index d85b214128e98861dfc3548ad9f9793887f97611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62373 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 diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md index e08dcd24545e1d1..b35a14c9871763f 100644 --- a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -36,97 +36,147 @@ _In addition to the properties listed below, properties from the parent interfac - {{domxref("ProgressEvent.total", "total")}} {{ReadOnlyInline}} - : A 64-bit unsigned integer representing the total amount of work that the underlying process is in the progress of performing. When downloading a resource using HTTP, this is the `Content-Length` (the size of the body of the message), and doesn't include the headers and other overhead. -## Examples +### Examples -### Live example +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. #### HTML ```html -
- - - -
- - + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + ``` -```css hidden -.event-log { - width: 25rem; - height: 4rem; - border: 1px solid black; - margin: 0.5rem; - padding: 0.2rem; -} +#### CSS -input { - width: 11rem; - margin: 0.5rem; +```css +body { + background-color: lightblue; } -``` - -#### JavaScript -```js -const xhrButtonSuccess = document.querySelector('.xhr.success'); -const xhrButtonError = document.querySelector('.xhr.error'); -const xhrButtonAbort = document.querySelector('.xhr.abort'); -const log = document.querySelector('.event-log'); +main { + margin: 50px auto; + text-align: center; +} -function handleEvent(e) { - log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +#file { + display: none; } -function addListeners(xhr) { - xhr.addEventListener('loadstart', handleEvent); - xhr.addEventListener('load', handleEvent); - xhr.addEventListener('loadend', handleEvent); - xhr.addEventListener('progress', handleEvent); - xhr.addEventListener('error', handleEvent); - xhr.addEventListener('abort', handleEvent); +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; } -function runXHR(url) { - log.textContent = ''; +progress { + display: none; +} - const xhr = new XMLHttpRequest(); - addListeners(xhr); - xhr.open("GET", url); - xhr.send(); - return xhr; +progress.visible { + display: inline; } +``` -xhrButtonSuccess.addEventListener('click', () => { - runXHR('image.jpg'); -}); +#### JavaScript -xhrButtonError.addEventListener('click', () => { - runXHR('https://somewhere.org/i-dont-exist'); -}); +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); -xhrButtonAbort.addEventListener('click', () => { - runXHR('image.jpg').abort(); + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` -#### Result - -{{ EmbedLiveSample('Live_example', '100%', '150px') }} - ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md index 5d14fbd64cc326c..7dddb9683f40d63 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -9,6 +9,8 @@ browser-compat: api.XMLHttpRequestUpload.loadend_event The **`loadend`** event is fired when a request has completed, whether successfully (after {{domxref("XMLHttpRequestUpload/load_event", "load")}}) or unsuccessfully (after {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} or {{domxref("XMLHttpRequestUpload/error_event", "error")}}). +The `loadend` event is also sent when the request has been interrupted (by a {{domxref("XMLHttpRequestUpload/timeout", "timeout")}}, an {{domxref("XMLHttpRequestUpload/abort", "abort")}}, or an {{domxref("XMLHttpRequestUpload/error", "error")}}). In such cases, both the `loaded` and `total` value of the event will be 0. + ## Syntax Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. @@ -38,95 +40,145 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Live example +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. #### HTML ```html -
- - - -
- - + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + ``` -```css hidden -.event-log { - width: 25rem; - height: 4rem; - border: 1px solid black; - margin: 0.5rem; - padding: 0.2rem; -} +#### CSS -input { - width: 11rem; - margin: 0.5rem; +```css +body { + background-color: lightblue; } -``` -#### JavaScript - -```js -const xhrButtonSuccess = document.querySelector('.xhr.success'); -const xhrButtonError = document.querySelector('.xhr.error'); -const xhrButtonAbort = document.querySelector('.xhr.abort'); -const log = document.querySelector('.event-log'); +main { + margin: 50px auto; + text-align: center; +} -function handleEvent(e) { - log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +#file { + display: none; } -function addListeners(xhr) { - xhr.addEventListener('loadstart', handleEvent); - xhr.addEventListener('load', handleEvent); - xhr.addEventListener('loadend', handleEvent); - xhr.addEventListener('progress', handleEvent); - xhr.addEventListener('error', handleEvent); - xhr.addEventListener('abort', handleEvent); +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; } -function runXHR(url) { - log.textContent = ''; +progress { + display: none; +} - const xhr = new XMLHttpRequest(); - addListeners(xhr); - xhr.open("GET", url); - xhr.send(); - return xhr; +progress.visible { + display: inline; } +``` -xhrButtonSuccess.addEventListener('click', () => { - runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json'); -}); +#### JavaScript -xhrButtonError.addEventListener('click', () => { - runXHR('http://i-dont-exist'); -}); +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); -xhrButtonAbort.addEventListener('click', () => { - runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json').abort(); + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` -#### Result - -{{ EmbedLiveSample('Live_example', '100%', '150px') }} - ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/dgszyjnxcaipwzy.jpg b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/dgszyjnxcaipwzy.jpg deleted file mode 100644 index d85b214128e98861dfc3548ad9f9793887f97611..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62373 zcmb4qWmr^E7w#~G0}8^>h{P~-H$w?SIMmP`(jC$vARr*!-Q6KAAc#l}NOvnR3@O3@ z3Zh=V@7B-z+;#rF?_PWFv(96xH>>`V|I7J7OPaZVlqK@kxVMs}Et zgpf3!u!s;2AtB+ThmUB8iD`tG>6wN8zvbT`fDD8ufhU2B0|5ZZaB#_R{tW@>0RSK_ z&bri}bui3~n@Vjeml4yM^GI&5z-Z9BvP_pj8|cpi3&wvhyi5ek73Ar+GmAy%JW`1)FcQ+O zjnjpa_00+pYCxed9FtCgH}2XA3uO*0wwK?_bP1IOS_UQ*PtqsIrp?M9OydnGq=%aV zcl<_YPMpLQc*>Rs9L6_@ecrSv&7HTs)ENe!*iM zy2QGyW;d}_grz9Tb|ASU%_=Qf${;kq&=oo89S+0fnWJl*~yS)SunSP z{f*}j%-_+q)|!Hrl|%do-pYsw;^xGKX+Y!z1tV1iklH+j+Jr{cwl-26?_AUJ*wvqN z;89f4Rm^87agECr^}2i22^VC&qTmZxJZY_!pAS?QR7Rwc?!kSP;dls~5}HSrMD8ye z({gP~np)#27my03t@4KxWXjMO`Jt4GyhI_2s~5qg>UIIg1vJN1x`nne@8KU}tC^XN z;Q9mUaRdSYS2`T^2NKW?G&l1T3}3aHg{+5U{jP(X3&yHU&mlHMAaZ0(-7`usBe8Rv zV-VbruhWF$kY5Mp8mo_u0^LM_xdbJG09=6OfDWA%%#fDzQqYtC9UnCB_;_YLM^Lp&`Fs-K`u1+Q2b)A-;{bMd?@>D)Oqbex3p6WcF z;D7p~0aKt&ba?!z^uLG3M)$#f-8D_qjsLCO>vu?I)oE+~F8vQ6y4W>=gxF{E_|E0Z zEYsC?lBHKFPK#XR_YR{nixSZFioI7qN{QtU#T;>l^1-jQx=Vj>X?#%0bvwj@s+DW z8D3#1msQ(3POg;|Ozb!pJ4X5)qOq{!ck#SEc^e3Q3F@Qmd@6%Vs&ox9 z%be)w<^<)H$eCSIIRIby4T zV4meW7DYIr{Kw-lA5aIv27$wAa!eGxAw*7OaR2}veHfmYAc=PknNR(#xXb>{QE&C7 zlb20>g(`-w)P3Vu(Q9gqw>~X?Hl_gITp`HcxmY}(*qgInsbjYA4QWok_DmWd6UQWp zfE-|EW?gQC%%;GBYlf=t@6XwQB!Uy!v-z99uD|+Z_j|9#^VEcGlaimJh32Zr3(S*wW5n{fo3j%IKuS4e#L~c z%ZJ`Ufjghke4~ROt-AUQ`RICXAF>pW->5>sJn25Q4v?#pE@fGDp6|wAFz$y~FCAhg z`Y_4}B$7in&3B2(k_}`7)V8s#^fD+heVM z0pneD!r>GY6sH!%YlsAm%bO|Ypp*n031-#-tgbH5b{{FDj!r_~lZD4m4*C{a%Tx zLJdH9yap=}nU{JD8vrkoWDZ!clj3o>7W6lh;pdo7>!^&rd-UW+NWnILZ~1d-*WjN8 zaS4^y>{{P=Ce;iTG>ihzP0&eHmoN1Rs-*~($@5AqA-0HmnsOkCO`L{+r)zr5x(2vF z@wvaDQc?D@8*1dltGhXOW4SHFi08nnJk~ufz(TV~38t*81(H5}67+=m%YM9BtK4>0 z3jHNgP^YJ%Nr+TkTNO2|Eck$#0|j6k;eUeQ<4Cj!9)wC3hNDM`|eguHiAo0_N}*!srOrGM@WD9(y1+$+K5KL|G{0 zf1JM*@eICpyiI0byfi0*{esbRNs8<=4bu`1YBgo4DfRKvZ;7-!BqiRxA6e;!UkZuB zl*{%=RGA;zfl2A0qIfF9k>LW+N}Pj8nl2wvQ|XWX7xc-T&ufo0^M^2o4wV-sl6~FQ z7)$i*=8k>j5XU5?a%x|euRGccR{<4b`UCD|pZCq96nm2wNqH#FN}7P7g;&fnS45~( z5d$<-IX6K9n+vnN!NoJ7xY?hMoIeGPzBaXZ#%j@@xu`!eWmlGWS_sukk9156YCfLG zM@0tB?@?XBx~q9R7n7RhJ#a{CrR36CsA*fZO5a$^fyvlXR315IE<%^SXZDEL{UOI9 zJ%ndQJu=ZJ%hi0%Pl$UuUD4*Ri!jQfruI%C_qr0!C=&nTLZ^AsE8Dn7|!jH#q{ACq!g$XXxTo46Wgm zIl8JE>JvWnFj&9-`8Pfp<>S9wKV@lhD~zRgntuKKS$wQt!aD=WSY`DnN^sHUE2}At z{@l^*7+gGdiy0RsN-ge_Q@)6R4)dF??YlvOjn+r)GNc)E%EBwn<+*}Fib0rSSZ3aW>_UH zQ56mV$TQK=45<2Xtz2Cb7fr8wmUc~DbCf6YW?ML8`%R<-UpmH$8B|N=NRUN2i+x|V zdw)Z=={!;Fc4e#$fg}o+#w2wwR8#HZ!1R(DQ6N&P@&9axyZu8 zgd>OxO}B#Z_>GWgZy)>}UHoOZ{EK3L7LK`K=Ic)~6Wra*YLc0)mwZWo`2LL|%e}+z z>vG(`;B8S6lYfU-Nuw;+5TTQh#)Ooo;Yf^7X&*>QWy=Rmt$gbLsC%|$`Xz9?-t%DE z_|bb|)ioOfi(9K?o_)z?6Z{-ulYfbx#H<=k=)G}VKCWM?70>83J{+yRyH22FUfr4yG&PB z-T#N~rXXf&SwColvw;+Zhu7$AI0%lUOcF{&&__H{u+~)|ClKeh;)}Yz^7Iw@dW)tx z*KK1^ccSI$RhzlH4xkk=OqFlXKx@+-rgd4w`&#WTZyc&cz3Fvl@a1qKY|o)i&5ToI zc}VxN#x@TEf<}WZQMkM&b~2&q+3qHPyNmg_{2V@q8=Cw1a5pPTw`in~TIu6z8?@*X zu|M>4F3bt+@Rt<1xcRd#h^#P5 zy>nI(6G)7V9ekJWS(^YMW@EQ`V~x~4`lE>n=7x?1Z5ia>v`uGgHms+*CQ3AP{&I|# z4hD@+)O4|~)-tQ3t!V0;)7mVWBK9v*mp-NzKYz|3PO-~2PpGn>%BNJpO+QoTm`a+G z0w#QfWK_6*>()Y~5si4Mp+~@DR#z;D0JI)$mhg3dXhX{eAWo=1Tf{O<-K~lVf`w zg`)1ZhjMU}@zb7es>Qj{Je3hoD{&9CQU(t${mCv`IJlEfRE3iafb%XLkiGi*5uX^Cs};N z9VenWSm%4&=<2Y1V#-K9yoUHFzq$b%QXx-TH}kW0#;0G?cp=Z8qYnM07tI;`oX-wV zpm3>M-@V{1=EDykE3sQ|$32GI#5qwAT^2f%uF$@;eb19)&(g*9vEk6sgVNzoiVCIQ z1y=3V8LUP;^Wz&@od#h}<5%>3lp zBA6Lfn}Gl&##jouuHWJgdP-N4wg|Rgo7?5R_fyx`bQ@piIdq@qBXRT!@yNZD=+1G8 zdCO5XEUI4WuX?Jrk3DYLOcQe(^zAcb57!5V`~#Gpw_)o)4SHt8N_cIi40|*cq zq04VSV{fowob8pXC_@hd4T^P18AFnrbzbu)svpjzcq9E6Pd<HHlrj<=r4LyAFWxsXB3tucX$7eG;hvKWRQF`n>=C2b_0=cf8uU zcjmlHW$)ON`{48{cq?=&3XA^nz9@O>s(bz7H;HB<6Jbm)&@;@Z1NrwggGmctRgr~5 z`SaPEo)7%2O1F$5!)E~-Kd`PTl~kotM=ZK&36X#m4EyUX>BqU{B248EI95=a&npY> z%raYDe_o$AuZL`TPut9=S56&Z`LABf_*RAKz~dub4_tbmi^s|)^ZGUKe~WIEtlgvL997@je}FnR%4GxBf|DCTTU1_uvUlI)MIkcu z3sv=DNHHWR{?3hFCWrkY=j3Uyh$SvaS%8O#{UfsX=7W$|(^eNWvPT<9nXWQ2%96Ir znf@lhJT=poiVR@QhC6$mcw{?4%lZ;SW7wq!lP2`K2`(`0miptMxLH+99G&m^Q{qoT z=5LP-1NbUkr}JvBfBuEHzRXYe-rUbF-ESB^Y;vofR^gE{CDsg-a#MCxRJ*yBu#G9T zqre7N{i|u--Q-AB6j@j3CzytMr1NBSLi<76+pio6HPMqY&pa4qJ~n^UxK`=HWlX){ z_3e+mJl^rr`}5*i!;}aObF5PGE-xxMWu+O)oIyseld{1`J}-wD^a)LHYQQ?1 z7TaBQ@HR|ZRGC3_HczT;%L(9Q+7PC<&#)VnFOchEp51CMDn~KQvxNr7)wQD-ZjpSq z{wHk;6RA7}h>}i7r9evh1Hq}+8n@aZ1sl3vZknZ4PVH<%qEtCC?S!N@5Hg4aTg?1O z*KY8i>{SP;q@F(kfg2Xl8-JUN-*oQ@7|$GeG%>`PzQp#sr)NZP)?0tm!V4p3=jNWh z^mvDUFj0n5^>=S2vg8D?F$2gPNyD@qVM=R z=jIP@zEr4*HPIO*g%x?zG~ggb;liBN=a7>J1BnN8A+I{X;4bHP}W(Jg(Z7RvXN z;mm5!N8yFc( z1zFS51r^!*D1S?#lGrJbg7;T+c>0#;0H=5$16PB8HF5_#`#5XN=N!kI|EO+u60dW@d2qZvvU_yS#iyI$ z65;o0qy;yPmJ=DeeR}hpIr1$O2H%eJmHk-!?dP8f5%%$49tXr8BX@5u2}*%DY&nW> zxfCUB62{?9*EuhV2xlttgcEqiT$-QKNPuMna13KRN;jk-GN_Z$XSjXADGps(WeWZW zhzyypXMBi#?R!}>J$N_2jD-~}|KuB2hymhAM94v7GL|u+!d>>&!#nR?S|u=x^;Gsu z^tK|1G#x^Tg=%PAnB|J9Qc?URn;|E0Wb`P{HtfPYRE%fM?GL`ouW0E%-=~`ML)t!+ z4S`63q$wO#aa{MtX6h>KZ*l+&9{QYLupBs{XWmjWON8-)8^3sJN1i08hQD(Y=e9Wt zJ*9;aCp;m%IZK9J-M;GC=D&SB=XLmtvH7;itQdGZU59Xl;}Hrn#gI|z|JqJBoH@4d zjrV6T|L!4NJBRi@rq8fd1RxLPzkrscTqy7bD@M>Vq17jbs4*KiTyHER$M5S{Wl33^ z`>)e?*!8WCv1Ru);jMUk7)YKfOfCf)8E3U4tJiRrUKi@0yFER2a=K>~&ZMpYMy?L( zBowfK2ZihKK7ln*K`#Bni)krhdq9VgKac0z25n2v`Lfqo&Yym?8UHBzhw(rJ0E7(4 zg+mD;@9%!@FDmr*!@kA8b#JmiHR}PY!sBUhTsKEiXFjW+Pop|H0(6^1c4ZVo{@taDCFr1VWC>KelDtJ>pO)1q!CE5CcewmU3I*3wz zKRH~nX9$C+3K+`QkP+Zq%7s@7j_12dIXYp#cE76y}<7 z2p%&>b7p{KIlp01L$jt-wyqWeIni7vhL^!i`4E(#Z7@8-iNi*sX{eTc^}1rALY&DG zO&mD#mSbJHPLBNk?Fd1RkeP63S--}POWjAcssi_4KRDh*9w%gGZDkaoX$%XHa58FJ zdh3+f7V@l3+K}y)1E`SYfEz-=T`R+m7LYO^2SQku&4e>6-NldS>YKaw)Jbxnmy==+ zC!dr{xn{cSPKJNn&>CGmm6X#M+9oyN$$9n2MGd%%8R-omq4+P7U`;%n54uU6JP($r<1G)tF z*GW(&Id%fJm~m#(m}e;gUw%YSO`bQ^dk$`i@rux~)=t9Y-f8WQ$qPjAhLuy0$bluz zEtHFAugD)jRy^N%oXJ^M;Q|1p0-hQoqGZ4VEmks3^y_ES;H}P5eKpU~(E_S?aTVoJ zkTLViHOswHYFB&{0t8+9k>7`_?edC(e8Zc6fX53HyP?_NYtn3^qjLlR32C6Q@a+6U zth~g{nSul}o*i~NdzR+x)PA1+u*dD&4zZzY0>+j_ht;F_WzHxKN`!-BTvcwb`O5cY z>8-eys>01lXkut`g7MYe017aJYY7B(KTq*%zNvnDwT;Mh;ND?0yLuTDmYnfx%W>4> z73)-0DKJ?2<$B%RF?W+rQ+(rBj!A^)n~Zu8bOqrhn~b^gT*-I>Z0(o6PB* zXF6v!?I`Bek%L1DJ=uHh;(Qc2#vK2l)Zr3S;bWcH@4+J`E?1*zkV29t3x97yV$u|IOg`4 z2=G*%FBYG`k-y}n_|D;e%UxTfNM|U=Fle8{( z8(;mGx>J>s%7|*IsvOS7ZS}PDN%Ff_?`wB|`EUBxj>xHM-(ZrzzZ45P^L2s(fElcV zzeYE^7Mw0#bKMq?${z1X^UwUP{Gt9V^a~;AMe$9$!izGLm9FqCFEdya=^|oL7w0ha zGR>)GL^npBQ!Iy}e(P?OCPep;vi`64r{8{@iLt1=t_Smy4~lP^)sE*u?E~=My^fG{ znyqKiA-a2vwpV{2pc$}?sef=;p@haiUdxyymqcMpUQR#t(u4aVbw(12D5ev+_VS#W zL$qHa(rK2cA^3S{dq<5)dDg%%&zrQ1+$dF*Y!PB2LFK;1hb;Wz4FyJE`Ae*nbT zu7B>$gUx>C@3KjO$(auI#}-xXVZ6VVrBcB_un$xuJ@4Kviwof%r{R4y^!AFSHo=?DvJuux0{$He*HxA?k^!B72q_JlB(yt+TOcaF(D!%Pg)DM9>^o;otG{Y@sPtqGozI zc;(lL{{Sr0Tz^-O=nXN`twC$-gfA|(#MjIBLuIc10n8O0KL6_4xb?IIkfpT-9CYb- z=<^v`6LL#0^d3Q+==r0yb=KEZ)M(bLZU#wf>s>M|+#W{cuya69kOJY%VYeSuMkldG z&A;E;9~}KMEWN!}Tzt(~{e89Z*EIQoY*Dc0!z)>|FaUrzmu5>azPB@wV1lQ>I3TQV z(X>c~{E|7Pr>UB#{j$zru$t-Xhz=kY{Aq;L6{je<@u>gRP*>%3;vdTD!QkEFqW+G_ zn<55>1ENYs#=W*%58dqq`V>I{yjW&7!Whyp2uIo-Haf1uUvPXG#IBLeq0b5LX^u3D z@g!J-s~F`)8sX)g2EDq&@z*^CpMbmeES`6*^4v0V?>+N5w2;3q zs5MKwt$!uYg>-0$2>?BD!~}sjVUZxYa0u5~V!*-v(P>q%(`7}5d8Rhulu(&=Mmb%e z4S6mIFI<@kCFUy|wf`YMyXJn|^JFP)YStBfVN7xaB-Pa|sS^%pXHOqLH;HN@MQ2@|!9baBdK0BhI5ROv zZ8#nqiRa~C?DVgiqT@pgm#qP}P7?PuoHrRp0{~aBWpp070s`&?VaCWZ5(SC+GfUVt zt?u)%>Ne>c+7TU)?x#A^X+uc}aS0jX*Umre(}b{Z25tue)l)u2rZTyS2v!N=;sHdM zhhu?qWeY-~p(9egZFM!Abv6A*bB($WOEqR3pl*Ny6=0kO;>oNJPuqi~KEu3QiYKW| zmMf2F1PBD^0FLUQmQoNTMUm;F?6*4cp9zQK`Z}esnx3{V`WkOpVVsIFu~j920Y9R@ z+0-Zf@sq#v!%_D)Lc|F;Rm5R4M7sEtRD^g&X%r@!U++{2gFp`beEKkLy$Y=b8*#;Q zKJ_rXaD=T6fN;t)>tyTm;xpq9DSLwNYyg%bEA!A*XdCv&{>S+d9t0Q^3ySq04lW8X zot-Z>)8l?8tg&bw_ej}kb2NpG=uujRHK)?Mv=+6Hz&^&=UYRU}TVy&;naUd-@~3GN z$&@oPMC>NA5{%CG%VoJZC-uoOOK;oUL$@Ae_1$}GeT3eiAyLg&C}08HAw(EP z+{);T4&3IqduDvg76=2=An*j^kgNs&0PH*Wj#c+CpuXugK%!eTh`(HgOPDAVEsb^; z+xG2o@MYlAV&SX$>$%Yup6?Tb0h!e|aqa8#1%yY$K0!>iuS6KS9c`X{`*d@8bj!YY z5S1iHqEdy_Nq@_)_~GrB7SiUGD|A*|(?t60Exp9VB5VUT!6=^d)2C-$)Z^mrg+Lyo z4bm(`R-^N{j;qqvrIV;^q&|2b7uaHwi&yQ}DC5@a+v_%;kNJQ;37u9*z&NKeE64;2 z?qPOOKpi9Y@)1RhQ$!wjyGeD=m8I!Og>pq7>EUq_laF-_u;B% za5=S^h@ZobReH>}LBYb{y9^_g0R4(QNba}!#xKV#*YQ?j`KhsM|78mjX=Z4C*qW`> zE1oEkQe`JY$??4kWnOH!0MJoGNYx4kZvC_7hWgBG_LdA6o<_6bz)A{v^l?Vvss219 zhcwT9cx}^6;Jgk;P}xTD)t?U)E|FZ#()kg>Yr}+ZB>=!jI&R%y04qL(vz9|ckPRIF z#4=Bgl~c|HLl8lVw}aF@y5fjtkcLDsvk_?>1@VjtSWlaYILGC2XAoB1l!Q6+-9~WW zjZMj^l-ZW655m)Q>9%PUgnnuf0~XX1YA7Qt7jn|PwI0w$@G8vO=_wU{rXyju+^Cq5#lgNQL8fDTy+<=jtj>VGM9G?ULPXM_%!P5v`tK zgy2>ge$^lQdwW$ZF%oGpv4kY@w5aX_5H~*Mlnp>TtC1gHxRoM|xCBSlQ?VdJ9;U)c z!X!wnf&)=h5reWzxt|1qs}pZRUFntaY*R$oRKOI~rNcFwG(5OC6-D*vxcr7@34q2U zt0zq5Vnd41`6mR>J+u*C7}9CnU&S=^?d%CUy=>}v!8A=QC=JQSJC+j7>8O;#t0WOA z01s+xqZFU2BUkS{&X2dV7pW9cq$s=|e26rosuIaJnHJ8bo7O4OO<91OPNOvUchY;W1+dS0X0rZnByp zeq^L-FG{+^Of1jkV(yptK}`#u-`3~L-mhmFWce|(nj^O#=K`Xj?5&t$DIkm8l43eM zcm_|9&cRReG=oE(|Jczh1yTHfsB>I5mh+ZZg3Eh8n_mBA3=!h#Z;?q`^!V1Lt*N@h zQ}duzJv)BZFK}8a+;ywGSY<_B*3z04)%KgOAiT@*J6}`DIt7udcCox%ewoa}rY^Fg zrZ22r8J3B8!uxexoFfJ&>!P&Y0>%to@~SVZv<`haGd195FGL6hhX~y|>`RTwN*jT? z-Zik(3K16dQiwU4y*P#DtcctKLB%ZB zSBw=oE)MV^#yzN-!ywwnZ(O5RS^r0=R~Y_QzHeHR2^G%*M7LMzdYy=3YjRm_+!IP> z@wv7LC09r&uPVBU7F-&T8?Eyyi+ph${Lz%3Dk#%4BVX-4U{g=|%-hyS(9X}=c&2++ zCvy%m?fTcOI`>HY*sUBB*)F?Lu5;n?|RC5s7%gxSoQ^&i!HBUUm*h~;7)u<`g>-%aK;f)=B zoK&LH;~Q;^h~=tDuj6UU-CvX2QC737G+xQY+sdsNDW!Ln1No2p>cSQ~rS1-p_9 zg=(Rd&9hE3x_KX#KJ$E^ZD^w9sC8~rY>Z}rXy?JN{zzkWs|1-zGcD9(-r|UMy3>Z& zLD-f*6YJ@nnBk$sk3o0_KZ)^zz>Pb*ieDpBYQX*tN;z11$pKoPH4 zXe-3LbC__pRC^i6L=LEI9olK3%~`9@dT5y`2SnGiS+Qoz)$(R% z;PWDm{|otM*>FSF?OJ%Vvm7ZEj|d$Be0oVnLt9y8-&1QadBDc>8VUeV$6+$&u)YsN zF10k0JE97ymBNt&unLc695zh!XH5lSUYQ#N4vxbsPw;_6gzACc&-jd7LT;fL4>jWv zc&vdGBnp7%RN%RZ{tPqi|KpQz>WbmCD-nyM0FW6^alfS{z?9DjS1!S}vW(#|_b91@ z#QWWRHdD;ntXgW|17gj(VY>~J_NL2K?fNz(75b@elX43@WmK#m0*<8{bC zJJsCAh=}B^4f({p$4%#jJ1;x#JHmF+wby$ABT|eqC&H5){qioIth09Mw&*YhNAMr_|sHH!#;=oID<8$|2n6X;)v^63pV982{dITtHe(bnxOm z=<7yolhlLlXbc-C;&}H6B}jYGxMX8~y|{Rf_j(yzLt3;d0kpY-P^^QS`c`54;*4mL z)aj&mA6^ZhY{*d5-g1;PzrmwRzH!(z$*_~shraRvM=lamr;_k}HzUoXvA%C$Nn+~< z%)>vq$oDc#3-0OrE@#5{OHQF=rtqgwM%E;BTMH7?BJ%30^06n2YHsgV$|iTP2t1bb1e8;Bmu*7Dg0zB(Bh^ew-HNTLaw4T%An6Rt3m{hG2eQ1Jn3Cbuld59T7`8cHw1k7Fv4 zNANqL`rKEh?CLn`!N>soFaUtu93$=2pIKzp_}^y0N~RKcjE2AWu=x>o3^_qmf)UPX z4dcQCEb!p!kAfWz< zy$g)r&8DbQ4ZL_nQOgHAlWuA)0cllCsu@3|DIQtwH zd76xud?(WLoL2Wq!)O5KdZULN)Ho<&5tHRefYLpOdr zKu<*xE!wwWK#|Ve_^`-ysn#x12cQ}OMQ0;>;rkWc;eNE3?#7Mv6w@L%eRxIpz=(a% z6>ecgibZ%)28@otw-Bn+`%Pxj}wq4n^&)gh3CBg1QW0Wk~`0ovUp2J(yz2 zSn-3>X}T>RXx<`U;HfXO90t`fM=s=h2)l^43Gt!DG+G}ZHVr(h8Y12lb2hF*7oV$o z4)tVRt~g{}Wu@slJBZffSfVEzX`QA?HeHwbl%D!q6$Ne7=DPUlP3F~bkr#_~u(oOZRESH zoNuv>m-AWP1zSCMAPd17CMGIvpT+*9oR*0sao>6A8&uFi3m{1qOj=4M(iZaa(q}Tw zMH<$*ERAZ)`vPJbFNx$(%GUOsedTVpk8GPB-?S0(aJ5xUsjD#yBXi7OIBvXhAX>=PLMo)o6{!b;T}SmutKb6+X}>S^xbOeS?z9en-(YJ zviGP!*VEMeZ{~3RX-A{PPfStU1ct!7KRs=TYH;FzDjjTfG`noJD>h1+#3tw)NE&7?n_F?l6eSr7i zzDiRPwXVpFVy9_A7>|yj#az%;QP1woa{gOsKHI#bZ{?zjaa0(lk_>+2GQ+58w4|BW zw`nS6`=0mT)e5O$8mp8-Wkfj3{r6K@Z};lK{usA)kUH9(S+aMV()AJZ){N;ZHTGOtEmt)Rq0O*Kswz!Qyms@|vff?p zZJ4;4Fy7c8(H@s(lM#ud3v|MwN`HDvU(h*P#{6e-u3jsovhCHB^`>w8HgaCN+uUn6 zCXc#d@2S+q*Q+4on{l2L{iZw=OGuDl;c>trjGvE9(IQFDXFc+8?nAp?TG`qGLddyi zy=W{4lc&Jj?N)eNa5Pb5mxbX{>hMWGQ>m3KgmcbppywQ_kp+c6g{8qOLS-(lyyMJT zrE1Il-o)1&)}Du7R9IHFb$97@-Qv@r7H;yNotdp;Cb~4p|WAp{sNn> z>}q$J52bR%$GYjpOVByudZ8~hB?=)o4qf!O!9_(d3cymeIyyhHUGzUX$IK*2`o|YP zvDcV5EnL@I;e`GD{WmT`ZCrdml(LOcOWq}bii6Qt1=uW6yOaq$W7o ztMk4N%;Vy!#yfS>L9@bQdRT}>Z$}gc`W=GpP2zU7vblK=1$naCmZl1B#@XG)O-Ef_ zB4?M2kqHyl`_!2!LVP_t_H8<61&7k^nd@)fUx$55rH=bf^B!!9QT zWf4FA<+6J;6kMUrOR8qzR@51p(w1ru=P&!Q4l|y!HY&B%D~mq%;j<;rwO8a1@!Z7V z04Orx(I;Co-Dx}+E>-xkT3{)FGtvz0xB1KMg{P<{42+e z$pZCM!~BPbK}P%=SZ_m;%gf_rqcGW?eI{;1i<#?W_BnqwV z;}NuVUKDI?g0H@<8OVyBY?_~(a>_eg6&QO&=AOT$AYD;Mq$2sVyI{{^ZFhuN;M>8t=XtUbiRD4KwwY8%X9isr*qd3yCS^x;g4=Hi z;&l$WzVo$H4lF?nQ@yO4NQOYl{*^QhW&yh6_@tnvk-)@THyc>Oan%{0)Y+T~(js{9 z@^l=R1*a+J{qR_>`yLDIh2fR9W@ohYJyV{TcnJhssQlHS} zK440a0)RL`d>|e^E*|hdwS)InjzC;8JW?>TAig{~6GVW3LP$=V1#U$ttmO&S5ecVa zRS+%xU)6*-&v1VJ{s#zCxc10HUHD;*x<0gq>W`?g4%{V+D2%sRlQWo=Rmu$WLUPB+ zsROczy|VA?N~5`mDt%y-?%(tM_6hNe%Wi#(rvtmVP^Js9Vael3q|SdE;L3&bO1--r0cihU(b+ zec^;{%qerlSL2^NPJi(=t(`W$QCsNwGZ^yuUo$dT>>>8If~m)cTkYDi9QzF~HbU3G z8n<=*8cm~BebdOze7QQZje0~7<$Y*fyBO|q$GOfs#hpJFlSTgjW&-$PJ5{w(HoV0cS7x@dRX0LL%tfXyt^TD zYwZrsr4j^BcdGAwJ@Fsk!gvV(Ud&_6v`_MC(R|F6arL|<{E)Bz>6F?VoT&Mv8S6vG zq=UmgDYIac0-6uXu>n3PP52^2pCx8(L>&Kc_2C2PPnM`|<%k#B5d%6yqmG#zGl!R^ zF5XX*3svW|zGlb#bp6o8d5R)hGu9-ht*3ZbEE+ctZvK2-WiarIaVs;d;yq$JeY zKnkZGsyDM%js0>@N?_$`mzv7X z_{&wASE`K_HZN~&0@C_^f|U=GUqfDjJgkzFxgdTJW23Xo=;40#PECnc3sa2s*3bW% z70dJ8>AUV00ZH;*#%gi{MoBwDQpAEtGIv4Hf>kQ>=(yH?Y)2Y&GQ5D{O~rz<7o_?o zb^4kDnjTfMYiE)tq}!1+e*Na7bS)T=OjVzW>fM`J7vuM}amRx*E>p zarWJgN$UCspfkbOSlTFmlc{p36iol_cp)yp!9cP>gQNF9|K1CBbTTwxQYLA4d~lWc zMr1GE4b$S9hkCqv_7@f?-twUGsg&ONL+b!lt%_zZS+p!ov+v~1EH}1_Ly1}Df zrVy!?QEqhb^80@DWA?L#6BiWTa;RkD@CLQboL7oPUZH1tJOh8|j*Nz*x(p6G_nimu~wA$P661=(#R&a^%eyP}8hgpC}jr%mV zC=hQ%iBhKZ(wne&?c66s?iEpypV+*k)1TwgokJ;DuO~~S*_twFt!C7>4;v#Itx-eo zaxOyk6q8{sLc6b0zjkUoQfl=aUndbG-*^|xTsWM6{re$%{_jkT@iTtcA6n-vL~N7| zBy@*Ro%3+1F%nyE@AqZ<`As$&_F zRu~d3V%m3>)*Y5M&5O^Qv~M%6Uk&8{QO~~j-H*x~oOrI%R4mWoTmzg`*=>l6bcyIv`%AP!O)^w6Pd7CjRrsu-HdgJijXv7* zBg^i1YxUE(wl--va=+ZTX31Ifez-*CGW0~YC|!Knez|tdf-|4BSuJ!QhT0Su}Kh{Blf5fdz4SrN~|Wa702EqC{pVbK~SyO z6{AK8swisrm+$ZOdj5P~ujl=Y`+i^deO>qUJZ6n!LPkGqhl{JLHZ$`veiHtgkfA&;i zeZUDoRtT_5zI{Q!COxk_jO`1%@xTWBkZlaVU2eedn}kz|C|<6g%VP*Nocxg3KibzgY?_}@f;6Z4FhfV} z3SIs~dT{wbaoj06@uev;K(H`5g5GH9+nMF*mZvVbTpYlbUwMI=eotw+nc175Gq8rs- zQo$?8ApeeQhn{WG?LjAe9g)sa1e|eUia+qc!=mPK;5BZzu;udi^miMe@t%*u@>8O- z-a6b}EH#9609U+ubsp?N1M0(&*6Q^jMsZhHK0OB~F3FH0mzj1HW9u5he@9_s@Ibt} zXDrf?{Q=U9ZzMhO={9P^i`KS!#JEVcPB58;01| zl$sBK*j4_syWjedDcwCf-d#2i9Js=%lm?qIBO_k6X616&$y}R3PQ@z$T}zJkfO>dh z4Zlc*;VYki_EL2`L=UWHsw;o}w_UXVh*v^_p1UTiun=93jEHQ)8`PH)(Vit%_6jOl zF}TMP!vqAeB|1*>uwdQU1U+12MjjO_;Jbd`_`?N7{e}%3R}bz$AYr| z=&wn8#R8$G4F8+r|8TI$&tYON-E5MbsSK@%69$vADd%aR!CGPukv>RT(OM1wJP%h<=_Y#L$V=eopXD-1pLbYBRLt-LHsy2^G z+#d`qM4OXGanmTZiT(w&BQ`qwlDHAOYIfC3F%z9a+hy(8c^(9F>(9dQv(>w$!P(U? z&y*0splVYS?tb5RKh)=GQ#zGBgEVhM=63>I%IYr2>S-H)aseAW6H$;RpK4@Zi`PO1 z^NSp^b%?>+(AEinHnuhA>u30stePy3S{r*UQnDdp;1hwiA`&wgD>$-_ACU9aaY*OT zl0<%#*Sc&|T{#18R+?LZEZawFulY#_%goWmDT1|#lbM4xO<0wq^cBXDk6qzRx-)~B z$|jzCAhPc*lu6JkVaT8}E}61e&`uV3CbKUDN`<0!JY_F!pKgi^;e(H`sSln zImf$lyVBTefRowJ-htI0*wuZR^DyDfIOh3R_P%i^k0SMxD}1o;Q1xXeEEh3{5&TPw z6IX?!c5fCQI4q$hLtx*7Zrebq`GRNMxVM$#Y@5kDP}5fFn^aY+1JNpZIl_~7-0f0< zAF*B8n_%CV#hmWZIlOI|<$cBRiqt}STSN$VNFcjhv4m`=7}yZ0`lmFx&E&j{5S3<) zCNZgRbRLEMmzYVvuI-S!g^%jSwLUqObE7>b4S-IffRL?lscZ^hq(x$1O7ODrX5eU2 z5NoVbMwb#PD^n@Swmq?Z7E*5_{ZX)PrbVx$JBhiA`&5b`#s{!x%f|{o+8`2Ppyl2=H88Lm*jd+bnW*qf?5Z+6vdKN?TpaCAj{Zgv9?pJ( zk=?VdSEWu7lwII1u7aV;hWerraQ$Zkh)OvZ zgDUoi62SD0gPU8a_2Eg$-g4YTC~Mw|tcF(vf6L8>D5)`{|8)w#SJo)sQJk&SeUNKo zP{gdT#5LMcJrZLuW2?Q>9$tW}b^f|L1K|1+m>xG7IGsn28XZrw15`D|SyY+WqS-SG z(V=({cW%wLu-~R9@xT;Oe+v5O<=WdMoPI7xVBWaO7&Cpv@QUm0@ry$4$UJ2pMvk#; z#RaCNcF!2{kp{uhFv2PO&RyC_GJ>63M-}qXWwj6Ym?m}-J_GV}p=^aClQSn9kLD8; z0Bi+t8d1*=O=^&B8wqK6_APXye-;*%+aQ^Of2frxP@1T4WKI-GN~Sbf7D=p`xY=ZV z`+-ef_x--9)ABvDyLpvxPXvL?5c#4Xl+CACdnz)dg$-@KLfJ>Tjod8JN_HC!30cT1 z=8d}JLT>QZdMs)BwCoS79`w9kM8Qh#R7VxhLu5c z^gFxft|RWm6A5`-=dOSZm_8Mod^w^i)`(V6TR>*!5mhvK$;%D$Z_?7g7LcwMW|n4hzARS>J44-@Wf z@xmCTqiA`Dbncb%3h;;M09?KJ@`=X9ywqwFKVumf0t1;ZvAIMF0ai(x>@M%6t=;IT z8c?=fuZslqYd0ff(W!-f=fkj2>1P=U&5P4cNESJU;O92%TLgU|FKN;?6s+;Ew^B8a zk?zBaWItEugroLfXu*F8(n>_X=QgaX*cH&9vU?Uf9bCyXaO zNBlT7q{V&0zsU_B`3ed}icuL>SGXLiCLOeN9k$_8eGu|zc^OL}y$`)+P%-x=v? z8T8N!HFQOyj>4YqB6PGhR2_16_S6Pte&6zvQtO>v*1;W-IqzuydU9;8&R4RAkjvWg zo`jeszPA#40pK^ALG_R%(4*$r!>^th>%D1QCvhLP9!_zuFo18b;5*S}wo@;o1|MjQ1>8+t*R$co%(t z@TEfiBb-U8?>s<=Cg$9ZF4~q%QpdS6g;P#ZUvaVlsa=m?;llcVNg5Xv*wA8 z%6`o&N@8N*VIB}ovnHCo{iSE^Rq^j^kzr<%geY;gcUfDt$f5g(kRgfX$^AWDmD~i} z)9M_dobu|FNVJ$25U&tw_a!D+&(UKmV(~`~pF`iNIme{JW@Znv&2mBabqTw2B6s_H zo<}!j0!})1&)D@XD{6&Yr`z5X4K58$L*Zrq2-cS)<6XYwFM=jNkb&_Cs~WBmg(l) zV^LQ2jg^=4Bk5k|`Wk1W*w->o1mOc&Xxw}DuKcVK65B>vC{W|Xd$1gFnVpsi@nhJI*3 z5AW)w-4ibzQC#@@)+?PBos24kST%)ODA@t4IYYhLZi|dI&+n2B?;KzxFIb20`Zb(e zfg%F}^|A+xSKEKFz4IkGZXud(;|TSZZpbVM!g6$mrXeTT4*i->V;I^i1PAB}ht#^s zxgqQrtst?WvChO6gb;uhOfZ(tR1>{Lp-FtOuM@3((P&QylrGap5Yt3nn;4_E{Jl1A z_LsGv;o?9+QEUe>1tTAzmVxvItJJedYjFv(J=a9t#YZO>o|HmQ&)3Q!z=v*|=U`H} zG+v#-8mH-kna>j~dhA0F*TNvpo0luiDigD@hRAx0zfErbOQ7U#_S!iCv69w3n0foO zlvl|)wA0o_Rq?7G$a5!feoBtySj!#(`TuKEdqNPjdM4jShvl?*S;T215s;;Z6f>)$ z4|C;du+v=apR7u3s5vsM)rEd88d82===A)FR)rMw_2B!?UDnug6swEfrf}!-fQx%w z8o=&BIz&8GL99+7jVn(!`G-Iqo|v!jL_9@+l>`2%IVm&Va3oo^WWu`W9uo8dotmVn zUFOnRy~Ho6td-U~^XS{vk1_vl`-gD^{=arR@FsPo`zf<^{C~n~LR0VYSWs%Y&IX7r z${}Ux!0XPIXcmzXwV`$qbs3$dVS<1k@sC+uyxzuePpUAl_r@%`d_&SWAHVubC_h4) zQzDcgJAMB6u|IKBdQY-ew24q3*vm#l6Rv9c^Bamp4V^Tn+2=(Vw* z7VF(avSv(O%Aa%hP_u>SPcgxVi#MjVsrsxU5bVa8kY1(!1?pL*dE&RUmgejQmx>53 z??z^z0;v2=LwS_mp-l+D?25_x5$Dl-gnk4wv)es{qtOTawTnjJ>^ z)}2A}SL+>4?ci9)q7pt>4vx9uogN%bwvNR+*PLPTc8oRoVR%CZW9JjrHrKtsYx}{- z1`GT}&PIP9D-%nUjB8#Lv+EfU?~~KKy!kedUdXE?T?H-N4pI}#Dky}$V0j>KLzpjo z@WDRkvEz8^DUdK^>}QP_-5kRn>AYbsHy{QUrV2pw+d=%D72Ue^M#W#G0DMM{5bWhJ zzNV)%l}<0qy~;e!I#t26qLgDAaflrp$0Ope6p-O4s~T4mNno0}E|yElq^N8lQ^+D? z$DXR#G-U>g(La!Jeb9sQGoD|Q-N`_QOIlst`2?biQW7(E-HhWpyoD`rv=sL|CoLs@ zSsZEER}l_%4tN*%PCTc)WR#v5x=BW3XkhBU?X1!O73|X^Jlu-!NOpn2 zT`W=`W0!%+cK;>OktH)Hn<-YQ9H`1RsjS`vIOW7#6Um~^K8V^1uD#&cBZ%gG2 zi;B34(!4a{^bj2B``wp3)||bCRQL=f8l<#FX zKo@R!1K;@llznfxJ#Qd@m9lV-N7_KlS4@F7sRIzjopR3hF=A{a`Hf}_28n<}mvG5Nn9=PDo{^eIC_#At z3Ab+oPYau$GF;g7K&>T02DF#P=`){d?nbZI!1HGmi`_Yg;V7;3;DeOjx4@#v7smF! z(+$+84)TeN^i*%@`4#$tR^>#o+3H_^5`+XIIH#X$eNf7ahaO%-%&PRs-Fl`zGV+#w z25r6uWS4>z9>Rk^F?EQ|vCS8wh*czB1IlCop4h7&2RI6EAiy8UZF*8OUBd8!f%$}P zM31fGT`UE5g3ipJM&~!VI|oZu6RUULpZXy+0RPqT3k9U=jXK%D_^>|F%~W^n7w4O@vwr zBp!+_vAnKQBP|_((Z$IYRsWzKWAbXOXF~05%mqKlb!HE4SS;aEq}=ekH->dAxYZBN zmX1bnUK%MqNJbML8d>tN)`cpm4`dbt))l^?fuFEK_jBe6$q~=LXw^|gevK9y1Jm$I zE21OjqB{EM<8>-{$TZZz4!cegtgKk$4%K=59M(Q0E^?A-2&Ic zCx^MYb-vD?P->^;Iet1awRZNn2i@86^~eT}W}>IG4KyEgLD4_kNLuv~-DG>tyqbN)Hwl!2z9V(cXHSWSn=$Are-pHVw;rb+EmCCsLr>%a3r@E;a-;#a(d+^YB@kn)X_wsH67R z3i}j)?3Yu>m;v()qM-X18&x;s$ZyAiv$wxW(6}WI5FiA<&_6PPRB!r;kpjlNHxj&H zX{Do14R*7!`c=x@nAFnkS+X5sAyi_oB%4$!tk6swbkf@&*KGdzx_O6VdYHqXBfN`~ za*--{GT%^Z$1k~O@Y(?-Qk?TZOgD|VMW8@UZ)8N+I zM=csN9AnOBOk!CkWur4DPXDO@R)9Jql?&f^;}M+&5RZJgKpNESwV>Jg5~o` zV2FGmxU^lw*zV)X$PvVM<%{z{-!n_WD!bdSCYOhyW$+#^efx0G_XE=3c>cubir4{O z?#b)=Df659DUFNP=`KFtL3qkRc=EKj{6~pYHaUd2ix^l4I`HLQ3VT+ial6-a_`}`= zM5f;_ur7rS2=e=O?|mJQOph7~g8WmERo~~YLA6nGXBox1MpxOi))pOJ$c#5X5k@A& zKHx$r&pedy&#q(TmqYh^0|@-t#1!|RKQ>VRQ7s{*JZ7rSoW<0&CYt4w^$Pg*dh%)y zpHhdc1kxgX7vK$>K}>0F;^Qu9`u3TR=n_T!U_D|E41AkB(pIgVct1)OsD@K^Wn%1p zgp?rZWgJi<{q^(F_C})Vhtk3hU9{8d{_;z{yG$1ubV;}ivkO1|o9dU6ulLkZx(=u- z4SnnxQt-?-XP{O4{au&?cXyPGgM4?ak2-|;_bqsIPwYkOZIgPi!(hYOgbx{-axgQQ zQk;lFSX2=1J}@UVfV#1Rnxa{HAB(p$`GG#Xa*Ft23xiDG(EveaDNFR|G>rp-ip$!| zu^x{OKHag{*Y^w+&>xFpBJY7rqPZQEA~EJOa)>mIn;r`GovzFfmYCv(uLYu52O-G` z8iD|=IDh~tm6;O#r%;EO0a@r;Xn8H+GZiiI=NG{)_pRHwiFG;u?8@-OlIhOMs}#u_ zxRl`OkF6-KNR4Nfe^EQx<4YAHcqkpXpdgDhUvrOSA33QH+tGso6~Av;gv&bZX;P2N zZ{i^plXg_d@rC?_*#X-npie6S8T(-97w15}3!-X321c;@I@%Q1q%}yk(@tmNC^~Q{ zNuD~E9$d$#t{<-= z`nEsaW?MO3c)|#BYEIG{G(0W-3|1dh=cyjKk{orS7YT7pQI#SmJQ&{5>B{b$WYqb< zr}N=9mv~c{%OeOGA>eg?20xx`JCubOC8jlG6&cy=+wVyl=IG6A?uF5`5l0%$Ivp(Y zROs(pc|0us{f1|N2GYy1a}NDYXTXAeDv!WlEvV`)Iqtl*XV&F;;Wtd$=V*1?q-(Q- zHvaG0@BO%A-?41xdWAxcZK12hkS>if>kN}jorHW3vjKSEd`fBL*-$xiS1GWsQRT$~QV8^s4mk8Vke1Sh1t zTinY^wroHT3wcdd)c{Fsx<)tcd9;}(Rqxc7kFLP9Qd~XvlvOwakL(RqHcF6eI(JgK zSMV!py6v=Pa!Pjmxz@mEn(q`J-)maqgL>w12|eO+yELVq8UA1sXXH@T;g@QZ zU$^?^-tSv<$&+iXgP1j$@8?CKDup&3Qx!KE(}!-<=;G?lV;OtqjU+n2LP{_~iO)Lx zBI!8GsvLXbX26MBO)ne`*Viu=T_-(M$=r)hD}`5-q|N)L5sh2_Ef7e|%D7t$R05Z6 z>~uH>*QP7*ag;mc9!wpToZIk&e_<#YB58iZ&&zAtOqrtS(YiQ9+uf`b0I?<2PcykR zJM{A9&zO_$rno>$u};HR!KrFL%4z%ddt@79l`(X%vqU>N@p< zS)JaoHd}N^b`n+F#pR`B0X7~Ij!+PIlUS*lhPG%VO_^zW_bY2#bN{O*=xMr8R)aW zNoLIwBVRnz64P=SaAzq^GknH#_p7(I$2|JW2AJw*I~phm?bm8**f-5U3SROq3=7eC zQn6=r2V3LN>B+=1ceaS9*CMju-7D6t?}cLp&opJr48+q~J93I!oq`rg>Ckh12X>7< zsZ)R`dfszz^ToKvXT3c*>j_&9wfJ3bNaS$B_Iw@Cc>nK1?mVy;rHN~_<_JHDWW&mX zB;;7NS?b~`G+l^g#uRIWp|kUr4=$}dU^MGxySD#CPtjTwX1UgA`R#<4GP6vR z8xY=T6e5N92c7N-DfO%36+ik8^%2!&`kaw2zi%CEX#5xxm0@yjWz9h*eb(O(1xt)Y zqBRyJ@ccSm#kd~nV({He^fX6Z4zUD|Vm+8=eD>*18zTs*SskqC#QFsxgGrMNOo z7==zqsTpZ%oiFa}ZlY+;UsH>jEc`1n-gaHT=GZdZ@u9<`cd|fr#6qT8g9?8}qZ~fR ze!GH4t{7!Z6;C^KM|NlCbME@ek0OVOlHa!y1b^R}b^0O7n!VqZywcpD}hTS44R0C>C*4 zn&48~fhMDSHJ|b#aR5!{_)ZZ013D>09 z?tj26?qJDpmEox&kE;m{^Bwwyb7&RXG!1P>3Sl z%X}mC9bir?RIo?WPWzu81y#2PSt3OnTQ%(Pn?=rfJ0Vl5I!go1twG=FGRYtBSXO6s z@br{Ma3Au7Df{ckzjv?ffh(u;l8JI>9s^5SM%`j9rPJ@Ege5kjp9AUd-t{%|)*vND zHnS~=K-C4l)VwNs>!xw)1n1-5{_(3xatppl2auW*|3@2-9wQ)zaQfxs;95)x)IJAR zRlz^)<;fw>DVSD%4q6j^H(%&&8^yL|3O|+hE3jh|O53-5O_Oh8Fe>g>yA!Bux_;O)(d{Bns=10ZcS!%mh*tqU)W3qGV>e{rilrM= ze6*xjnp&m#KH4w1+jj74X%j)XH}K}`;X|o-f`)F!X)x8PV&IwqTRa`DWpJ4(T=kgg z)OmBwS>PspE4Dj_&gH%G#JsLlqvn5;H_@8%qvwmFz9h?7+~CW+HPfT;)~h1bKEVbc z#nSB@2scK;20Iz5ZJ4U@>(jHFPb`=Xd5mQmWwNy44W`B!EDFMk2I^58v!1>FE7`}N z5H6vg$F8af4=Il$}m}vj&Ouq-kNz_o+pLu5~bT zl#qSKbV%-Qzf5_oqx6jl#_MlDUmVmx+v9%E!ko8x@Tu!d#motu2J4-^&*ztOLr$H$ z{x@L3@#H^0vB-x?WerOky1>6xxtPn%A2R*ipE{OQlBnnLB*AwC_P-Z@+4xK}SM@+e_=Ww!d$AX!lPI&^BmT5BMnA#S4<1-UrXJ zzEENd?(xA-MeZlp!rUI8O}}FiZ0Sz#m|o|4@0G4x)cR;n-7&r3!0IeNvK>=?)=FYQ0q#>@|tSV@8iS)TeQPBOMFMhjEWaluLqrO{@h_3ugg=iRI zzW19j6E3=X90oRY$rd_c3r*bApMTr*<43`1scO?HLxeT8?!%x?rd!>^+@Af7n6idp zO9_J(lu!>U zNfLG?H+M~P;`h6F-IW8$NG z-W;KrvNZ@*fFy%!72HAndp4GdDCul>qc6g~Cs0a0NYXdOw(d!}MX=D)XjGNfOI`Jf z9l_EuD-#Iv=C~-?{_Hj9n*N7pU+wSaqzGB&)DBQ6Ho9P4W}Pwzjd^qo#tR@Jy{R`KyaJ$N`he! zyGj@B`x?N_#pz{}fBn;;oE1JfFuFJMvru=bG58CZDNa9zu50BZ-Me&r+zhW5yWpw? z%+7kd$5C#zM&3s1y3nrFVhBOOkd>eP+l7tdB}oJXUS(dW-JcHf3DtZn_JYmnM;=r4 zS-xX;vCz0|2k^R7==||02*&M|GxpkSP(vc+5r;UftS0s>|GwpBc$wUIJgEbT^ynvF zGq7H)bWzett!s}FJ~Ic@Le>(K%q)YHpzXMf=G8iwSD`4>luPucBrScAu~>tNpY!TXcKs9nR(51rnsDf7 zkH;fZ_fI!kNhWimC-2#XeF`knJ5#RM(|}PCQQ7lT9j&zY@b#iPnn_v1#yzjex8BGe ztC?k*0&twa3t`xfrO4wZ)Z90y_V7SeZ) z0}iM7s}J#K)C>Res?R{1m@>-Xm9*%9#e>gvud}}|@!qaBXgSz0_U~Bnaw`f?byI%2 zlS~-e7s zj}Hdz>%2i-FK3#tR>Gn%t4wsEZGxmbn%9oWVbN9&=Ch+6JSq>d`+(rxWPB*QV^$aX zOI!IEXXei0!~ERHC+Li0d^gaCA=om6uPW$kJ6Xxd3C;6 z;Y}N-2Re72W>uf4N*zsf{Lk99p>%F3R5{izn{RsaL;MhVaEQ9Ec*8^q(F@NNi!IsT zV*Q$*@3ReVnmN@#D$l5e%iEH%Pr`(=8FoQPb-e(K)r5W3O+hG!MOAecnA^aUEGy(S z_O_uw(utz=Yuo(LTPXN_%$=->uJj%W(cUV;eDVD=+sNiw;gdeVV$d36)hc<)ct4mi zPuw9kx7JBV?(V!3c5lADzXDPShBjVubYT0Z&UKS-bjpr0Ox@FNr#LzLlV+9cpJv*o zoN%e~0UKQ8OfDqM~||OHNuTH?mI^z}0z%l-V>r030+IZesi7zU3{&c)~7JcLjYRs3VhY{w^e;8&Nt zQ&R`*F?r1)N4oKag9OHE;Na# z#m+#)!efrZJS>Nz8|Vo9tTpQ$7k|Jsx_1S@bi2H5d+3!TnWdA)DYsbz}re~x=i`ks@A?Wrf-s=*Aq z{kjl;6;Na|83IjzYu`6N^o&VOhNs&PDUl6toiGFg?tIRAGbkVSv2aNHJB}2UvJ$IL z%P2RF-_)yiayu@@?aC4@E==Q>FdB6tf1PD;Rx&;)e)v_@7fxV*akql07_oWmH_@hGk{NK`-rex(EF8NmB>7>*S#;HQjp0c!Y9r^E=trDwnPJT3ih7 zkt0{WEk@Wql(W4(#lvAR{AVUpQb1p0o|S91{eAmFt7vKT`yuTtm1DcU503H~H=hz~ zf8QeNSaElxVx})Z)o)kP)81d}Vi<9=-E3uIye`ZS9V~^sCmkhtaA9 zacF?!Q(KMi_CZz?|e3ds1iOzXPDLyR^VgG##;4$Dm zMQQ48CEPCz;-qI&5+$umPvULU(^3AbbqqVEN6}K|Cr{{?^Hl!KnycPX18{W`bo>yJ z4!&$Z<`axf#)-P5XJ5NbQAwXIZ9Vq14x%9t6VUk>2-bc7C_o_)^JYHLdS6`z^Q0Is zVHo|R-E=vl&!wWvg&AdguyO&ev%*k%iB4al)!U#b!A^qo4-l)BzDTs3n&K>)pc`p0A8Flbt2Z1hbP2mFxd2UrAtr@q+2$#CQcm#1I*C8+mX)`vE^W)`<1zzs>Iv4g%>E?p~+8wLR z;YboGj`h%~^{<~_jkBse*bjNp4Eudc%c%)?Rmf=jK2moFa_{`eq|LKoL92SI!CcdI zol-fI-eY{W4}sKIug%b);IF5LZwSpZX>f^`L@H_yOe8gK4V*z>y)AY+QlXMVDs&Gm zB^9I{__{@o19aP^ZtXQf&ytwgy>v1!HY4Baoj`_0K1ZmSM)PA?*tny&y8H5y0@8uDX9&V3N>rJ^R7)A zYD_PxwbJl|sc-?kSi>;tcTyfbOyPr5rtN~B`xZfYCI%v8i0wa}zB7BkY?%*E?WwrE_8B1G(w9c7B# z-wQtaC0hv>i3->#?CP5$Z>^a6rUG%b@jSXq zTJEc6N|$ujETD@Ve12v(O#ph?;r{j2_Apk8zw<_77@&jCRMto{%&i4MnfjISx~fNZQQ)Gh zC3Qwsen^V7wk>fHp^W%_tAPL1#p=qFi!M@0(!d`-_tbw^uL3&RP)#j#WQ~iTFH}ZT z%l;x8Vw+$CUlAv2<9?ET=1rvu$M{vy-%C5pg?LQPk#m00ACF>W(#M+;t59j>nB=p_ zx4qcD0ZV_X*p(7`W=u3%L27v+al0+x3X>`Z)&cy!wW@Tw;Nbm%6njs}Ysm0AHNsh= z(?Z@C+cFDjqp;U1o4kdipA!K^*&!x4<&Y=;v}{ApFzN?<~Z%#qdW(1YLax8y*G zE`>V^E)~J=t@-P4Yoa>|Yp6QK-?v)JX69a{nw8>sA92clG4oom+O~|`*j48D=bX13k)lNTGm-+r(s)a_pNKLui{e3HW678p;bFI07 zQ~sk@miYVDdZCCDjDPxBbGyWY;n_w@s&zEvJO4nY)CbeA6gh?C(rh{g{TFw9prMJx zrC%Pf%BpyG&}3mo;*NI$>PYG+GXj73L?Xr4o<-|vb=F5F+;A1UJG^>JLrdUs%vzp^ zK#K6c!-Zq}$n^92m1So&*we#zV6N-J42pd;KjZL?P0G!Hvf;Hpz{v`Gne#I3MSk%; zYB6a{nz@%bcVu8VYvEv73^Z|vw&DD~C1$v*E>yKU?Pr|vf35C9bZ4<)s!8$W&Ix_N z0en070Ccob!?ua{d1#*zH*o{Oip%vnT#?;wHXr^wbOOEW!*%9Z25cK+xiC!6tJ%go_~6{a zztsJghD4HLN~8L}$Z|&7AF7^((-0yK1wjsr4+ZVY>O?nvj#gpPEsc%4 zkgmS2TZG(>%{Ut02{?QzbT1EHQ;=>@BuBmhsXQWt4Mqq5VJ1|-(=KwK-$36alM0Y2& z%y$U`L=lgJaQZ;!2sxG*$PFW|jkXSz4wsTC+INNmKIUq=ieE^IY~HqKxO&vx!6Gi3 zVY;z!c>3w}PK8iNcz8I0=~XLU{~}ps@a@=A_M(t#L$A5jQFp_J2a*h#FL?LI#_6O9W5PLKHQp}*h!%+!iTJ;otA-NwO~zAZcrw1z zYH&c}TfLjCtdY_}J6{9ZXqZ~7uh9%{9lUX!;;XLnD@QVn2M?J=cRf2TW~y78-LlT0 z5({}(?uT7oa>xmxtWx#YXn=K4zeuPLh>{|S^^I(THyfqxia-QaZPgI2Bj+EhBEzTh z;vYq@>EtkV(W+g-%N95FFkZFBWaH%lJLXZ{`Zo)sN2<7q8-0PGQx1v!QsY3%zs}wk zRZ+eOI6B{C_^&DMUmg~9#$V5s*>D5ci(YDBi(a7~+3wAddCdS2-En7U)cyKsHiMa^ z1|f$NwnAEd5ilo4wIJbbMs&uRhmL|zf*}TMu3j<5Qus>UY%llhaQ74rCmgveCu!r* zt8pvM@F*#zif{X+=7XbHi}Eh)&hcE(qiHdVrPei7dyv7T1a;!nO}V##cOMd-axOuT z9d1!!_5j|VfcS2H+jsh5M^4Z9-}#q0A7@o{mW=r9EvVBGk34Z?s{)82#^L?P7Z!-nKZuy!^8rdFSg!4z}#+ z%bs&oQ8GPfKIyQqC0zfI9&y!eKG^$t!GWi$jG~R+O##fFf3miPm$Byhk21}($Wm=} zUR+cw&*Y75;io0Ug8jaA*&hMNG-Ke$L+sP3esb_CHcV23iQ>z1u;q+I@`~AdbGxLx zv|!vXPCBF=zW$OyjJJpQDStWSv3h?A^i&}3EkRp3gaC|7Wx*;N2XA}2dBYomL%3~A zkh59o^j-g+*;X|Yo$3iI^NtQ<&kSXsY01*x*`)UgRWH+&oY0nT172dxS#?1dsj;^4 zi0Q}4!Ut$6d8jN>w zHD$iaVE0=aY9jr_y!`YQy|3!(6u1uChdk*Mx`=Zih3FOyehnh!wU17`!qIxlV>hXD_T*-Y0wSW+k?N6g*EA(_qQj&lJ}Dzuz2|ut|Df!HD;-0;M)DlO ziKUOEk-QT_i*yf4vF)G+MZE%5aFLYO`1@86AE5PmJOre^Rd;0lIqdAa3JCFLkdOrhk^2e)eiJYKzqrU8$ zYg$Y9c|~?CZsuGq7H4TnYOLBg1jU$gRBaZinUa1!yDFA@_U&8rF>x9sxuN_~uXuKG zPqOuj{XMoCWikEHb2?GH(Mcuev}unv880kGbyMCM+(|E~MoQXuF2u@^av^xhpr+yZ zRgmOkWsKa=x6b_1NJ#m7=#w`zxcz^C>*ICe<^pXjV%A5FJ56UY*b!KMoQ0F z`Ojxh*;c*DSbTffsb5eIk_8|A<9i9x@bw+zeS6QQG|wAzD!Js;yj`ds;58tPSgAXh%%;oP5ahbqzIS$uS`!xX_8%E_i4bfz1%FHWq2nuxO}_5BG{l^9p7Ege z0UO2GWt}44wn0-6%1bD*#c}3n!_-jF{t&Y!Xv?E>glHh>W^R)*|nyN-K)*(&DGp5g`bpZ`_3YN#f+7VJNhz?kWxqF2NBXH5|^x2KsFD*ghM@^&LxE!9$`C7@MY!=$+agE8bw$2VVM*fSRP`1KwZdXH4%uI{Bcj)4NP?EXc%9ZCegTx9gcRy^(!9 zoVo1f-khXOpr<5R#%|rnNfU|Yrzic76*RuHEB{w32631|%>C|@u_F_QXj}}T&G-nz zx7ytb{SVxDJzyGII@_p5Y(S%9#)JVAqxjcEce(vVW}u{e+awDgQ{jGmV$kSmsd?YL z`_q*O)qR1+AJ<|{gnHghCs6-Tj!zXEf{*WN<%a*-+1;^6;UC7@@%byrg|66h;in$h zHP>ERqlPT7J($@Y2llDCc5JOz3vq(Pc^ZwtOWa~6i-5byNV@RE7SE@!#pvX1!YP~X z{sPcUU+^E#jvir;*f#`uILV6#`rta6{kuz+ouJ^?RV#aV=zt1zS^npj@Tz#j-GgRc*U- z5PZqFUR_b^+Cm{`}3n4A3T&3v)kP|Afpa!(c>Fy7ji+W?orq4_EB#hWWWOD5k6 zbNq!;gyNnPlF*;zyr&SlBSa!oxL4c70*43i@X?^r$ z|0SH^yveQloWj%39d=&S(>XS4yf>y(v(IhA4FNkoIm#3~WS*Q%L5FylAH1Gmk&tMv zSi0FZa#>=YD%$#eZWVm7e*SUUPIUT@6i;IdxJ?Qq&CUOwr*gtX87cuu&?Fw)%hcho zv2Midzan=l<}ZxTstc-8$4m#kXzZ=dHo50cC0CmMu*BZp7O^!`Z+G(#n^T#Kor%de zDb-g!2`XKGU+Em(`vCuA*A{EZ-@d}zVpr&KkA1U$m$Kg9qaOq{eC0sA%WU12jxdKw zI00&Y}cr1lxOe$4<76yW~y%$Y?kz zWg+n$J@wA;^E+2glm$mK1=KTmn2+EKEjO{IrK70$-k&$~xDor1QyF*eqY`$~`Vm#g z?><{!Z2mixO8n>D1HMnjm!vN@>c)=ES$s7LW(VDQU4O%>QwtGl&^dnt1`8RB)fu$f zG8KdOGh=8S0l{H@uW?r7!~&vN_mY~p_`c!_OH|dIXx-(%ucpZNiU;!VOHbyl>&kR= z7PG%M9Z1SbWCU}ki5F}A&g zcE@YAVJ~8JIr-vlTPtf0kFt>Z5&is;CAQ3T$wc@5U%iu21d(ylfiH&tq`C-IA zJNL?EZsj5|KQcchLa68PbJQX5VE^sZiGS`i3VkwvRqzv^+%9ZAa^=D{3SfPyZ_(B?-#Z1JvwXp;zSI%&5*S|N{ z{7?hDt>)Jh$BpayWssh*c;~xL&F}sIJZ&bVXgLJWF#bMlfRI{*zsB$C0PjnZFcBZI^V>z*%%_qcWW0U($QJX?Nd5nCxnI&&L(d{795irujd5Uwc;aaFS&`<;3+r z%BvjEN{9C9h&EB(I|8lPP`!wgZfJr!nK5A)W(-i}o}j0SG42G5HoQNPJz3YK9Pkm0 zT&+fJv3?M^#@6#$KqaN)$5~;=q+Z%Eqd511LRv3o0)L^z?6r^)6De@O?}6a$dZHS* zDG8r*R|h+~NR=Cx@o^DiN*_{`w6ru?$Md8n+YztunICjasFjlrjyNT$O2_F5o~?*- zvd>s9ik#$egmSIbpj9HK8s*17Vc%phkW(WQiOPTn#Q}0jSBKSE6oBHjzFND!z#LG$ zMS27wX~`^apWH8Uo8ecgK-rIR`7E-l&pHnIdFoMc9mX zNtX;i*d7yBouY`){`{1#1sZPAvSOt=^5XZPZNqrC_dZu0m4roKpvI^g%v7dCl@@6b zahhpKEI3!bqc_CsHxQ*;nnA{aK+E#YFx#MKD)vg8kIqGpa1uDGdw%+_f`H^@L{HvCbmSIs$?fRn3#y}EfO8einb!&zziV%eq&s^odFh(dKCy|m2 zh14ew&8j9GtsW%!SrU-D0J0^}ZB#1>fg<S5guVvNg{T{`tW9D5nC1$w{1Sq0#OweEpFMWN~f>2#lK`UXIHUR0-4cB@WY@ zdzf3@YFl&t=Ap352Rqe3A4u%+IG#F4!A)C{6n}6D?dZXovr$NPO?dLj}X6u|2 za@)RfP-df=tlu$_yGSWn?Ndn%4Qp-g7pE1dZ)Vz;d7&#jry)=LRYssP7Y2qdI~u0{EF9Set5RZj)|OZ$3?wpAPt&;0Zj zk57qnh~p7*se*NN##2;a;MKP$%@4E$((~`0E)UX~@I0-^xq0tf_OSB2pUschsyP=?NL}o zEO23p5&d6NGTwA9)@=YGl07s8j9U(tE`iQxIq2yWzrlw0(Hf&s!u^Vf_f62vj=lQm zPn^ExmEY|T0xA%N^~=bh3+F&5^{qmE_MLA7lzAPox{kF+=p2Aqg>V}x?^h-OzQ>~u z8(Hu zT%A^|+%bkZneR(CsXR}q-Rv4fawDRJGSlmpEw~<$VZN7Y{a!+g%e>|Q_qn-mLLD3O?vwj+VRzY- zK3d`NXy9m1SSDZZw%IdjLQ!Qk9oMu&(QnP=#cq|yMa@~dM5ro@SOQ$u4<#7xqk8(P zv0hs$sHUGz=1fPVp{Ef16DWBZgIiuedk)dpc58O1P>dpKYm~K17jY~%wrTC9zlCwt zOev-7aq;as@>wwv>kT0%PI2UiMfv0;A%bm@{o}24Ir4UQgO( zg&xX1*}rq0%}(v{yD5f|1#EQH&AZ^eg^bNIT(XJ#BvB~anHKbYolLS&mVo7Q^6vi zQP|x>MUPRWuus)pJlMMX-S?PxU~m$$?9#8Os^H+@l;2z*YraFEQIOZuOaSvGi4fJo zT)1~?tVOc28r^Tj@%koYI7)CLS2ZGRIdwyyx2i3BL9JvEF@aZMlBaFOYm^)ladnapn6EU+8yC%6 z24mz6EmN3L)uiuY-Y^T86randWWL@IXF)34AG%#>kJ+OtnBG5>j$=7sU~^anYPK?0 zVCZ#2v+BN=!{aT@CFixw$Q>K~XmbGb5we0Xq0e`d6&~A#4GP{n(fIUQPbFI2#i?cJ zqSD|n@1O{715Q`12KUa;vl3LUafv-xXPI>++vDd_Lp5x{md{EQl7L~}`-#)5JvRE4%hx|dB25vaA**+%o2av@j=E=C0!fgas0(mMd4AOEx%e)XA zpgE5T*T;IB&U4fmYU+Ger^4eqZ?htmAn!(Ykk3*2MfWNO6T(7MAHstYedNB<`2Y^p z$TuDx+vw^CF~tAmJs6m^hqAd6@Z1)m?*yW?QC{VN{Gio z?HN4zUoLj`u(?5bSDZ;#~&a=}LA-}u883-q{ZUCycF7M(^d^k|pi8r1b# zb98#oQ;}&qSI77s>$!0a1M-F1X9VyGJ7TR~_N`pCbkyPM5R3e#0q!-Aaq&_T*~lsv z+Hrf?bJfh6RO}Bqp>?md-1t=fd@S?t9GOi@FweiZ{DQISzYpy*ySZ}13=#2*5`<;x zgUET)_pxM=tO4hmye%4m0vx9KpE|ofcU?Ze_O`KoJ%RV(%-;!Z^uj@+mkmN#;V5Pm zSM}4K6OXzY5)bGD&PsN|5}ntST+JGC^uf}~GoIJ~ydwW1MuIX_i|G0{ymT_M;cZ6G zx~`wYII-mQ!K~&Mu3+CAr&q9B*4`g`R~qtTV`Is8TzZ)wC@llGmd(Dk^2Ru?998bW zk`g(-&@&!9w9!t{QT0bmzwvXeX$KZ5dD3tRGuiQN)$-viDl;~6mo$O}zwc+**V4j- zU6p%r#qEMhE`h95cI9MZQF`n0+k7vT`ObTyF95#JHVa~vIawi_y2>f(R_Sa}!kU$4 z01}^**nYLlQA<={jhsXk{f1!K39eS7t8-ifnRM;$r^}7}z%pPE)U6dNH^2(E2Cvt? zeY9)Z>e93=bfxw@;as&+Ip5DgFO9PKX<-#H63-A>i#L&-;ayziWdi>%+MQMhq{449 zs`vOMSjD#jDts~f2f$ZNW^@7&-OcgxnD#;=nt% z`U~6oRqP`fLh@%?C2FF=!^da65P0Vew$~-tb>Cql>72t=jGoYP;fvR%06mOVhN zIl2Pwb(KzYKQc6?uZn~ooxoBPBRx6uMJbUIsuWWKBdxy5y^` zru@!QfaC4Y_$V>uEe2Jj7_G7WhPT9Do*K;>$f*P4-JWuH(o{14*mmtH%EDVuw#9Mq zG%{!Enl@96rbdM2OE(-Z^8GK=E-<4iNgZU~N>vC(4K*EBjVRbq=DIbQkoUW+P`fmi zt*`xI?)6kqaLPCn9LNPwm6+|v4d;h3KUvWI*r(&dB_-`Zbw4ZEGOiLhh|* zoy)34eMm6+aIlBEK+oVFqFmZx`@8LN(HayQzlKO1jKEwFueuzR2#+xYPO>>A1#&{7 z-AiRLbkya^-NP$4^T;1-HOvl~C<-Uysn?sABf!E@pL^H@7Z}29Iegq_jyzCqgL?iX z#l`1fziL~-C7|V?s9(;M$jfdQDWAwDVROQnzZbu|17d=trFO)yDVF(LLhBe zVuiXvRmu6(5&o}irjwq&BoZ?_JGx<=W>g3z(mNEU5AvestosIgC~NlXmj?^~zFcYC zMMf<8-h2_;c2)J6b`JCOj_S+VJAD)!OGrtd&z1g0-%-b(t2&$6ucWqGVt3>q{5Iy- zL>@LSe9=MO;Lb0HFdg@@>cFC#1%^XZ`-5y`5s#n|W6-5v*_9S)=LGdIAl=f~?}BNe zs_e(FAYXKQsr(#rfTlUGi@%b&!v$yiIe!Kkvt+GD9&|)~KyVExZ9ghwFBMy-&f0I7 zR9MQ(SbfbU?cE{&(~~`J@VMdK-glnqI#=Fb7bTxJfxSYVg^ADM+ls0(dg|oH7~UcB z&>NbdQH5VHgmkBeOZl;&Z4G?`VV*A2%s=p#M?)FDu{2x8=?t{ zneMk1D&y&9%~tKS zKN*ep4NI^G3ddkxn#)n|fU?@rY_)D~`Hqi1cHHdvaOJA0^su5USaFz|I^jM~_FT7e zD@D21771~_Iv4Fm<4%?fJ!ZyZA)^t`O}r+43j8X=B@Be#E#9wd#Ts1Z#?~f|gMYC7 zVgR!XX5*=i_wlhz-h^ZXHS%TT3xfNN*|n{Dwwcyv=A+u|OuP!%PWbl`!MxI62esc$ zFm?-fWSDE3aII9(-a*c0jM_RCY^TcXPL>TkDwgCD=qV4J!la-JoJbGFhhSe z`1@-N8!|A~f%Us`RxkSRkfW99K#%MZ>Hw_%FQR>eIpCCjspXC2CxD_FEdt9FCs)Rz zg}CWAACsx_!?KESO;I<$TRgb!g2c^>$dEi4f((V@tb-Z~59Cg!J)X|0BErSlidD!=dY~k}worgaAFVt?io}Oc z^rXA}HBz;2OhPE=@uQ|Hx)TdUpMoZ+@W2_HrK8pR;!+?xdW$H&OI( z@eQaM64=wxntPTXB-cZuC|l1!h)1Eu*jwjJ9-EPJqOu0fg_dRCqKFIMQgOxk^l{V@ z;Ss`$#03^vR#fs-nlY0@%?E$dh<4qu^5eI$3Yy)@3!R$&+h#Q0qYoH6#;;u%m$2}l zpW-&+79e;-wJY+;MK#E}K{U?|B_!bSHs%2?n#zT09qJ z0CFNj64{}>%aJo5kGkMt&5PAAvFg<^2inOM5e-Z4QWTdX3!wD?mnLh|F&f^P zFGv3HMg5`V+!fA)qH0-iu+v1Xf|!=$DZH`L839F@1Z5&%ZIjza9$9O`ho8$y!ZF+D zayYSGr2KO>?BRzwm6!vtD zwJM<(UJXJ^E1f-gb&;0(7wo`g;tui;!MGanS}lqMB?YMkGndu1x9!jFSBJoSeNFE0 zQgS{Us4BUJ=bgrD$;w=Lf_ovSCN4^2I^P;PuxQx3XsIbQimgTC^x$8HtAAP88e~PL zFr=Duq@u#)o(3lI^5NQ|uUyW7InzjRt@ZLh1@S(C)R1Sg&(|@aR=VcscFzofCsV-4 z!xl6*8LbNpZzfmF-_#rgaBfH#|3so)m@eJS*oe#4V?G@gd1GsdDivHp2{80pkC9?J zLeE?K8xI_#WQ}peRj2@F+&2eWO`XwnP@LAFR7u;8!QXIPJtq3 z$ab#HRbKNrm_>U|OJ$6j_=!?Ht!g5icu#QsigKZxIRuCJPsYHmdY2+=Ty|}MoFeB8 z(E5m=BWWn&z3z!=bDlV9yTFv>EMfpeqqXz{+hC~8Y$b)C@9aXk~?LUKCL3whVOWi&!3w6KbxV6C#^?6y{}6HN$X zU9^9*&TW!&Dy{6$Y2z#{5MTMeSzrD^cJYv*3E<;)nTm>ca4YhCX`zSvrd(Z)OT;E4Qn`P&=RVVIx*#{_fB=pob4gbcTlu$7=mZa$XJn zT(^T3Vb#duNumkQ`Pfqi>aHND&JkMJ3ihH9yKeojyI2@pQC;b+I1ZnuHv_fM+?{3lrBCg-J??3Se;G;2P)4H^{| zJT&3j9eu>zEnc-qc@QV-5eOtiO0NlRvS2huf7YX+kha>mn^5Oj`*Zp%4p`y3wC&4S zc~mx!46yF!I*eEk_r4@c5eSFL#9tsV%{HcV3VFD|W>*JA^b( zeV4$E<(K2AAST}zt4TjUuz_DidC74`N z${1IcpkNYkWw&~`UA90$y;WEkYj$#Z(7}@wGZGTYt$cIcdh~`!&TRm*P!`(?Ie%RJ zzUAK@0ZqQynTN1Spxu69S$H^Ea6Ld-7y(t0)u+7z7s#q7$;s{s*GVv{!{qQej$09{ z)d$lf2UH!CpHaDbqC`YUlHnTj;L=pS0+v!SBuz7bt6(DJP*7d{q_H*%h4S{Tj}KCG zfrk4eOx-#|3NF6=u15LRMGP$Gif)}QQ0pCu$h3sOqhvL%hhI%_^@^q*zH#_5=&XvT zF3O!gW<`_T%C6@|{cQwlfra}t5)CJh2RZOH^OG{{+@R`Z(!i2f#urdcaP z&OJky!o*wE$?ZpE4j~R0{E9}xybW6NAEvdb7rq%k`n$tXN~)6_NAH|I%Ea#|q#Ep- zi8x=##4*T~=L#rNb7ilh{236KoKLKk`Kicb{$lE>uzZ1twVRQz0L0AF8!{t<&{vQR zfbMC9Mr9iNMGa#&(1E1`ReBOS+V26z_H>T!1AN%$Tmq*=?9$h0hnZE;Fvb~q9mf4Ukknye{^`LSx_ed0H_bj0 zuOy@`WQ94scd}|P^w6<@Jli|P$*weKu?rdm@;jDo!0HsvhWD*92>NV4VaU)!3_Z`mz&-iT1C+Wll>cj-p#p54vbb0!q7mp)kza4Q&> z;p3)}IqYUgrz%Eh$Vf1YLvL^&3-yZXuJPbNlD!fyaLWRsvJ~eu0Ab)((P$(Akh(1 z5OVgG>6V5Xb<)|OzqZ7fLi+$WHQ3J5sw?7|_20+U)OxO8RHV;q6np)O`iUI8oqyFA z{bkC$M%if~l0^WrCL?;$8M5|f<^0>#{X;jm`6?5YE;n{wlFVSSdRu<*s82H{Xa|*V z<;tnLXjtNLlF$%RA=puIyU<0&f-y~;)@Gi9#xr+vdS^*}pJ~+$Bc?@wZ;Zm6X5F~s zt!f9qw!jH5gJak6E=Tcy`FYhn+ndO)%Y?`GQCXu&Q%O(|qdQ3CrHga2^Q9W=8yM|6 zk0_lKYX%5a{*5yE97ax{wfuCtf$A{#=(gKQ&l8@dp`9U54(ylO=!=#sV>Of%TX~jK znV5eWK&9SBb(zrkUpiRI8hXT*C~ZKKp^+D>K@=vy|FY4WsygaW^9dHfZ!OK9%-g7v zFc-K@KeczTni5biV+GL*A+rY$B+6^<+<>BO!zyHv*9=jf(WoD>yDNs2-lOhhwlinb zc_svz@k`Y0;R^D;!Hjlueeq>=#0kOO1fmm!lI!InuSnp`>EI%@H3YAo<()p_ml(>0 zF(#^P4vo9*5uzli6K9i`whYFKx3}ZhRAa zmcpZr`VzrQDCs-g;(XPoEHI@BC5pS<5ji!*HP}r!bADL4y}DX&8XzsZ(5$T;1>1+0 z6&ux51Uo;gOgr|}nUtRs*+bo)r7i2Eq!|fyw|nOjfjLStxC?x)SCf9c;o6S_Z_fE; zS#jD?oDq%iX^z63>0xf`q`J$`9z%}orBlYRtxQ73McY_4$gVyd6G9apqYZOks(Chi zCVB-u<2`L{{Xq$mdU^ODe4xfJ2@SosGq;AP_N-xnj45)jE{q=5H~bJu`4(;{MR%hj zNi;-f(RIchAqKr}NA+pWQ2aM&P~jXsJkLLG#=liVfcHguC2`Igf*y{Bs~G{0K~)Z6 zj#XD*axL8EcZV+&R=G|Hi!w1brnh(Ewkc`3U#gcM8{T;WubW!jiA7^>e29VxPt-$I zXnG-27a61SN!@K^==@me35Qs4GH1yF9nz#v)z)}d?tl#NN49|A<%kK?Fc;U;09JrT zS~uPri_j)7)G$G@5U-Z(fo~;-!zDd8Z4<|MbB>D=QgJ1ZXgS=az>Gat;i~|)RcZGl;l}k3hyb}3g#}%q^^Oc9BdX+V`Bc7K9 zvieR{T&Mig1;HVNq$BjzL> zlsHB0UdY|demRv%@e^(f*sD2(GRg}FB)l#$L`wR#9^JLMdw#sT7X@8xc4vt~@+MY` z?gTPB&$^ts@p(I=l6c<_DhJwr1Zl*ze%jn?1FFsn2=6AVXmsc9=I^hjn}bx&fFtb$ zcjmWit6?n}SctIsi2_a)FE>1Dml)!rL0I$!Pi9ekPHb6LFo@JTtxIf-^>EuX51rCA zOQK)mOj1t5Ivx$tk3@TDa2_gv0!%sSl|@$>i!Hs_Ta5uOb)H{iRTlJHU63pr9L23# zXu;-K=Lnj@b1ajwdz*+~2A5|G8;f#(Eru&nVAlHBbS-(=iE8)d{(>dyczkFlDP9#8DBl z0y9K>{k|9DgFuJk>wWlb=(oSl^zOG7r@z-r-1p2!mABER1sPmK|D|A!@qhDh=4r|H zXlpMSUu!#_S?`n~?PvZ^rvmK$_FYnhxuWpQ{jECrnIncFN1c{sQ}sL?u44_gdX-F_ zdeMI233A#I>7g0+`7Q^omc_6vRqmxsh3l$bdzX$i{!{+=*sW6zfBH%~4}?cz6mLf3 zS#xL5YoA#qX@_-3(7NOic|uW^TA2e#n6tXp2Fq(e3GQV|6DRg@hV5RObg5@np@etS zUN*X9T}cd6(jnCzg^;g;k0v}UQD%*0u1_>l15OLh>u|#P=qrYrJD_jhqkA(rx~@Iw zja&R>+hE_Vn#&$dFt1@>WItWV#ONAkm}c1@bFY@!PUNt z!GMHTitvEY_41Rc+3fFG_MnrtE+-bHs#SvsEUfpBfT&KaRxg2ESS^qXC2!75VAVvr zWRaUtncu%mr_PwwM1fENHrWSkTQAHdcaF z(?g@6j{_xi4VCo4^Tl|DyEjfUf6>0C#A*Y9K?wK+rvY>3B&=7?N<0idWlh<&_XPE* zZo`{sgU~78tX7*!KqN0wP>?h`ORiN}4bmoMgMGq`2J9VbBEHtkD;O}c=^ z?~|F9dP`9?>fL@<_Y&^`CJuEYQksp2$zJS=x0Q{RZ^`9+wdGIEn_oHbwZo#VUa4Wu zFsffa#*d)zwpF7o-clOCGKISnb5fr8Va^rdB3cT(!_|B4yLNMmQ6q|w8n0;-Ep}1z zj{K2aParwYKB-{2C<=O9G*m=d51sUBhRmH=*KVyPy05!@90ze|C^trG!}l5>o;a$K z`Wklh9qo*2$ZYl@q`N_Oj!;j0`@(}G1 z&`sn(34)|mFA8CioD1Z+j7|vc`+e8hNG6W%BudnEfQu3jr+*+aZ<4J);?CfC^X8Iz zC7p-c$p5U<<7Hi9wznNp+-Dnn_Te=k)&x=zquD@wHv!5za65 zYK*Groj(4qOqj^oBEQ4@hFH_>0s6dw(3kk}fGLC48JLbS&&w#_FVxgsAf0}Z)4yaK zp`c$6$pbl|aLrA}t@OQ+SDXr)-RWgU-0u7ct@Q5g-I(;6Y7FvrxR)8YDblWj?=qq> zamo_@gum>qzNbA;V(*raCs?QNc2B~TO@pS|S( zu_Y)Xoo&=l<#tH+ihMWUO%ezkSvNgAUqoRO1*x>J4|`n;s{ts;dv6)4 zlQ1eZJ=l&WB*06-ZWhb(I;+2QxkQeb_xcssfHy8(Qv3XH&iTC@HLfTRDvWfZHJAZe z=fWC~G#l$mx5hDq=~@37hZQAh&NMjRl<8Ko(qUv-gX1IHDb;Sud(4^tLS|`CQO~ZX zKiQwJvWz_unpxGbOx&dH_wSy}OjTuP$I;USl{72XhkwT}hIxAE_{0Ce2qXW=7{5*X zqgu81=SS-gMf-_W{8*z@8)Odf+;x{ZWXYXG57fNUO1FLhgS($liRa1gxl3v~O$t+c zj{;dt5MmhnjgB;Qp1L8ZJ`8%s`z!a#LQ4lwF<q098dI`dP1~%b7#jmMIKqE2i>|X5Q~Wo_kqTwqo~AUpoOXf!y9T)lBV~t-{GwYbmdqRdaF1R? zE%(%Y2?^CQlg0+`CR##`^gW&t~uA;0r&sl z4SmE84Jj?$ltBalf@VnFV?o9XcV?Ur6~5tgeW`(S=@xe-KV0GA*((X%jKY2Py?lAn zvEl-gNQIi2A^KnFtA%&u>7`a2C}1a|wci$+7>elf*QHHcaB$~*;0p!eBI0jbd~<29)}u}GLq}`Ihd2ixL>NG&wv~HH;k_V8 z-Rh1wj7Lg`)){xpxqHn4tst44*h9R5Tm>d15Sjw%m1t`1tapw&gW5%fUE3$S+~6Yc zQZ0&yJj-@?JFE^+=g@j{glF(dgNJui3zj|gKd02@I7UiH`HNJ!-m7T6t2q60{Nv8f zg*Vid54(htv7wfu+Yz-g10Qx6so8m%w@?=DhztS-FGwe%F45kw<(vX z`=nPeV-BicI|m7EJu=j6Syd(H-GCmzoDY*o1khBu>`5$n?- zhlUX&(7CNXz_I6(-#Grse^4TGVu|+i2Kz7goH-5AVq?0MC41ls;(USi)R0rXfI#-@;O#m zZLHnaIk&i;AAdGgn9rf`LU>bkXouQHd|JJsI$sMV9@kRfY zeja#QvAX>P*$i$FcQ)qn?QsZTwCGWp!U`F26Somk#?%Z`I}kqpvr=t)T$Lo!&Fhsn z3NxEe7)=&6GV!|ACMz$WvB10zqb(=CVH3GqB!jw#r*!T~w_fYejVg@i{;ob8?>sr^ zvKzN9>pPT%yEV)LFdV9tdqYleRTJPmvSf31OVdF4z&InQaGwoB-T@tATYm0;GU(w` zAL~csKLQolsxXMm#4+A0yo1Xtn&Kn0zaQ5{|@Jp&(eHfrmUYALi>E7Gpa$&_3thUGQ9Z)m`5Km1!6K9TB^wmKqO zzwGjXS0O^q}oV{Qt~>j?@0^?9IQDm?wXLsKwi;X@|C7=;v6QQ*2xl9 zs% ziGM0w92%*-w3&7o`XMTBeyh~M1w!p4{nLMpcWk|@an5CCw}k=81@;aLH7sis{t(E@ zYzG~EF|bAfH(S+x`a}NO(oy39vnGHtF(e}@2lp(UICob3oG74xj7Oc|Z2;A5u3>Cc z@p3JB9fV~$ab#uptddZM?@aKXLr33W*$n{|99rMQww$xvHa%JO#FqBX14 zeb@;Lm|>4eY|_DgFtVYGPSh`mlCx1h!iI1rTz${vZlm14E0JRg?}t5l2*CKFqO0eT zdKs5`PE*IX#mh7BjGhK3dMRF2sjw{3uzL19ka5&a9&k7#I@cvCCX`2+AMe4AY z)#uE<>@hU{E&QeUh|S!N3&UHsAs-TI?hiF2>sf!FM)l6_s2st}M*C?48n;+~RC`C% zV4VQL6Z}Zp>UJ^CI}owcW3N*K(ca^hX=ly>W9!ypW&X_Ucl)#QVIMi!u6F$}w9miT zldU|t?EhpKSEP^EBPTX$RsZ3LxnKWiqv2&GCYhn-D(70a!S2~RI-N8@_gu+JfUxiD z!;4ElPyt5acv?&IJ?}MEeH5WsJC>DqR0u^)Qbzr)jTCrK*3m?k$bzz#IMzm3+gM8L zKNz03Z!0r-you~yL#%}qZ<|_$&MRn^!{ASy7%@@l$XCIiZ>pMt^)Z)SHDY&Z2x*Rk z1uE&5mC%QN<0?7}KpFZLUnQu6&>{bJ4uL>y##R1FW`dKMrw(0;dz&*J|NfsoR~x9? zbzVi@>~{3gTl3y+(NV^giY(qUl2?!?Vj_Vz0PyN(NfXB&MycM7?iSe8qA4|PCJi74 zT)IOe4&Lf7CjuUtR+@Ax^z$+~p=t1+j2)8~`#5WIOE$-Y^lmlOs1{!3RV(>H1j*i`ssHKnGx6|z#BlqLPb%Swu*7n+kk%^GKGm zq^CDJ;^tr?M4LfU>JHWEUHxKt#HS5I6yNpn z&9(NSX7kBjcT(w3xMi}oR-%juqvYbF1uS&bu+fw^@vCh5V{5J$m3U>LqIxsn=XuP* z00K96iE-)@c|^3RH}_$yi?Zg^@#c@4HzRq* zP$jQn{`sM+Fy_)8YM+PApc4Ks&me|OCv{){!^H>)lhGBmk~;E)Ed809dJ47MvR?{V z_d*2>MCukKqYm}}W%hz&?b3;Lu*?ubs@-4|Pr*Y0jQ-SDNuoA9!lmLbkSXPngu@8i zK_AKwLSBG0T$Bi|lqx8gwf7mVZmD=}t9N(%k$~6IXBjI8CDgw&ow!p+>~AnqWGqF+ z%~=`Y`0|%xpi|oqCg#^LcX)gRyS3j_4jX;PAJ41XB^SJ+(F8ncrms*Y7bY~k%D8!Y zI`vxW0K)U-k{nL~3{__Z!*WEFh2OabTrt-n!q|0%Q$Fr{SawIHrF71SaMi8g&IDh8%+HWmm;Ucj!&{I{wxlv4l&{ ze!lPXGeUf6_{aHLb;;D)9+YaX4mowi`sMrukBxkz4wK@d9#pqtVefX8=m*~!S+}09UAZ=K(e#ukRkFV) z3!=?qu2e@Ab)`a<6Y47ciKDVdh^2Gw__`PF#{CE!z z>z-k7a^HPNi;Ts~)}QMNH)|;m>PGnU!_e{KOY%1U` zP?m6=?Il*3f3ErnJ`|XE!oZN%i#?VddHtEztWX&o2*(~<{`LW+jv9qh*kl&+vr{S7 zQDMXu4h=e7WV;o?kU&V1{k9V+vefIiCdgr-SM;WO2GeN9qRzyZIw@1p{=%~SbVZW{ z=k1nlID{a;EAS60R6CTIdU2mVwPRCits-BUYc^30IPRm0@9lij)!EJn+Fh+!W2o|Q z<}IKOx(g)74|#}Wb7tq}ji=}268(~f;U{Rpx2Jp)-s)U#4Iifhxvj* z#f!@Zi@;y;S*Ps7?TUEIE&)Z6g#>=tty2Q1&RrSbz%qXq~D^RJu*<` z>TH@#3jxmkyj%6UF8>o+gxq*Nej$_G3-we-^W+OQwl(}^OvVR&@)2zFICXu}oR7fz zM*Y?^gC+4<%S&>SO!2?4br!N8uF5%Iq+I0Zy_lZ-EGuJ$Qs{RQI(W6lvqhzqP3;*t z`>v8isEh0cmMi;1wx%();r{Zt&Sf5?l;rO#zJj6s#1EHl56Y|MN~gR3^}_r1E_T1{ zI;Epsk5K8f`(2We#_^k@EKuIMJ-J8IVJlg>1P+I*CvsqzGqAT1X=Sgv1!ZiA^HB)G z%Xgso6rlG0i)c*=x2~oj{;XoQM>MK+#_?m$PncQlC0}%6-b5T8CQ#bzpL6+F4B#pW zh5R0fyIJ?5+o3&v?NUm1VrrwPWrD>8v%U%_C~Tl5DtLVHa)z4|GqL+MS90taG|_)e zVR7gRputy*-}Ya;A1XkLRJ}A z!)@Fe)=Kz|#1RHF-LlSq9k(G{>*~@YVBLyYZjO(5MYU_E02`M-cKND)v=D*r+Qhw> z5NDDqf$^uS2R5MV-&!cni%q&V1=yd~i_5`2c=C>)fVseNwUaHjB%u1)nO_DE7S{>R z8DHYLc#`e&X#&hTx|(hEjJYq%fO9W4BNCIB-1Zu;gP`JM-|gqJ6QpMi?N>W5Lh zwaGMVZqbkE$F%K?ksQ$Ety&J`U^=)i(~`v+J=uOo*UhAD)Dd9|xRbwl$!$(7kUR*b z>Gr{TJ*pGK#BjN`d_&4f+!&3&a!E&dJMLew30jDcbGN5eng>8O&j50klku35?vW=H z&Mms8CQS~YNoJzk1PI45y(!V@a-2Hd&pnPecGH@~9=lG3WVsQTz(#-9kTH2L;w zBHr|y`fLb|N)KH;v5*U_k$!7jJfaU@RE&U0-?Uvq%bNzn{csxljr_L#7~XGfA>Gq` z!OVf(?OX@t6{;1APC8PZ1rNG--3pBF!2N_|Haq?YPe#4`k>KPMzqzc!rnuro7F zB!e}6-1Leci0oXm6o_ zBihsKbtLC!sn)+9F`cq+rJjn|CtD1o1LQgXF&#?T=r8zZG6*IxT`nPKcjU<^SgIGP z1(f~DawAaQe^Qd`M7Hx2e9Kg(&C-DbIJsVxA{RL79ceAfS)rh78Ki=eIWVFdkL+C_ zq%z?$MZdmiq~G@YZmweMA@?Yr=I-=LMW$OAySM~5<$hSifa4f#BQ%@G{7Q-n%t6Je zc8P<4_BFvZ>lGrRD4|wi3#-&ACv`k`U6_mQ^oBY_^e2Do4D7vQ{)-jajFS#A?lVo& zsXT`Hz>l>D@)d%+(Bf10a>;v1F&PACXRayK`(69!>CUEZoozsG#tWd|5zz1Ji4K18 za^J@^vo8864bI5=wz)H@Tn?D;*L5DA(lioUPn#ivN`QS)S@xN+6F!$yUzbw50clO2 zb?+Z+PKw1+8)J2+CIeT_OTio`HR+IntU0k)WrQ(>#4GK}Z;(7W4RyZZmyKUg#M}+L zGJRdq&rmIX`MGn{1@(QD8^P;ohPhA6qg8&BQ|b=!((|$2h%SDk_g0bUAd~##?b3=~ z_U3w;uxJ3!z4#IS;2GJZ@y2VzZ&8$xp9dq|*z1z?;?6l>@JwBG{hI66_HOQkBF1=Asx170UqU88# zGUh^ESQcBIT7s&kkNc!Vz6!YS%|b!~zQ9q{2rZqzDAy*3&rE+t^C3e;b?FY&jt+H% z?qm^D1PT?=`(0+4^TL=>&RZ?b#L22J8&=jLhinJRRQ?Ga#~UY(9qvY^=sikzef@iD zN-uQFw0_3xtDQ!HfTCDeavfSPKLz}}mYSjh4K4AZo%#u>CY;p}92_2^ggt**1n#~; zY6M*E7@Xq`&36Mdc*`e0@(Mkybz_;lE*WlZ+MAY|Z;Dz606I4Ac- zQkH5($o@mY)Z0%@2OuUmNeY`U%bnYf9$^KI$}KgqKi;5l@IYZp1BhzUKCio-nx z$+4K^G6bw!eD_<^66w*JPKOd+L`nc;Pmdn0^L4K)&g&gK*Pu#hv>RaRdm2f7@yN(M z4mv0zC$?0;4`t5qbgxUO6CJln$!zx<%oK2Qmswg{U5HGGC;YaM`MS{BTA!g|oydRD z^iCfOk%J|gzIFntIvXI6#@%w-qLYb~N06;DX|}M4VSnpvbnj8jh(})bZ2~IB z@@1N?&K1p&sX;`Gttl_;xzExL=Nx9_H)wXXS=3T^pVD&ov~OdbAt#QTo^OB z?r7{3+`Gx*^)Ws%CTI!6>y#2CBi>Ix>--G)s*T$mi*H@xjx~T!mfGw&bOsB-Cg9ut z_&FYW#N04fw53Y~^Wu8@f+PaOOVy^hlA(~)(ROw9UKr~ zOc%mYzxT5>t9HBe`81<~7vA#bi z;J%(++-pyL;$K+Yd0$+F`Cd;YcimyG>j~s|&p?c@m0Hf$Rf~M*Bn4$^9NELoeT)i; zpnWY_-6B%LiVoyg0_Y)K<3rY&A{PIcgvyO%8~qKxxlv?sH{OsoxpglaKhL1HC&d0( zd5C~)ySMNiY zRGUUOVng;?{3#<%n{$y4?MWBlNiyL@2Rv?$6|NRsZlWSLGdyeDpj7uOp%zerHt>>9 z>+a`=PI+fg+>H>jObIWMMK#4|q9^}OBxw)Z*ov>ELun}W>91vJq+K_<{uxtKgEc8_ z-^*ZvILTCuYXXO(=%fBI#q3Ax?86cmRCHS~Ow9O`%zZXBnA~D#r>YFBy5+~aeLCF{ zM;N6C){>{2U;SfxIyFD&5koAz#2r7u$uI8k0H8*L8xNjFv+S2zPK&5pYKF23UdRUX zQgF?u;yfq!XYyJJ`;&_&yDaVU_>0vPuykNB!k106lvH0%E-Q?dJ~NoqPN6ftybtNH zg@;0is;+Zfr%I0Ze0RKOdFXRoajLUmzw@bI0g~Dla_VUq`G5iM^ADyQu>t4gWbQQm z%FEQW3}e3k)>{nQ1LSGa_b5B-@x}AZl5k*_3u>7RJ!9oydS{);NAz}T6q7rl*RD=k z{kLKg5@(H7cJbi`fF_PCMRUkR2AXrps{>6qD8V(aal$Ak8au69HGoUhkA!c=$Qm$S ztNSX>-Yw+%8(4E`;$l?yyswVSUr6yZJs@BS%hE``IOLS}OM2$yIk9lD7PE&}SbBTW@SWrXuLHloet&VK zDf%HNt|85Wc^zK=l!8A%YtEPJ+AO2&emv12Nh0a^60=L=2x*s~bf4I$9nAL^L*P8N z7el7uTAuH?S*30_)=?rz&n%VJpzg|tDHlqk%4CBneo0!K@_Nd~G(ct}0jA_t4;}Q2MIc%zm_kub{ zoW_F>K1N92d_)RsaqoA(@8z7FBh;ScNLE1buY_ESj)!o-1WjAC-}Vsp8T7TxE2HVP zrYU(rlCGYuDGkH}1cL)#g)~`VnL`o?1D98);|HzsRn5 zb@^*N(Vh+J>`%xB@YGhsImi=8-6E!qfqThZ7}nLT{FB2LpU5oz$?y0m&B@G4FCQ*% z)R2Pe9AXX*YoEo7d>7&2{Ib84)BFs3IMlKa#zsdg4FBe9s zjy1gVXmy^Mrc>ve1KtDC6!n!Z(tWlY{%XTBdgg7<%8rPJnO@hAVb*0+N&f zR-x5XAFPQ|jwKSt+bYuDl!8uj_0&j-)Uq%SvDs8m_V1H#Q|8E3cNgi#t9=k7zy&)I zL+DuinF+zON1wK?gz^6t?3y6?I~dC!E3}SyubMD6lO>>1#?&r|Uo^{{oydHlkLGa+_NHQ6 z-%rB2ozW^jV)0&&LGEATB&8pB}an4~hxWReqElkS73jc1pTAZOxd$WBYrQ*dn zy!-l2ZFpmMR|+?8=GzyadKj?YWqlefL%Oaf?VJAieI0r()gA0m-(dD6)6zj z5o;h_p7Y-34kn!9imzKFu2^X5rhJ*uk+$kYwrAaOys=-xf%CBM6l4FxS3wnK&fvPs z7Hj24@RG%uO(eQnskbG%G(s4#8P~Yeq@u z{ut$c(@LWPXJQ5t&SAj-uYxQzJ8d93{zl=GJX|V6Y};!s(ma$lgo##>saqr4o7ZoC zJ^3WkCyr9@w-613kOvtW7pmL{OS5TMqeq=b=EPM7htvUR<^a9q2G+~cw>%WMhGD|) z#VD7FkLYlLz70$Rtw$h{b}sXv9Xob*c}0#dmwF8ZWXN6B$rne3dW%N+J5z3H=AqKS zV^*5Yl4AxVCQ*IoC~#;oFE%L_K{!_nYtyxQ>)_bl(9n3?5Ji6eW-32mdDL1Cc<$Up zCI=ziy0(ZTcyF1zQErX${Pk444)^jmD7Js$gXdvo&f?{ z7&d9~i}6QSZH0(WW3_+t6t`CDGwc_FSzotHqTVWeype=4()Kbmu8z6AXi6l+LH5eH z6hEs^tx(oBVWa1oJxvJxC|rw{*VRT&GeL%H^Q~_3O?<`Opg0+gh#uG*It>f)ohIz3 zmcy{>F0@J&Cr8p!bs1W2GF_VPGtT(iRHYzF^d*Gk-w?W!AxhvBsqLD%0wKt#$y(wQ z$~Pvsbg5M8;NA*l@YNK>y`Sy_+qc);r1?71FBjWoWrT3L>vw40_rO=y!}AhR&s#Q8 zt5ZFFINaRTh=|6ByMA#{9qCJ17NTAs`w>`5vvOKyj%X065ylYU`P4(zlu{S8!kYwE zv2$6Squ9W#D(%kI*YDYJej5m%!efD-2|R8y7`93F!W*Ggm1DbaX%I*2ytfBu)z1g| zl0+3vC{bdr)K=0GQx}fFSPA6Dh@hC5W^ZRS&4TN$GCJ30bauj;0-EUD=HA0CQ}$Js zDbVOBciHoy*u;r+ zcj6k79AT=w-FGGIBD2J73h4JMy%8xSe$Fu73=JO<5gHD_JriogJK=|yLg7e%^OvG= zY$>s%xJ-7|={g97hGUF6<0zo6y$Hr}9D~gmz^ZBW`RfBR)$3^oEqKBAFR5SMY2^du zGx}2-d6SwzAxA-cAUQrhzI+GO@#o~PVCCj!>lMBW2Nq#X~3xzMyr z@8~D=$j68zKv32KY~_eB*FzUh;0hUwxH(9Rq+4)-^Zi;;|LI#o8%27uEhFfz>JxX} z1PFHwsT(rJx3Hf@z;+iFWkq@GJoOQQnYB&Xce&i&kL>x+a^ev1XrgT)NHuaQ6Q zU96K5Lk!fDBGlD;2I`LXB6R6CaVS+TKJ_t=T6C?|JsB^HI&o^-LMsWn3mRlmW6hGD zOo!UtNa0cywS0ii;0Nirqq3@TxTJwSPG}t_JM8=okINQ4HnB+ZaK}EU7IsG#(|2e2 zFLQ<=c)~!Mp_7*%z1K}1EA4$5iw6CuuCAhIwQzZdu5tOOQ#P7bopKqspCd2_XFXjy z%27T9Hq6oSY}1ObQ1;BIELtV6OVs=^p(2~NcTvdmHWW@>DOyhTb@ibIkv(p=C{bVp zI!R2mk5kG@*SSC&l~%@_CF|b98B}2K)3ZE4WC(O}Fl$5}8vZb8H_MYv^wM`d>Kf`c zY#-Q@`UI8bQmfzO&k=LF=|PT_=PZ)dn~tkCrWK`=I$C>wLkhiN=pTrpn0LR5WmMvfTxOv(>doYiGPTDUFuSwl~AI`3T zgUH~I@+~2{Vj3MgaabZp-LoP1S&I~?$7F%@1rPnvZneax*_@)|_K!9{&&cqocu*#p zFf1Rl?>#x%T8l%W&Ij};Qy@o0XWCi}RWju@9R?EUYpW%PbANs=y(_Xg&RsY@I>#); zx_qjWJk0DPND=9~5KZX70NIn8JllX-X5Oa$4SPs`j{q7<6|++4mA{IKgwkP&8TJq> z`v4Y!(f1i<>gP#=NwV=6P^#n(+g+&$aqR^dpNs^Yjm=n=^K9C4X$(UQ?NIMXR$Uyb z&R0|!5zXp5wK2&S2Qsycbq0UgY5nngSYz(TF}RZ)WPi3t8nqghXA~buUl4(kKgN6Q zL+#dh#7s@R9y4EPJ7_)w?Qqa#hsc_>^(%Xnp6(86DG3>G^CvvDf)G-n!k z&H%T(vw}<}ZWRkE>xtc+cQ^7jo!+nk;W#mW3yx1@dRp?ju2Z)^s!0a=E{fI4U>E_* z9sC4-nwY#0m|u7iyeUgYufiT$2IY0I{PlDsq0f1AVBe>~7@`|fQ$3SA;;B(3iIO}m zh+T1KNI9z)lvd~qO3TIlUR0bAaLzYuM8OLzj4srs2nz9ZFH50RNYnBIVwaF2scea+ z9zF#y8ZH|tL^YGYn4J5w87f%qV=wlg1yjqFF)e*>)OJ1*4!mE{cY|F@ywQ9oy?w)z zI0}C#=puNivLx_nXLJIK*r`iRv7Io<{a7QX3ygmL=C?q>Hh6#;FuZ&ok;n=r{M{P9 zanus+MZ>i^n1+t)dY)|~kX9%MRkAX?lfOc^bBWN#hyloCW&C-C9p7fsIeA0SyV=-X0ehy9I~Y= z#~-6j+C{xnrQ8jC(og5IiqZa=tZjrXW-_dP=-o#Y@AUdB^CIxN@vI{=aGL);>BSWA z7kFi?Snf_(^EG&a<{Z)BK|HQ1#MehRNIAj1^&J!rNg@M4ch`& z4}YBT_PkD+$91HNDp+oeJd*L39xZmLIW*~d#c9KI6_)xf8T)i64osr6mv$tKC9#(& zr}B35-qph_6CjD+wnPPxSKr+;d=$7j3rjFqe7^sOhPCFs=w8=l&QXo+IBhfWToUW; zJkVWdUzW)U!90N+#k4vANW2|G0N#_r;m2?Pto`PnwWK4UGtN);q$@^bbzA^#fV7Po zc5P&XVSjA;QvWUlCVd$|y>-LBgMT$m*UnOcjyqoTpqNoT$O$F$SW1&8y=dRB+&Xpf zFnJH9{`;iUBnDqwDu#2P2yl5M?NsKH2byf`^;)SE<_?@T)q!~c1h2-E>SbqUS4z(B zXnA3*!YpIE)q;%#xT@Y{<$+;17I@j+IL-_caB9}LBl$%M7bhtY8cyc$+{oFpX(9FA zBV@52Ke`AhIb*o2b6^B5IwOLO4L8>Vu~yEZbM^NV>^{04;T#ZUi{srrC_K(bfXEMct;nDYhL9K zdtpV<@yhqxfF#8V%53o83Fvon6~mN@*s8NN)~2iB0z~1!bz>%L$oPIJLr@j4_Jp5T zRh?B-hMR3dG$Y1u7nKl)?Xwr5UMg;rRZJ^*waSW}M(25dv~z2`I9rJw}BBkU}tuXJ0-Jqtc6lU9;OwNiq;?I@SdykNNs^o?;>fl6AQfZk0N zcPE-i^<`LIP*00Xlz+_6AM}i5q3$BkR4LsRSieBpZSMpA?Ul&Kr-26ESxb1e4s+Lw zu2voECQ-JQ_*8q>@93+{F*x!bBw5{~t#5}W>UZ>OK`HC{krCP#E|I#30M$%n4g^IZ z)p7Z~lMD0cVPg?pyh`B!JX({U-pIR3Jzy2}c>bh+AP8Ix$m(OUVp5@amP4R3GVAj+ z&sz2i{vFz;BfaY>Y&I}Cmk?hYaPWq`>ViTbp-*ao(05*W7H}Y!ilOg;K`9lgfsU$ZmY4t8an6lIn(j@j;C`eS#?bzj6kujz z{r}3}O#fNTOe_NYQYt`0LDsAP)%|8+W@cgf$>=rjfj5@ECC!|?U)_uF%TE9B*I=w{ zaAcCS-(vgNV`itQ{n@yN@AN;WYQMu{^y?k6>^2nrX9(|z-Jy>1o z{lQT4UOFrP8{r|ZuLcH1-!up7tHOeapAst2-~5+EOgcD;*$9S-p4sjoO39<>Nw4{n z+g~Xvi};a0t$i)<)Z4I}hddIe6#p>|?!$B9>t9;7?u&KndL~c0ML8`PtZq?M;%kkV z80M{*o>+A=65hI8pBoLJx`ocn%&qlSg>Q#K>WNp=8{_3V7}jSocWzt3RsA^2EKKIR zZ@#?WF?|wzt{$y?9*#h$v!nUq`a9Y;5Py|nN*5e_!in+VZHy=~Y-ZbJt3@MZY)MIZ za8^9jkd-ddzY}+HHTs^!Ed)j*#FUV8TG-YUBYI2q!?`)pV|hQ(*DY-La(!!z($vmw z^gOEaaMf76f-gp-`(|Dyt4>|WA#xIPM%M#^jL2(?&EvS5j&NZ`WhP+~0$b%s*k6Q)pK4gXt^{e9y|x(=K=O?=)#dCs<}~ z@6)btZ~wr0ZhRV{nO#qD6@wR5I=8Ox(>1jBB*aN$H7mrcn`lO)$dgnqWlw5EdJMF} zsUWl`W@RPfp;x7ugE+b;2VV5kG^s~l(b#tjr{M{|;r$Ukb%gBiz-y8#ME@~e&Z#Ks z2rWB=9Ug;5$3tzfW&JsL8P1!Yn_EyaX{}qWI?OwoXgl2X3;&L)JDbWXReSd2a^@w| zkdR-8Q*>niy(@}qgU3;=t~IHM!RJr3vRQd0>iD>akur?^qd3e}zoyhhPe#vm{iKlh zd(D&fRNrGm`%~O`eCVE@5r9K-%N+4Hy4yiO^C!W5jW7Et(VMiwqeQzxyhyWB2?V9?MjW+ zQ0#N;Kc?+UKu@Vm*R9QC$2*SEO?&#nIZFevGQvB}1A7H%k$3yUk3)663U(ZkUEA^! zeh7__`JF&Q{@%==f`KdgoVWDkjK)q_De+Z}yasLeBa|5oP|c8#Zx3h;CY$CFB0X;Q zLj>@BW7UbA`1=~=4&p$5$9|F83O=d6kGR(tW_*kP=O4NKIkD!Q8rb%*)=%sTXJ|-R zogBlGQJq9cJt9tHr=ZQ-lZAgmB7H-YIMGEVvl0wtSD} zN2hx3P(#^aj+?QQisMI2eMLp>hFU2~gV>UF#M+_nOmi@eC1F76KxzL-i1Au*9bOg< z&ruYyuUUSL=DN$Oqf$HC`}HjbXImP(^?B<;l5$*TW_I4a4jt9M!^a1^81eN!P2yQZq0id<=HQoj zHuuLp4M|A^smQrguJZY2fC0_s=GSU6Q279~;z1*zXQ2@J^H6nUVQ^-)j_Esc*xu8e zuo40!%E-?2P>W-_-u!^bWqt#7OUkZUX-QFT1lE zFdbK}N@8cpK@o2Wnp}@W^1dwdn&W$QBBmAY2q{>-9nSeJWU8e1_zCK>{`HqCzYW+t zZ>AwygPx^RYXGI72Gx6_62b~c*~xn8e!a@Mx~aXQ36D0;2th9jn588Q#l?}w-Sv4e zkjkxl4@DmdX(wrQ-o1z=WSh-}al4Ve`THTv(j>zhx%e(f4b`gavK&D|3;@R_aZY2? zOqFV_-(jNrE-!&K+Wu{Zwo^ z?k;Oy>;iV>o>gOkFC5!W{DRmJ z6m`pwuVmBw@GhJsjx#%=0d^%-@-o%;AS^7*FE=-ru({>B)EmwpX7S6NAGoZ2$iMV` zaC0yGACnPdMp00(TrMhJyQf@61R!$wwc^OD!LTjit_IANOE}5E;t;NBlJDr-a`0*T zP+}~nP~H2KqUl|yB?F5ifR)(|veKRb{&!WC{Q7ye1e}tmN&_~vrj9Crm)Rb^{+~~* zNRHo#bsDm}_1rrujUZ72xVN3a|l?~22HW`0XIxB=_Jjq!}^mstbJ6!c&|2cfM zs_Izjz!=c&Id-GrP0O$nr>_93s-NWM*?!vapwF%3T1UsbsGkiqPN*_9N3H!$=p>=r7XY&7m^Fc4uF+rXsckmd~>jCVDuVMOzpQ&v`n-JDrK z?7wCS?KkERS|yJp^IdrlhJC3C3CZV$CrK_q+^qYzKV@69I{lwj@kGLnYB!0S&BThc42{P?L7-bKY7XgDLzMM6C0oA|)O<}shKgTM+J z@s47mg^iQ|l8_zVNhx*owD7&}V!|s$I!H z7pTA)ww#qtz9B9@<+vXO{RIQ_KniTR?0G5$!iWM4-QQpI0K+82SwI+S*U?ckvD*N6 z`jGJ(%T-==KIZ#$tV=sM2x~2SfCvdoW_D+78}Jm`-rm{%J@?pX1V1*j8sf=#?zQd7eH zO%uZWt8uDoW)k4AHR9)K)7myFt7H=|>LXLETCJb@iQg3iy;;AS<)~^{couoPS~@Z? zX9Ziv3pfZnqkK~IZTi^YQ_Uy6TM2i(N2~qL1MO}}hSM&qC!cc}r5%M8rr%+VnwJFp zslKs$l>d*39r9FxIOrJ?60%{vZ|9_21}8^3H2JN&j1YK7Q8}T1rJvYJ(%)}&36f0pfz}j9Sai_C{a3>=Gk>Clb8spIy^sy6O8S6>dA`QSKcNr!gL#^X zf4EPr1}42Y+$#B5$?3PKc(b!6Ej^VtU2LwK~A^FOUX{w<&G`A# z@2?<(XS9d}Z5caOlt{q@d&G6`&*3)s_mPz>bL~joM!@|L+`3)E;`^{X`&U*<4iss& zan;?~<|~d`1yQCtzWhngi!QTuE~!+w@@wV>IE*39M@M_A&sms%4>#Zn2WBjdmJk_I z0_19mSDmdI^_a0a;Gp`qtKK^~BaP*NHAZT`brZ(CBQNCBJ`VfX1AtSyl zEDmamSS~P6QS=KS>RWzovMViqaXO&CFk*V`5t~P0r~*sD#F+k7!#{>bdWA{l54vN^ zA~r#Fc#rivM)_n)XCm`X>5%Ruv zN$6TdiMdKWxY>YHz5nsWyIR&IKb{yUh8PQpy%Cu?9TE$`X;}-tP>_R}?>SB>d@OyW zu+fjcS+jrXQ(DCm>xxFX0W_9b>p<(8<=kVTSNmGmx;d-09)+h{FlXFb*kutE5>Ple z-z~Cynxp-Ef)&~0dg2vlh2={&HssQnswXR~D`(+`PYe_eigl4qm7I^=5-sNNDlfGv zMC2d!hF2!&{jp9H+pjf$ro*Z-txV#t|F|P|<*ISVRhT%qUg4UCM4kNGh~$mjf!o1X kwz~r{fn~QBY(E+J2g|QWUfi(R*}4A+mZ0;G>EGo40Koqrr~m)} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md index d13c8a631cabcf3..781c31721fcf7f7 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md @@ -38,95 +38,145 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Live example +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. #### HTML ```html -
- - - -
- - + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + ``` -```css hidden -.event-log { - width: 25rem; - height: 4rem; - border: 1px solid black; - margin: 0.5rem; - padding: 0.2rem; -} +#### CSS -input { - width: 11rem; - margin: 0.5rem; +```css +body { + background-color: lightblue; } -``` - -#### JavaScript -```js -const xhrButtonSuccess = document.querySelector('.xhr.success'); -const xhrButtonError = document.querySelector('.xhr.error'); -const xhrButtonAbort = document.querySelector('.xhr.abort'); -const log = document.querySelector('.event-log'); +main { + margin: 50px auto; + text-align: center; +} -function handleEvent(e) { - log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +#file { + display: none; } -function addListeners(xhr) { - xhr.addEventListener('loadstart', handleEvent); - xhr.addEventListener('load', handleEvent); - xhr.addEventListener('loadend', handleEvent); - xhr.addEventListener('progress', handleEvent); - xhr.addEventListener('error', handleEvent); - xhr.addEventListener('abort', handleEvent); +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; } -function runXHR(url) { - log.textContent = ''; +progress { + display: none; +} - const xhr = new XMLHttpRequest(); - addListeners(xhr); - xhr.open("GET", url); - xhr.send(); - return xhr; +progress.visible { + display: inline; } +``` -xhrButtonSuccess.addEventListener('click', () => { - runXHR('dgszyjnxcaipwzy.jpg'); -}); +#### JavaScript -xhrButtonError.addEventListener('click', () => { - runXHR('https://somewhere.org/i-dont-exist'); -}); +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); -xhrButtonAbort.addEventListener('click', () => { - runXHR('dgszyjnxcaipwzy.jpg').abort(); + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` -#### Result - -{{ EmbedLiveSample('Live_example', '100%', '150px') }} - ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md index bdf004b5ac4d0e6..cc5c33c909ad18f 100644 --- a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md @@ -38,95 +38,145 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Live example +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. #### HTML ```html -
- - - -
- - + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + ``` -```css hidden -.event-log { - width: 25rem; - height: 4rem; - border: 1px solid black; - margin: 0.5rem; - padding: 0.2rem; -} +#### CSS -input { - width: 11rem; - margin: 0.5rem; +```css +body { + background-color: lightblue; } -``` - -#### JavaScript -```js -const xhrButtonSuccess = document.querySelector('.xhr.success'); -const xhrButtonError = document.querySelector('.xhr.error'); -const xhrButtonAbort = document.querySelector('.xhr.abort'); -const log = document.querySelector('.event-log'); +main { + margin: 50px auto; + text-align: center; +} -function handleEvent(e) { - log.textContent = `${log.textContent}${e.type}: ${e.loaded} bytes transferred\n`; +#file { + display: none; } -function addListeners(xhr) { - xhr.addEventListener('loadstart', handleEvent); - xhr.addEventListener('load', handleEvent); - xhr.addEventListener('loadend', handleEvent); - xhr.addEventListener('progress', handleEvent); - xhr.addEventListener('error', handleEvent); - xhr.addEventListener('abort', handleEvent); +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; } -function runXHR(url) { - log.textContent = ''; +progress { + display: none; +} - const xhr = new XMLHttpRequest(); - addListeners(xhr); - xhr.open("GET", url); - xhr.send(); - return xhr; +progress.visible { + display: inline; } +``` -xhrButtonSuccess.addEventListener('click', () => { - runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json'); -}); +#### JavaScript -xhrButtonError.addEventListener('click', () => { - runXHR('http://i-dont-exist'); -}); +```js +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); -xhrButtonAbort.addEventListener('click', () => { - runXHR('https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json').abort(); + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` -#### Result - -{{ EmbedLiveSample('Live_example', '100%', '150px') }} - ## Specifications {{Specifications}} diff --git a/files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md b/files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md deleted file mode 100644 index b0d5ccdb88fcd33..000000000000000 --- a/files/en-us/web/api/xmlhttprequestupload/readystatechange_event/index.md +++ /dev/null @@ -1,62 +0,0 @@ ---- -title: 'XMLHttpRequestUpload: readystatechange event' -slug: Web/API/XMLHttpRequestUpload/readystatechange_event -page-type: web-api-event -browser-compat: api.XMLHttpRequestUpload.readystatechange_event ---- - -{{APIRef}} - -The `readystatechange` event is fired whenever the {{domxref("XMLHttpRequest.readyState", "readyState")}} property of the {{domxref("XMLHttpRequest")}} changes. - -> **Warning:** This should not be used with synchronous requests and must -> not be used from native code. - -## Syntax - -Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property. - -```js -addEventListener('readystatechange', (event) => { }) - -onreadystatechange = (event) => { } -``` - -## Event type - -A generic {{DOMxRef("Event")}} with no added properties. - -## Examples - -```js -const xhr = new XMLHttpRequest(); -const method = "GET"; -const url = "https://developer.mozilla.org/"; - -xhr.open(method, url, true); -xhr.onreadystatechange = () => { - // In local files, status is 0 upon success in Mozilla Firefox - if (xhr.readyState === XMLHttpRequest.DONE) { - const status = xhr.status; - if (status === 0 || (status >= 200 && status < 400)) { - // The request has been completed successfully - console.log(xhr.responseText); - } else { - // Oh no! There has been an error with the request! - } - } -}; -xhr.send(); -``` - -## Specifications - -{{Specifications}} - -## Browser compatibility - -{{Compat}} - -## See also - -- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md index 85d0451a1da8807..54d069c0849f60d 100644 --- a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md @@ -38,21 +38,142 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -```js -const client = new XMLHttpRequest(); -client.open('GET', 'http://www.example.org/example.txt'); -client.ontimeout = () => { - console.error('Timeout!!') -}; +### Uploading a file with a timeout + +This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. + +#### HTML + +```html + + + + + + XMLHttpRequestUpload test + + + + +
+

Upload a file

+

+ +

+

+ +

+

+ +

+

+ +

+
+ + +``` + +#### CSS + +```css +body { + background-color: lightblue; +} + +main { + margin: 50px auto; + text-align: center; +} + +#file { + display: none; +} + +label[for="file"] { + background-color: lightgrey; + padding: 10px 10px; +} + +progress { + display: none; +} -client.send(); +progress.visible { + display: inline; +} ``` -You could also set up the event handler using the {{domxref("EventTarget/addEventListener", "addEventListener()")}} method: +#### JavaScript ```js -client.addEventListener('timeout', () => { - console.error("Timeout!!"); +addEventListener("DOMContentLoaded", () => { + const fileInput = document.getElementById("file"); + const progressBar = document.querySelector("progress"); + const log = document.querySelector("output"); + const abortButton = document.getElementById("abort"); + + fileInput.addEventListener("change", () => { + const xhr = new XMLHttpRequest(); + xhr.timeout = 2000; // 2 seconds + + // Link abort button + abortButton.addEventListener( + "click", + () => { + xhr.abort(); + }, + { once: true } + ); + + // When the upload starts, we display the progress bar + xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; + }); + + // Each time a progress event is received we update the bar + xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; + }); + + // When the upload is finished, we hide the progress bar. + xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { + log.textContent = "Upload finished."; + } + abortButton.disabled = true; + }); + + // In case of an error, an abort, or a timeout, we hide the progress bar + // Note that these events can be listened to on the xhr object too + function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; + } + xhr.upload.addEventListener("error", errorAction); + xhr.upload.addEventListener("abort", errorAction); + xhr.upload.addEventListener("timeout", errorAction); + + // Build the payload + const fileData = new FormData(); + fileData.append("file", fileInput.files[0]); + + // Theoretically, event listeners could be set after the open() call + // but browsers are buggy here + xhr.open("POST", "upload_test.php", true); + + // Note that the event listener must be set before sending (as it is a preflighted request) + xhr.send(fileData); + }); }); ``` From b611fa864c9be91ac7ba06af047a5410858f3d51 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Sun, 12 Mar 2023 07:57:35 +0100 Subject: [PATCH 07/24] Document XMLHttpRequestUpload --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 6818457bcf75dfe..5effc4710096cfd 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -38,7 +38,6 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} -- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange")}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications From 6107138ab8b22fd8313394fe04aff1cb65264a82 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 08:59:26 +0200 Subject: [PATCH 08/24] Fixes --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 5effc4710096cfd..033e8c8d4f2a058 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -13,8 +13,6 @@ You don't use `XMLHttpRequestEventTarget` directly; instead you interact with th ## Inheritance for `XMLHttpRequest` -{{InheritanceDiagram("XMLHttpRequest")}} - The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/abort_event", "abort")}} @@ -28,8 +26,6 @@ The following events are made available to {{domxref("XMLHttpRequest")}}: ## Inheritance for `XMLHttpRequestUpload` -{{InheritanceDiagram("XMLHttpRequestUpload")}} - The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} From fd7007fc3f50e5223d14ed44789c568d78cea17c Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 09:01:04 +0200 Subject: [PATCH 09/24] Fixes --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 033e8c8d4f2a058..8c1e92bfb235d5f 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -13,6 +13,8 @@ You don't use `XMLHttpRequestEventTarget` directly; instead you interact with th ## Inheritance for `XMLHttpRequest` +{{InheritanceDiagram("XMLHttpRequest")}} + The following events are made available to {{domxref("XMLHttpRequest")}}: - {{domxref("XMLHttpRequest/abort_event", "abort")}} @@ -26,6 +28,8 @@ The following events are made available to {{domxref("XMLHttpRequest")}}: ## Inheritance for `XMLHttpRequestUpload` +{{InheritanceDiagram("XMLHttpRequestUpload")}} + The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} @@ -34,6 +38,7 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} +- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange)}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications From f17ff78b9361cef4607139f9ec9052280f4603e3 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 09:04:21 +0200 Subject: [PATCH 10/24] Fixes typos --- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 8c1e92bfb235d5f..6818457bcf75dfe 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -38,7 +38,7 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} -- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange)}} +- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange")}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications From 731875492feaec491e965dfc4b25b36311f9bdeb Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 27 Mar 2023 20:45:32 +0200 Subject: [PATCH 11/24] Update files/en-us/web/api/xmlhttprequestupload/index.md Co-authored-by: dawei-wang --- files/en-us/web/api/xmlhttprequestupload/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index 1591b0c742aa325..4a83741ecbf4255 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -7,7 +7,7 @@ browser-compat: api.XMLHttpRequestUpload {{DefaultAPISidebar("XMLHttpRequest")}} -The **`XMLHttpRequestUpload`** interface represents the upload process, allowing to listen for events associated with a specific {{domxref("XMLHttpRequest")}}. It is an _opaque_ object that represents the underlying, browser-dependant, upload process. It is {{domxref("XMLHttpRequestEventTarget")}} and is can be obtained by calling {{domxref("XMLHttpRequest.upload")}}. +The **`XMLHttpRequestUpload`** interface represents the upload process, allowing it to listen for events associated with a specific {{domxref("XMLHttpRequest")}}. It is an _opaque_ object that represents the underlying, browser-dependant, upload process. It is {{domxref("XMLHttpRequestEventTarget")}} and is can be obtained by calling {{domxref("XMLHttpRequest.upload")}}. {{AvailableInWorkers("notservice")}} From dbe0b53171f9f0c8bc0776d44f3610d7a4a00589 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Thu, 30 Mar 2023 14:15:38 +0200 Subject: [PATCH 12/24] Minor fixes --- .../web/api/xmlhttprequest/readystatechange_event/index.md | 4 ---- files/en-us/web/api/xmlhttprequesteventtarget/index.md | 1 - 2 files changed, 5 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md b/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md index c19b6ba1295505d..9786eb51f6336c2 100644 --- a/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md +++ b/files/en-us/web/api/xmlhttprequest/readystatechange_event/index.md @@ -56,7 +56,3 @@ xhr.send(); ## Browser compatibility {{Compat}} - -## See also - -- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequesteventtarget/index.md b/files/en-us/web/api/xmlhttprequesteventtarget/index.md index 6818457bcf75dfe..5effc4710096cfd 100644 --- a/files/en-us/web/api/xmlhttprequesteventtarget/index.md +++ b/files/en-us/web/api/xmlhttprequesteventtarget/index.md @@ -38,7 +38,6 @@ The following events are made available to {{domxref("XMLHttpRequestUpload")}}: - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}} - {{domxref("XMLHttpRequestUpload/progress_event", "progress")}} -- {{domxref("XMLHttpRequest/readystatechange_event", "readystatechange")}} - {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} ## Specifications From 132962a65ce5ace8da258defd6b3ba5188c2109e Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Thu, 30 Mar 2023 14:16:50 +0200 Subject: [PATCH 13/24] Fix flaws --- files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md index 7dddb9683f40d63..fc34f7c81b9537e 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -9,7 +9,7 @@ browser-compat: api.XMLHttpRequestUpload.loadend_event The **`loadend`** event is fired when a request has completed, whether successfully (after {{domxref("XMLHttpRequestUpload/load_event", "load")}}) or unsuccessfully (after {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} or {{domxref("XMLHttpRequestUpload/error_event", "error")}}). -The `loadend` event is also sent when the request has been interrupted (by a {{domxref("XMLHttpRequestUpload/timeout", "timeout")}}, an {{domxref("XMLHttpRequestUpload/abort", "abort")}}, or an {{domxref("XMLHttpRequestUpload/error", "error")}}). In such cases, both the `loaded` and `total` value of the event will be 0. +The `loadend` event is also sent when the request has been interrupted (by a {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}}, an {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, or an {{domxref("XMLHttpRequestUpload/error_event", "error")}}). In such cases, both the `loaded` and `total` value of the event will be 0. ## Syntax From 06c995547c36db6577f2ba83688987a126815ea3 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 3 Apr 2023 07:39:23 +0200 Subject: [PATCH 14/24] Simplify examples --- .../xmlhttprequestupload/abort_event/index.md | 149 ++---------------- .../xmlhttprequestupload/error_event/index.md | 147 ++--------------- .../xmlhttprequestupload/load_event/index.md | 144 ++--------------- .../loadend_event/index.md | 144 ++--------------- .../loadstart_event/index.md | 144 ++--------------- .../progress_event/index.md | 148 ++--------------- .../timeout_event/index.md | 145 ++--------------- 7 files changed, 77 insertions(+), 944 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md index 7e7d70b075b9d07..9b15f958711866b 100644 --- a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md @@ -7,7 +7,7 @@ browser-compat: api.XMLHttpRequestUpload.abort_event {{APIRef}} -The `abort` event is fired when a request has been aborted, for example because the program called {{domxref("XMLHttpRequest.abort()")}}. +The `abort` event is fired at {{domxref("XMLHttpRequestUpload")}} when a request has been aborted, for example because the program called {{domxref("XMLHttpRequest.abort()")}}. ## Syntax @@ -38,143 +38,18 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} - -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} +### Using the `abort` event -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` - -#### JavaScript +You can use the `abort` event to stop the upload before it finishes. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); -}); +// In case of an abort we hide the progress bar +// Note that this event can be listened to on the xhr object too +function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; +} +xhr.upload.addEventListener("abort", errorAction); ``` ## Specifications @@ -187,5 +62,5 @@ addEventListener("DOMContentLoaded", () => { ## See also -- Related events: {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequest/load_event", "load")}}, {{domxref("XMLHttpRequest/progress_event", "progress")}}, {{domxref("XMLHttpRequest/error_event", "error")}}, {{domxref("XMLHttpRequest/loadend_event", "loadend")}} -- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md index 8b864b3950f0069..a68d2a1d2d29e3b 100644 --- a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md @@ -38,143 +38,18 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} - -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} +### Using the `error` event -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` - -#### JavaScript +You can use the `error` event to detect a problem with the upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); -}); +// In case of an error we hide the progress bar +// Note that this event can be listened to on the xhr object too +function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; +} +xhr.upload.addEventListener("error", errorAction); ``` ## Specifications @@ -187,5 +62,5 @@ addEventListener("DOMContentLoaded", () => { ## See also -- Related events: {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequest/load_event", "load")}}, {{domxref("XMLHttpRequest/progress_event", "progress")}}, {{domxref("XMLHttpRequest/loadend_event", "loadend")}}, {{domxref("XMLHttpRequest/abort_event", "abort")}} -- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/abort", "abort")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md index b35a14c9871763f..3a8b1abc4b1250b 100644 --- a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -38,142 +38,16 @@ _In addition to the properties listed below, properties from the parent interfac ### Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} - -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} - -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` +## Using the `load` event -#### JavaScript +You can use the `load` event to detect the successfully termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); +// When the upload is finished, we hide the progress bar. +xhr.upload.addEventListener("load", (event) => { + progressBar.classList.remove("visible"); + log.textContent = "Upload finished."; + abortButton.disabled = true; }); ``` @@ -187,5 +61,5 @@ addEventListener("DOMContentLoaded", () => { ## See also -- Related events: {{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequest/loadend_event", "loadend")}}, {{domxref("XMLHttpRequest/progress_event", "progress")}}, {{domxref("XMLHttpRequest/error_event", "error")}}, {{domxref("XMLHttpRequest/abort_event", "abort")}} -- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout", "lotimeouttimeoutad")}} +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md index fc34f7c81b9537e..a5bb35c30aedb45 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -40,142 +40,18 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} - -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} - -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` +## Using the `loadend` event -#### JavaScript +You can use the `loadend` event to detect the (successfully or not) termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); +// When the upload is finished, we hide the progress bar. +xhr.upload.addEventListener("loadend", (event) => { + progressBar.classList.remove("visible"); + if (event.loaded !== 0) { // Successful termination + log.textContent = "Upload finished."; + } + abortButton.disabled = true; }); ``` @@ -189,5 +65,5 @@ addEventListener("DOMContentLoaded", () => { ## See also -- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout", "lotimeouttimeoutad")}} - {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md index 781c31721fcf7f7..d3374bbf2a2cfcc 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md @@ -38,142 +38,18 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} - -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} - -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` +## Using the `loadstart` event -#### JavaScript +You can use the `loadstart` event to detect the beginning of an upload For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); +// When the upload starts, we display the progress bar +xhr.upload.addEventListener("loadstart", (event) => { + progressBar.classList.add("visible"); + progressBar.value = 0; + progressBar.max = event.total; + log.textContent = "Uploading (0%)…"; + abortButton.disabled = false; }); ``` @@ -187,5 +63,5 @@ addEventListener("DOMContentLoaded", () => { ## See also -- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- Related events: {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout", "lotimeouttimeoutad")}} - {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md index cc5c33c909ad18f..f08eb0958a947cf 100644 --- a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md @@ -38,142 +38,19 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} - -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} - -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` +## Using the `progress` event -#### JavaScript +You can use the `progress` event to get info about the progress of a lengthy upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); +// Each time a progress event is received we update the progress bar +// and the progress message +xhr.upload.addEventListener("progress", (event) => { + progressBar.value = event.loaded; // Update the progress bar + log.textContent = `Uploading (${( + (event.loaded / event.total) * + 100 + ).toFixed(2)}%)…`; }); ``` @@ -187,5 +64,6 @@ addEventListener("DOMContentLoaded", () => { ## See also -- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#) -- {{domxref("XMLHttpRequestUpload")}}monitoring_progress +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} +- [Monitoring progress](/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#monitoring_progress) +- {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md index 54d069c0849f60d..6058b70184f5dc9 100644 --- a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md @@ -38,143 +38,20 @@ _In addition to the properties listed below, properties from the parent interfac ## Examples -### Uploading a file with a timeout - -This allows you to upload a file to a server; it displays a progress bar while the upload is happening as well as a message with the progress and the results, success or failure. An abort button allows to stop an upload. - -#### HTML - -```html - - - - - - XMLHttpRequestUpload test - - - - -
-

Upload a file

-

- -

-

- -

-

- -

-

- -

-
- - -``` - -#### CSS - -```css -body { - background-color: lightblue; -} +### Using the `timeout` event -main { - margin: 50px auto; - text-align: center; -} - -#file { - display: none; -} +You can use the `timeout` event to detect an upload that stopped because of it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. -label[for="file"] { - background-color: lightgrey; - padding: 10px 10px; -} - -progress { - display: none; -} - -progress.visible { - display: inline; -} -``` - -#### JavaScript +The timeout is set on the {{domxref("XMTLHttpRequest")}} object using the {{domxref("XMLHttpRequest.timeout")}} property. ```js -addEventListener("DOMContentLoaded", () => { - const fileInput = document.getElementById("file"); - const progressBar = document.querySelector("progress"); - const log = document.querySelector("output"); - const abortButton = document.getElementById("abort"); - - fileInput.addEventListener("change", () => { - const xhr = new XMLHttpRequest(); - xhr.timeout = 2000; // 2 seconds - - // Link abort button - abortButton.addEventListener( - "click", - () => { - xhr.abort(); - }, - { once: true } - ); - - // When the upload starts, we display the progress bar - xhr.upload.addEventListener("loadstart", (event) => { - progressBar.classList.add("visible"); - progressBar.value = 0; - progressBar.max = event.total; - log.textContent = "Uploading (0%)…"; - abortButton.disabled = false; - }); - - // Each time a progress event is received we update the bar - xhr.upload.addEventListener("progress", (event) => { - progressBar.value = event.loaded; - log.textContent = `Uploading (${( - (event.loaded / event.total) * - 100 - ).toFixed(2)}%)…`; - }); - - // When the upload is finished, we hide the progress bar. - xhr.upload.addEventListener("loadend", (event) => { - progressBar.classList.remove("visible"); - if (event.loaded !== 0) { - log.textContent = "Upload finished."; - } - abortButton.disabled = true; - }); - - // In case of an error, an abort, or a timeout, we hide the progress bar - // Note that these events can be listened to on the xhr object too - function errorAction(event) { - progressBar.classList.remove("visible"); - log.textContent = `Upload failed: ${event.type}`; - } - xhr.upload.addEventListener("error", errorAction); - xhr.upload.addEventListener("abort", errorAction); - xhr.upload.addEventListener("timeout", errorAction); - - // Build the payload - const fileData = new FormData(); - fileData.append("file", fileInput.files[0]); - - // Theoretically, event listeners could be set after the open() call - // but browsers are buggy here - xhr.open("POST", "upload_test.php", true); - - // Note that the event listener must be set before sending (as it is a preflighted request) - xhr.send(fileData); - }); -}); +// In case of an timeout we hide the progress bar +// Note that this event can be listened to on the xhr object too +function errorAction(event) { + progressBar.classList.remove("visible"); + log.textContent = `Upload failed: ${event.type}`; +} +xhr.upload.addEventListener("timeout", errorAction); ``` ## Specifications @@ -187,4 +64,6 @@ addEventListener("DOMContentLoaded", () => { ## See also +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} - {{domxref("XMLHttpRequestUpload")}} +- {{domxref("XMLHttpRequest.timeout")}} From 99fefd38379cb245104458ec97a63231c23d342e Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 3 Apr 2023 07:42:00 +0200 Subject: [PATCH 15/24] Fix sidebar --- files/en-us/web/api/xmlhttprequestupload/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index 4a83741ecbf4255..4421d71e6bb78f6 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -5,7 +5,7 @@ page-type: web-api-interface browser-compat: api.XMLHttpRequestUpload --- -{{DefaultAPISidebar("XMLHttpRequest")}} +{{APIRef("XMLHttpRequest")}} The **`XMLHttpRequestUpload`** interface represents the upload process, allowing it to listen for events associated with a specific {{domxref("XMLHttpRequest")}}. It is an _opaque_ object that represents the underlying, browser-dependant, upload process. It is {{domxref("XMLHttpRequestEventTarget")}} and is can be obtained by calling {{domxref("XMLHttpRequest.upload")}}. From fe91d48075642c0cb3e60e59851fda82214beca3 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 3 Apr 2023 07:43:35 +0200 Subject: [PATCH 16/24] Fix typo --- files/en-us/web/api/xmlhttprequestupload/abort_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/error_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/load_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md | 2 +- .../en-us/web/api/xmlhttprequestupload/loadstart_event/index.md | 2 +- .../en-us/web/api/xmlhttprequestupload/progress_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md index 9b15f958711866b..94e5bd8cbe897a7 100644 --- a/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/abort_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ### Using the `abort` event -You can use the `abort` event to stop the upload before it finishes. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `abort` event to stop the upload before it finishes. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // In case of an abort we hide the progress bar diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md index a68d2a1d2d29e3b..6d53ef2acb7edab 100644 --- a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ### Using the `error` event -You can use the `error` event to detect a problem with the upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `error` event to detect a problem with the upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // In case of an error we hide the progress bar diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md index 3a8b1abc4b1250b..da61027d678a544 100644 --- a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `load` event -You can use the `load` event to detect the successfully termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `load` event to detect the successfully termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // When the upload is finished, we hide the progress bar. diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md index a5bb35c30aedb45..b36ab6962f25be1 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -42,7 +42,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `loadend` event -You can use the `loadend` event to detect the (successfully or not) termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `loadend` event to detect the (successfully or not) termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // When the upload is finished, we hide the progress bar. diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md index d3374bbf2a2cfcc..389cf9965bb5135 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `loadstart` event -You can use the `loadstart` event to detect the beginning of an upload For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `loadstart` event to detect the beginning of an upload For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // When the upload starts, we display the progress bar diff --git a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md index f08eb0958a947cf..52fa00b0e8bf10f 100644 --- a/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/progress_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `progress` event -You can use the `progress` event to get info about the progress of a lengthy upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `progress` event to get info about the progress of a lengthy upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // Each time a progress event is received we update the progress bar diff --git a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md index 6058b70184f5dc9..3688c6eb9edb48b 100644 --- a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ### Using the `timeout` event -You can use the `timeout` event to detect an upload that stopped because of it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload)}} page. +You can use the `timeout` event to detect an upload that stopped because of it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. The timeout is set on the {{domxref("XMTLHttpRequest")}} object using the {{domxref("XMLHttpRequest.timeout")}} property. From cab0923d2b36055969e6460e119afe5cf2b89352 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Mon, 3 Apr 2023 07:49:55 +0200 Subject: [PATCH 17/24] Fix flaws --- files/en-us/web/api/xmlhttprequestupload/error_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/load_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md | 2 +- .../en-us/web/api/xmlhttprequestupload/loadstart_event/index.md | 2 +- files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md index 6d53ef2acb7edab..79d01ecef35196d 100644 --- a/files/en-us/web/api/xmlhttprequestupload/error_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/error_event/index.md @@ -62,5 +62,5 @@ xhr.upload.addEventListener("error", errorAction); ## See also -- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/abort", "abort")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} - {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md index da61027d678a544..15868126ffc1bd8 100644 --- a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -61,5 +61,5 @@ xhr.upload.addEventListener("load", (event) => { ## See also -- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout", "lotimeouttimeoutad")}} +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timoeout")}} - {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md index b36ab6962f25be1..e44747933f4229a 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -65,5 +65,5 @@ xhr.upload.addEventListener("loadend", (event) => { ## See also -- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout", "lotimeouttimeoutad")}} +- Related events: {{domxref("XMLHttpRequestUpload/loadstart_event", "loadstart")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} - {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md index 389cf9965bb5135..963514b4aa32441 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md @@ -63,5 +63,5 @@ xhr.upload.addEventListener("loadstart", (event) => { ## See also -- Related events: {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout", "lotimeouttimeoutad")}} +- Related events: {{domxref("XMLHttpRequestUpload/load_event", "load")}}, {{domxref("XMLHttpRequestUpload/progress_event", "progress")}}, {{domxref("XMLHttpRequestUpload/error_event", "error")}}, {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}}, {{domxref("XMLHttpRequestUpload/abort_event", "abort")}}, {{domxref("XMLHttpRequestUpload/timeout_event", "timeout")}} - {{domxref("XMLHttpRequestUpload")}} diff --git a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md index 3688c6eb9edb48b..a973607f0a309e1 100644 --- a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md @@ -42,7 +42,7 @@ _In addition to the properties listed below, properties from the parent interfac You can use the `timeout` event to detect an upload that stopped because of it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. -The timeout is set on the {{domxref("XMTLHttpRequest")}} object using the {{domxref("XMLHttpRequest.timeout")}} property. +The timeout is set on the {{domxref("XMLHttpRequest")}} object using the {{domxref("XMLHttpRequest.timeout")}} property. ```js // In case of an timeout we hide the progress bar From 132e46987d55b294dc11fd767530d6b70ba3954b Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:20:36 +0200 Subject: [PATCH 18/24] Update files/en-us/web/api/xmlhttprequestupload/index.md Co-authored-by: Florian Scholz --- files/en-us/web/api/xmlhttprequestupload/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index 4421d71e6bb78f6..f7faaa7fad2687f 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -7,7 +7,7 @@ browser-compat: api.XMLHttpRequestUpload {{APIRef("XMLHttpRequest")}} -The **`XMLHttpRequestUpload`** interface represents the upload process, allowing it to listen for events associated with a specific {{domxref("XMLHttpRequest")}}. It is an _opaque_ object that represents the underlying, browser-dependant, upload process. It is {{domxref("XMLHttpRequestEventTarget")}} and is can be obtained by calling {{domxref("XMLHttpRequest.upload")}}. +The **`XMLHttpRequestUpload`** interface represents the upload process for a specific {{domxref("XMLHttpRequest")}}. It is an _opaque_ object that represents the underlying, browser-dependant, upload process. It is {{domxref("XMLHttpRequestEventTarget")}} and is can be obtained by calling {{domxref("XMLHttpRequest.upload")}}. {{AvailableInWorkers("notservice")}} From 686a15f4b937ff522ac5e66f45ff41f6581fa190 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:20:44 +0200 Subject: [PATCH 19/24] Update files/en-us/web/api/xmlhttprequestupload/index.md Co-authored-by: Florian Scholz --- files/en-us/web/api/xmlhttprequestupload/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index f7faaa7fad2687f..509be85e790e36a 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -30,7 +30,7 @@ _This interface has no specific method, but inherits the methods of {{domxref("X - : Fired when the request encountered an error. Also available via the `onerror` event handler property. - {{domxref("XMLHttpRequestUpload/load_event", "load")}} - - : Fired when an `XMLHttpRequest` transaction completes successfully. + - : Fired when a request transaction completes successfully. Also available via the `onload` event handler property. - {{domxref("XMLHttpRequestUpload/loadend_event", "loadend")}} - : Fired when a request has completed, whether successfully (after {{domxref("XMLHttpRequest/load_event", "load")}}) or unsuccessfully (after {{domxref("XMLHttpRequestUpload/abort_event", "abort")}} or {{domxref("XMLHttpRequest/error_event", "error")}}). From 9a1745f1093e516344efebb792331f0a1058a02c Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:20:50 +0200 Subject: [PATCH 20/24] Update files/en-us/web/api/xmlhttprequestupload/index.md Co-authored-by: Florian Scholz --- files/en-us/web/api/xmlhttprequestupload/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/index.md b/files/en-us/web/api/xmlhttprequestupload/index.md index 509be85e790e36a..b973ddde1a0bd59 100644 --- a/files/en-us/web/api/xmlhttprequestupload/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/index.md @@ -144,7 +144,7 @@ addEventListener("DOMContentLoaded", () => { abortButton.disabled = false; }); - // Each time a progress event is received we update the bar + // Each time a progress event is received, we update the bar xhr.upload.addEventListener("progress", (event) => { progressBar.value = event.loaded; log.textContent = `Uploading (${( From e17bba674159be8cc609e56f2129ad463a4205b3 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:20:56 +0200 Subject: [PATCH 21/24] Update files/en-us/web/api/xmlhttprequestupload/load_event/index.md Co-authored-by: Florian Scholz --- files/en-us/web/api/xmlhttprequestupload/load_event/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md index 15868126ffc1bd8..70f6b2c59317d97 100644 --- a/files/en-us/web/api/xmlhttprequestupload/load_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/load_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `load` event -You can use the `load` event to detect the successfully termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. +You can use the `load` event to detect the successful termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // When the upload is finished, we hide the progress bar. From c55fb8739e255d60e333f6f53945f261b4cdd69f Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:21:02 +0200 Subject: [PATCH 22/24] Update files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md Co-authored-by: Florian Scholz --- files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md index e44747933f4229a..caa659b90d8e440 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadend_event/index.md @@ -42,7 +42,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `loadend` event -You can use the `loadend` event to detect the (successfully or not) termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. +You can use the `loadend` event to detect the (successful or not) termination of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // When the upload is finished, we hide the progress bar. From 8f5be5058b757c391fdb204110580c162acb7679 Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:21:10 +0200 Subject: [PATCH 23/24] Update files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md Co-authored-by: Florian Scholz --- .../en-us/web/api/xmlhttprequestupload/loadstart_event/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md index 963514b4aa32441..1f1ede49bf522cc 100644 --- a/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/loadstart_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ## Using the `loadstart` event -You can use the `loadstart` event to detect the beginning of an upload For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. +You can use the `loadstart` event to detect the beginning of an upload. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. ```js // When the upload starts, we display the progress bar From 0359845520ccaf8ecbccc56c0a0d2d4242f2b54b Mon Sep 17 00:00:00 2001 From: Jean-Yves Perrier Date: Tue, 4 Apr 2023 12:21:17 +0200 Subject: [PATCH 24/24] Update files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md Co-authored-by: Florian Scholz --- files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md index a973607f0a309e1..b31d210c7d589c1 100644 --- a/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md +++ b/files/en-us/web/api/xmlhttprequestupload/timeout_event/index.md @@ -40,7 +40,7 @@ _In addition to the properties listed below, properties from the parent interfac ### Using the `timeout` event -You can use the `timeout` event to detect an upload that stopped because of it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. +You can use the `timeout` event to detect an upload that stopped because it was too slow. For a complete code example that uploads a file and displays a progress bar, see the main {{domxref("XMLHttpRequestUpload")}} page. The timeout is set on the {{domxref("XMLHttpRequest")}} object using the {{domxref("XMLHttpRequest.timeout")}} property.