{"version":3,"file":"ckeditor.js","sources":["webpack://InlineEditor/ckeditor.js"],"sourcesContent":["/*!\n * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.md.\n */\n(function(e){const t=e[\"en\"]=e[\"en\"]||{};t.dictionary=Object.assign(t.dictionary||{},{\"%0 of %1\":\"%0 of %1\",\"Align center\":\"Align center\",\"Align left\":\"Align left\",\"Align right\":\"Align right\",Aquamarine:\"Aquamarine\",Big:\"Big\",Black:\"Black\",\"Block quote\":\"Block quote\",Blue:\"Blue\",\"Blue marker\":\"Blue marker\",Bold:\"Bold\",\"Bulleted List\":\"Bulleted List\",Cancel:\"Cancel\",\"Cannot upload file:\":\"Cannot upload file:\",\"Centered image\":\"Centered image\",\"Change image text alternative\":\"Change image text alternative\",\"Choose heading\":\"Choose heading\",Column:\"Column\",\"Could not insert image at the current position.\":\"Could not insert image at the current position.\",\"Could not obtain resized image URL.\":\"Could not obtain resized image URL.\",\"Decrease indent\":\"Decrease indent\",Default:\"Default\",\"Delete column\":\"Delete column\",\"Delete row\":\"Delete row\",\"Dim grey\":\"Dim grey\",\"Document colors\":\"Document colors\",Downloadable:\"Downloadable\",\"Dropdown toolbar\":\"Dropdown toolbar\",\"Edit link\":\"Edit link\",\"Editor toolbar\":\"Editor toolbar\",\"Enter image caption\":\"Enter image caption\",\"Font Background Color\":\"Font Background Color\",\"Font Family\":\"Font Family\",\"Font Size\":\"Font Size\",\"Full size image\":\"Full size image\",Green:\"Green\",\"Green marker\":\"Green marker\",\"Green pen\":\"Green pen\",Grey:\"Grey\",\"Header column\":\"Header column\",\"Header row\":\"Header row\",Heading:\"Heading\",\"Heading 1\":\"Heading 1\",\"Heading 2\":\"Heading 2\",\"Heading 3\":\"Heading 3\",\"Heading 4\":\"Heading 4\",\"Heading 5\":\"Heading 5\",\"Heading 6\":\"Heading 6\",Highlight:\"Highlight\",\"Horizontal line\":\"Horizontal line\",Huge:\"Huge\",\"Image toolbar\":\"Image toolbar\",\"image widget\":\"image widget\",\"Increase indent\":\"Increase indent\",\"Insert code block\":\"Insert code block\",\"Insert column left\":\"Insert column left\",\"Insert column right\":\"Insert column right\",\"Insert image\":\"Insert image\",\"Insert image or file\":\"Insert image or file\",\"Insert media\":\"Insert media\",\"Insert row above\":\"Insert row above\",\"Insert row below\":\"Insert row below\",\"Insert table\":\"Insert table\",\"Inserting image failed\":\"Inserting image failed\",Italic:\"Italic\",Justify:\"Justify\",\"Left aligned image\":\"Left aligned image\",\"Light blue\":\"Light blue\",\"Light green\":\"Light green\",\"Light grey\":\"Light grey\",Link:\"Link\",\"Link URL\":\"Link URL\",\"Media URL\":\"Media URL\",\"media widget\":\"media widget\",\"Merge cell down\":\"Merge cell down\",\"Merge cell left\":\"Merge cell left\",\"Merge cell right\":\"Merge cell right\",\"Merge cell up\":\"Merge cell up\",\"Merge cells\":\"Merge cells\",Next:\"Next\",\"Numbered List\":\"Numbered List\",\"Open in a new tab\":\"Open in a new tab\",\"Open link in new tab\":\"Open link in new tab\",Orange:\"Orange\",Paragraph:\"Paragraph\",\"Paste the media URL in the input.\":\"Paste the media URL in the input.\",\"Pink marker\":\"Pink marker\",\"Plain text\":\"Plain text\",Previous:\"Previous\",Purple:\"Purple\",Red:\"Red\",\"Red pen\":\"Red pen\",Redo:\"Redo\",\"Remove color\":\"Remove color\",\"Remove Format\":\"Remove Format\",\"Remove highlight\":\"Remove highlight\",\"Rich Text Editor, %0\":\"Rich Text Editor, %0\",\"Right aligned image\":\"Right aligned image\",Row:\"Row\",Save:\"Save\",\"Select column\":\"Select column\",\"Select row\":\"Select row\",\"Selecting resized image failed\":\"Selecting resized image failed\",\"Show more items\":\"Show more items\",\"Side image\":\"Side image\",Small:\"Small\",\"Split cell horizontally\":\"Split cell horizontally\",\"Split cell vertically\":\"Split cell vertically\",Strikethrough:\"Strikethrough\",\"Table toolbar\":\"Table toolbar\",\"Text alignment\":\"Text alignment\",\"Text alignment toolbar\":\"Text alignment toolbar\",\"Text alternative\":\"Text alternative\",\"Text highlight toolbar\":\"Text highlight toolbar\",\"The URL must not be empty.\":\"The URL must not be empty.\",\"This link has no URL\":\"This link has no URL\",\"This media URL is not supported.\":\"This media URL is not supported.\",Tiny:\"Tiny\",\"Tip: Paste the URL into the content to embed faster.\":\"Tip: Paste the URL into the content to embed faster.\",\"To-do List\":\"To-do List\",Turquoise:\"Turquoise\",Underline:\"Underline\",Undo:\"Undo\",Unlink:\"Unlink\",\"Upload failed\":\"Upload failed\",\"Upload in progress\":\"Upload in progress\",White:\"White\",\"Widget toolbar\":\"Widget toolbar\",Yellow:\"Yellow\",\"Yellow marker\":\"Yellow marker\"})})(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={}));(function e(t,n){if(typeof exports===\"object\"&&typeof module===\"object\")module.exports=n();else if(typeof define===\"function\"&&define.amd)define([],n);else if(typeof exports===\"object\")exports[\"InlineEditor\"]=n();else t[\"InlineEditor\"]=n()})(window,(function(){return function(e){var t={};function n(i){if(t[i]){return t[i].exports}var o=t[i]={i:i,l:false,exports:{}};e[i].call(o.exports,o,o.exports,n);o.l=true;return o.exports}n.m=e;n.c=t;n.d=function(e,t,i){if(!n.o(e,t)){Object.defineProperty(e,t,{enumerable:true,get:i})}};n.r=function(e){if(typeof Symbol!==\"undefined\"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"})}Object.defineProperty(e,\"__esModule\",{value:true})};n.t=function(e,t){if(t&1)e=n(e);if(t&8)return e;if(t&4&&typeof e===\"object\"&&e&&e.__esModule)return e;var i=Object.create(null);n.r(i);Object.defineProperty(i,\"default\",{enumerable:true,value:e});if(t&2&&typeof e!=\"string\")for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i};n.n=function(e){var t=e&&e.__esModule?function t(){return e[\"default\"]}:function t(){return e};n.d(t,\"a\",t);return t};n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};n.p=\"\";return n(n.s=108)}([function(e,t,n){\"use strict\";n.d(t,\"b\",(function(){return o}));n.d(t,\"a\",(function(){return s}));const i=\"https://ckeditor.com/docs/ckeditor5/latest/framework/guides/support/error-codes.html\";class o extends Error{constructor(e,t,n){e=s(e);if(n){e+=\" \"+JSON.stringify(n)}super(e);this.name=\"CKEditorError\";this.context=t;this.data=n}is(e){return e===\"CKEditorError\"}static rethrowUnexpectedError(e,t){if(e.is&&e.is(\"CKEditorError\")){throw e}const n=new o(e.message,t);n.stack=e.stack;throw n}}function s(e){const t=e.match(/^([^:]+):/);if(!t){return e}return e+` Read more: ${i}#error-${t[1]}\\n`}},function(e,t,n){\"use strict\";var i=function e(){var t;return function e(){if(typeof t===\"undefined\"){t=Boolean(window&&document&&document.all&&!window.atob)}return t}}();var o=function e(){var t={};return function e(n){if(typeof t[n]===\"undefined\"){var i=document.querySelector(n);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement){try{i=i.contentDocument.head}catch(e){i=null}}t[n]=i}return t[n]}}();var s=[];function r(e){var t=-1;for(var n=0;n
\";else if(typeof console!=\"undefined\"&&console.log!=null)console.log(n)};js.Boot.__clear_trace=function(){var e=document.getElementById(\"haxe:trace\");if(e!=null)e.innerHTML=\"\"};js.Boot.isClass=function(e){return e.__name__};js.Boot.isEnum=function(e){return e.__ename__};js.Boot.getClass=function(e){return e.__class__};js.Boot.__string_rec=function(e,t){if(e==null)return\"null\";if(t.length>=5)return\"<...>\";var n=typeof e;if(n==\"function\"&&(e.__name__||e.__ename__))n=\"object\";switch(n){case\"object\":if(e instanceof Array){if(e.__enum__){if(e.length==2)return e[0];var i=e[0]+\"(\";t+=\"\\t\";var o=2,s=e.length;while(o0?\",\":\"\")+js.Boot.__string_rec(e[c],t)}i+=\"]\";return i}var l;try{l=e.toString}catch(e){return\"???\"}if(l!=null&&l!=Object.toString){var d=e.toString();if(d!=\"[object Object]\")return d}var u=null;var i=\"{\\n\";t+=\"\\t\";var h=e.hasOwnProperty!=null;for(var u in e){if(h&&!e.hasOwnProperty(u)){continue}if(u==\"prototype\"||u==\"__class__\"||u==\"__super__\"||u==\"__interfaces__\"||u==\"__properties__\"){continue}if(i.length!=2)i+=\", \\n\";i+=t+u+\" : \"+js.Boot.__string_rec(e[u],t)}t=t.substring(1);i+=\"\\n\"+t+\"}\";return i;case\"function\":return\"
\";else if(typeof console!=\"undefined\"&&console.log!=null)console.log(n)};js.Boot.__clear_trace=function(){var e=document.getElementById(\"haxe:trace\");if(e!=null)e.innerHTML=\"\"};js.Boot.isClass=function(e){return e.__name__};js.Boot.isEnum=function(e){return e.__ename__};js.Boot.getClass=function(e){return e.__class__};js.Boot.__string_rec=function(e,t){if(e==null)return\"null\";if(t.length>=5)return\"<...>\";var n=typeof e;if(n==\"function\"&&(e.__name__||e.__ename__))n=\"object\";switch(n){case\"object\":if(e instanceof Array){if(e.__enum__){if(e.length==2)return e[0];var i=e[0]+\"(\";t+=\"\\t\";var o=2,s=e.length;while(o0?\",\":\"\")+js.Boot.__string_rec(e[c],t)}i+=\"]\";return i}var l;try{l=e.toString}catch(e){return\"???\"}if(l!=null&&l!=Object.toString){var d=e.toString();if(d!=\"[object Object]\")return d}var u=null;var i=\"{\\n\";t+=\"\\t\";var h=e.hasOwnProperty!=null;for(var u in e){if(h&&!e.hasOwnProperty(u)){continue}if(u==\"prototype\"||u==\"__class__\"||u==\"__super__\"||u==\"__interfaces__\"||u==\"__properties__\"){continue}if(i.length!=2)i+=\", \\n\";i+=t+u+\" : \"+js.Boot.__string_rec(e[u],t)}t=t.substring(1);i+=\"\\n\"+t+\"}\";return i;case\"function\":return\"
\").replace(/^\\s/,\" \").replace(/\\s$/,\" \").replace(/\\s\\s/g,\" \");if(e.indexOf(\"
\")>-1){e=`
${e}
`}return e}function Py(e){return e.replace(/(\\s+)<\\/span>/g,(e,t)=>{if(t.length==1){return\" \"}return t})}const Sy=[\"figcaption\",\"li\"];function Iy(e){let t=\"\";if(e.is(\"text\")||e.is(\"textProxy\")){t=e.data}else if(e.is(\"img\")&&e.hasAttribute(\"alt\")){t=e.getAttribute(\"alt\")}else{let n=null;for(const i of e.getChildren()){const e=Iy(i);if(n&&(n.is(\"containerElement\")||i.is(\"containerElement\"))){if(Sy.includes(n.name)||Sy.includes(i.name)){t+=\"\\n\"}else{t+=\"\\n\\n\"}}t+=e;n=i}}return t}class Oy extends Dw{static get pluginName(){return\"Clipboard\"}init(){const e=this.editor;const t=e.model.document;const n=e.editing.view;const i=n.document;this._htmlDataProcessor=new Ap(i);n.addObserver(Ty);this.listenTo(i,\"clipboardInput\",t=>{if(e.isReadOnly){t.stop()}},{priority:\"highest\"});this.listenTo(i,\"clipboardInput\",(e,t)=>{const i=t.dataTransfer;let o=\"\";if(i.getData(\"text/html\")){o=Py(i.getData(\"text/html\"))}else if(i.getData(\"text/plain\")){o=Ey(i.getData(\"text/plain\"))}o=this._htmlDataProcessor.toView(o);const s=new er(this,\"inputTransformation\");this.fire(s,{content:o,dataTransfer:i});if(s.stop.called){e.stop()}n.scrollToTheSelection()},{priority:\"low\"});this.listenTo(this,\"inputTransformation\",(e,t)=>{if(!t.content.isEmpty){const n=this.editor.data;const i=this.editor.model;const o=n.toModel(t.content,\"$clipboardHolder\");if(o.childCount==0){return}i.insertContent(o);e.stop()}},{priority:\"low\"});function o(n,o){const s=o.dataTransfer;o.preventDefault();const r=e.data.toView(e.model.getSelectedContent(t.selection));i.fire(\"clipboardOutput\",{dataTransfer:s,content:r,method:n.name})}this.listenTo(i,\"copy\",o,{priority:\"low\"});this.listenTo(i,\"cut\",(t,n)=>{if(e.isReadOnly){n.preventDefault()}else{o(t,n)}},{priority:\"low\"});this.listenTo(i,\"clipboardOutput\",(n,i)=>{if(!i.content.isEmpty){i.dataTransfer.setData(\"text/html\",this._htmlDataProcessor.toData(i.content));i.dataTransfer.setData(\"text/plain\",Iy(i.content))}if(i.method==\"cut\"){e.model.deleteContent(t.selection)}},{priority:\"low\"})}}class Ny extends zw{execute(){const e=this.editor.model;const t=e.document;e.change(n=>{Ly(this.editor.model,n,t.selection,e.schema);this.fire(\"afterExecute\",{writer:n})})}}function Ly(e,t,n,i){const o=n.isCollapsed;const s=n.getFirstRange();const r=s.start.parent;const a=s.end.parent;if(i.isLimit(r)||i.isLimit(a)){if(!o&&r==a){e.deleteContent(n)}return}if(o){const e=Hk(t.model.schema,n.getAttributes());Ry(t,s.start);t.setSelectionAttribute(e)}else{const i=!(s.start.isAtStart&&s.end.isAtEnd);const o=r==a;e.deleteContent(n,{leaveUnmerged:i});if(i){if(o){Ry(t,n.focus)}else{t.setSelection(a,0)}}}}function Ry(e,t){e.split(t);e.setSelection(t.parent.nextSibling,0)}class Dy extends Dw{static get pluginName(){return\"Enter\"}init(){const e=this.editor;const t=e.editing.view;const n=t.document;t.addObserver(Gk);e.commands.add(\"enter\",new Ny(e));this.listenTo(n,\"enter\",(n,i)=>{i.preventDefault();if(i.isSoft){return}e.execute(\"enter\");t.scrollToTheSelection()},{priority:\"low\"})}}class jy extends zw{execute(){const e=this.editor.model;const t=e.schema.getLimitElement(e.document.selection);e.change(e=>{e.setSelection(t,\"in\")})}}const zy=Dl(\"Ctrl+A\");class By extends Dw{static get pluginName(){return\"SelectAllEditing\"}init(){const e=this.editor;const t=e.editing.view;const n=t.document;e.commands.add(\"selectAll\",new jy(e));this.listenTo(n,\"keydown\",(t,n)=>{if(Rl(n)===zy){e.execute(\"selectAll\");n.preventDefault()}})}}var Vy='';class Fy extends Dw{static get pluginName(){return\"SelectAllUI\"}init(){const e=this.editor;e.ui.componentFactory.add(\"selectAll\",t=>{const n=e.commands.get(\"selectAll\");const i=new sw(t);const o=t.t;i.set({label:o(\"Select all\"),icon:Vy,keystroke:\"Ctrl+A\",tooltip:true});i.bind(\"isOn\",\"isEnabled\").to(n,\"value\",\"isEnabled\");this.listenTo(i,\"execute\",()=>{e.execute(\"selectAll\");e.editing.view.focus()});return i})}}class Hy extends Dw{static get requires(){return[By,Fy]}static get pluginName(){return\"SelectAll\"}}class Uy{constructor(e,t=20){this.model=e;this.size=0;this.limit=t;this.isLocked=false;this._changeCallback=(e,t)=>{if(t.type!=\"transparent\"&&t!==this._batch){this._reset(true)}};this._selectionChangeCallback=()=>{this._reset()};this.model.document.on(\"change\",this._changeCallback);this.model.document.selection.on(\"change:range\",this._selectionChangeCallback);this.model.document.selection.on(\"change:attribute\",this._selectionChangeCallback)}get batch(){if(!this._batch){this._batch=this.model.createBatch()}return this._batch}input(e){this.size+=e;if(this.size>=this.limit){this._reset(true)}}lock(){this.isLocked=true}unlock(){this.isLocked=false}destroy(){this.model.document.off(\"change\",this._changeCallback);this.model.document.selection.off(\"change:range\",this._selectionChangeCallback);this.model.document.selection.off(\"change:attribute\",this._selectionChangeCallback)}_reset(e){if(!this.isLocked||e){this._batch=null;this.size=0}}}class Wy extends zw{constructor(e,t){super(e);this._buffer=new Uy(e.model,t);this._batches=new WeakSet}get buffer(){return this._buffer}destroy(){super.destroy();this._buffer.destroy()}execute(e={}){const t=this.editor.model;const n=t.document;const i=e.text||\"\";const o=i.length;const s=e.range?t.createSelection(e.range):n.selection;const r=e.resultRange;t.enqueueChange(this._buffer.batch,e=>{this._buffer.lock();t.deleteContent(s);if(i){t.insertContent(e.createText(i,n.selection.getAttributes()),s)}if(r){e.setSelection(r)}else if(!s.is(\"documentSelection\")){e.setSelection(s)}this._buffer.unlock();this._buffer.input(o);this._batches.add(this._buffer.batch)})}}function $y(e){let t=null;const n=e.model;const i=e.editing.view;const o=e.commands.get(\"input\");if(Tl.isAndroid){i.document.on(\"beforeinput\",(e,t)=>s(t),{priority:\"lowest\"})}else{i.document.on(\"keydown\",(e,t)=>s(t),{priority:\"lowest\"})}i.document.on(\"compositionstart\",r,{priority:\"lowest\"});i.document.on(\"compositionend\",()=>{t=n.createSelection(n.document.selection)},{priority:\"lowest\"});function s(e){const s=n.document;const r=i.document.isComposing;const c=t&&t.isEqual(s.selection);t=null;if(!o.isEnabled){return}if(Yy(e)||s.selection.isCollapsed){return}if(r&&e.keyCode===229){return}if(!r&&e.keyCode===229&&c){return}a()}function r(){const e=n.document;const t=e.selection.rangeCount===1?e.selection.getFirstRange().isFlat:true;if(e.selection.isCollapsed||t){return}a()}function a(){const e=o.buffer;e.lock();n.enqueueChange(e.batch,()=>{n.deleteContent(n.document.selection)});e.unlock()}}const qy=[Rl(\"arrowUp\"),Rl(\"arrowRight\"),Rl(\"arrowDown\"),Rl(\"arrowLeft\"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let e=112;e<=135;e++){qy.push(e)}function Yy(e){if(e.ctrlKey){return true}return qy.includes(e.keyCode)}function Gy(e,t){const n=[];let i=0;let o;e.forEach(e=>{if(e==\"equal\"){s();i++}else if(e==\"insert\"){if(r(\"insert\")){o.values.push(t[i])}else{s();o={type:\"insert\",index:i,values:[t[i]]}}i++}else{if(r(\"delete\")){o.howMany++}else{s();o={type:\"delete\",index:i,howMany:1}}}});s();return n;function s(){if(o){n.push(o);o=null}}function r(e){return o&&o.type==e}}function Jy(e){if(e.length==0){return false}for(const t of e){if(t.type===\"children\"&&!Ky(t)){return true}}return false}function Ky(e){if(e.newChildren.length-e.oldChildren.length!=1){return}const t=vd(e.oldChildren,e.newChildren,Qy);const n=Gy(t,e.newChildren);if(n.length>1){return}const i=n[0];if(!(!!i.values[0]&&i.values[0].is(\"text\"))){return}return i}function Qy(e,t){if(!!e&&e.is(\"text\")&&!!t&&t.is(\"text\")){return e.data===t.data}else{return e===t}}function Xy(e){e.editing.view.document.on(\"mutations\",(t,n,i)=>{new Zy(e).handle(n,i)})}class Zy{constructor(e){this.editor=e;this.editing=this.editor.editing}handle(e,t){if(Jy(e)){this._handleContainerChildrenMutations(e,t)}else{for(const n of e){this._handleTextMutation(n,t);this._handleTextNodeInsertion(n)}}}_handleContainerChildrenMutations(e,t){const n=ex(e);if(!n){return}const i=this.editor.editing.view.domConverter;const o=i.mapViewToDom(n);const s=new jd(this.editor.editing.view.document);const r=this.editor.data.toModel(s.domToView(o)).getChild(0);const a=this.editor.editing.mapper.toModelElement(n);if(!a){return}const c=Array.from(r.getChildren());const l=Array.from(a.getChildren());const d=c[c.length-1];const u=l[l.length-1];if(d&&d.is(\"softBreak\")&&u&&!u.is(\"softBreak\")){c.pop()}const h=this.editor.model.schema;if(!tx(c,h)||!tx(l,h)){return}const f=c.map(e=>e.is(\"text\")?e.data:\"@\").join(\"\").replace(/\\u00A0/g,\" \");const m=l.map(e=>e.is(\"text\")?e.data:\"@\").join(\"\").replace(/\\u00A0/g,\" \");if(m===f){return}const g=vd(m,f);const{firstChangeAt:p,insertions:b,deletions:w}=nx(g);let _=null;if(t){_=this.editing.mapper.toModelRange(t.getFirstRange())}const v=f.substr(p,b);const k=this.editor.model.createRange(this.editor.model.createPositionAt(a,p),this.editor.model.createPositionAt(a,p+w));this.editor.execute(\"input\",{text:v,range:k,resultRange:_})}_handleTextMutation(e,t){if(e.type!=\"text\"){return}const n=e.newText.replace(/\\u00A0/g,\" \");const i=e.oldText.replace(/\\u00A0/g,\" \");if(i===n){return}const o=vd(i,n);const{firstChangeAt:s,insertions:r,deletions:a}=nx(o);let c=null;if(t){c=this.editing.mapper.toModelRange(t.getFirstRange())}const l=this.editing.view.createPositionAt(e.node,s);const d=this.editing.mapper.toModelPosition(l);const u=this.editor.model.createRange(d,d.getShiftedBy(a));const h=n.substr(s,r);this.editor.execute(\"input\",{text:h,range:u,resultRange:c})}_handleTextNodeInsertion(e){if(e.type!=\"children\"){return}const t=Ky(e);const n=this.editing.view.createPositionAt(e.node,t.index);const i=this.editing.mapper.toModelPosition(n);const o=t.values[0].data;this.editor.execute(\"input\",{text:o.replace(/\\u00A0/g,\" \"),range:this.editor.model.createRange(i)})}}function ex(e){const t=e.map(e=>e.node).reduce((e,t)=>e.getCommonAncestor(t,{includeSelf:true}));if(!t){return}return t.getAncestors({includeSelf:true,parentFirst:true}).find(e=>e.is(\"containerElement\")||e.is(\"rootElement\"))}function tx(e,t){return e.every(e=>t.isInline(e))}function nx(e){let t=null;let n=null;for(let i=0;i