From b2442438d417b719ebddc284348b1a2a9925bc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Sun, 17 Aug 2025 13:15:35 +0200 Subject: [PATCH] Fix chained assignments, also reorganized TestIncDec tests --- .../jpexs/decompiler/flash/BaseLocalData.java | 2 + .../instructions/InstructionDefinition.java | 943 ++++++------------ .../abc/avm2/instructions/SetTypeIns.java | 48 +- .../localregs/GetLocalTypeIns.java | 312 +++--- .../abc/avm2/instructions/stack/DupIns.java | 1 + .../testdata/as3_new/bin/as3_new.air.swf | Bin 33947 -> 34164 bytes .../testdata/as3_new/bin/as3_new.flex.swf | Bin 44437 -> 44584 bytes libsrc/ffdec_lib/testdata/as3_new/src/Main.as | 5 +- .../src/tests/TestChainedAssignments1.as | 15 + .../src/tests/TestChainedAssignments2.as | 19 + .../src/tests/TestChainedAssignments3.as | 18 + .../src/tests/TestChainedAssignments4.as | 18 + 12 files changed, 583 insertions(+), 798 deletions(-) create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments1.as create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments2.as create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments3.as create mode 100644 libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments4.as diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java index 7d97dee6a..bd2002540 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/BaseLocalData.java @@ -21,7 +21,9 @@ import com.jpexs.decompiler.graph.GraphSourceItem; import com.jpexs.decompiler.graph.SecondPassData; import com.jpexs.helpers.Reference; import java.util.HashSet; +import java.util.LinkedHashMap; import java.util.LinkedHashSet; +import java.util.Map; import java.util.Set; /** diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java index 558a99efe..a1b4695a3 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/InstructionDefinition.java @@ -767,11 +767,11 @@ public abstract class InstructionDefinition implements Serializable { - // ==> TestIncDec5 with result AIR is in GetLocalTypeIns + //TestIncDec5 no result AIR /* - var _temp_5:* = a; + var _temp_5:* = a; _temp_5.attrib = _temp_5.attrib + 1; */ if (value instanceof IncrementAVM2Item @@ -848,674 +848,393 @@ public abstract class InstructionDefinition implements Serializable { if (obj instanceof LocalRegAVM2Item) { LocalRegAVM2Item objLocalReg = (LocalRegAVM2Item) obj; - //TestIncDec3 with result - Class[] expectedClasses = new Class[]{ - //PushItem.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - PushItem.class, - SetLocalAVM2Item.class - }; - /* - //var _temp_4:* = §§findproperty(trace); - var _temp_1:* = a; - var _loc2_:* = _temp_1; - var _temp_2:* = 2; - var _loc3_:int = _temp_2; - var _temp_3:* = _temp_1[_temp_2] + 1; - var _loc4_:* = _temp_3; + //var _temp_5:* = §§findproperty(trace); + var _loc4_:*; + var _loc2_:*; + var _loc3_:int; + var _temp_4:* = _loc4_ = (_loc2_ = a)[_loc3_ = 2] + 1; _loc2_[_loc3_] = _loc4_; - trace(_temp_3); + trace(_temp_4); */ - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!stack.isEmpty() && stack.peek() instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) stack.peek(); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocValue.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.name instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocName = (SetLocalAVM2Item) fm.name; + if (valueLocalReg.regIndex == setLocValue.regIndex + && objLocalReg.regIndex == setLocObj.regIndex + && nameLocalReg.regIndex == setLocName.regIndex) { + getProp.object = setLocObj.value; + fm.name = setLocName.value; + stack.pop(); + if (isIncrement) { + stack.push(new PreIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.push(new PreDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - PushItem pushValue = (PushItem) output.get(output.size() - 2); - SetTemporaryItem setTempValue = (SetTemporaryItem) output.get(output.size() - 3); - SetLocalAVM2Item setLocalName = (SetLocalAVM2Item) output.get(output.size() - 4); - SetTemporaryItem setTempName = (SetTemporaryItem) output.get(output.size() - 5); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 6); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 7); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof DuplicateItem)) { - break; - } - if (!(setLocalValue.value.value instanceof IncrementAVM2Item - || setLocalValue.value.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value.value instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value.value; - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!(fm.name instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - DuplicateSourceItem tempName = (DuplicateSourceItem) fm.name; - if (tempName.tempIndex != setTempName.tempIndex) { - break; - } - DuplicateItem dupValue = (DuplicateItem) setLocalValue.value; - if (dupValue.tempIndex != setTempValue.tempIndex) { - break; - } - - if (!(pushValue.value instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem dupSourceValue = (DuplicateSourceItem) pushValue.value; - if (dupSourceValue.tempIndex != dupValue.tempIndex) { - break; - } - if (setLocalName.regIndex != nameLocalReg.regIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - - fm.name = setTempName.value; - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.push(new PreIncrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } else { - stack.push(new PreDecrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } - return; - } while(false); + } } - - //TestIncDec3 no result - expectedClasses = new Class[]{ - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetLocalAVM2Item.class - }; - /* - var _temp_7:* = a; - var _loc2_:* = _temp_7; - var _temp_8:* = 2; - var _loc3_:int = _temp_8; - var _loc4_:* = _temp_7[_temp_8] + 1; + var _loc2_:* = a; + var _loc3_:int; + var _loc4_:* = _loc2_[_loc3_ = 2] + 1; _loc2_[_loc3_] = _loc4_; */ - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) output.get(output.size() - 1); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocValue.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.name instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocName = (SetLocalAVM2Item) fm.name; + if (valueLocalReg.regIndex == setLocValue.regIndex + && objLocalReg.regIndex == setLocObj.regIndex + && nameLocalReg.regIndex == setLocName.regIndex) { + getProp.object = setLocObj.value; + fm.name = setLocName.value; + output.remove(output.size() - 1); + if (isIncrement) { + stack.addToOutput(new PreIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.addToOutput(new PreDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - SetLocalAVM2Item setLocalName = (SetLocalAVM2Item) output.get(output.size() - 2); - SetTemporaryItem setTempName = (SetTemporaryItem) output.get(output.size() - 3); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 4); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 5); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (setLocalName.regIndex != nameLocalReg.regIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof IncrementAVM2Item - || setLocalValue.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value; - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!(fm.name instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - DuplicateSourceItem tempName = (DuplicateSourceItem) fm.name; - if (tempName.tempIndex != setTempName.tempIndex) { - break; - } - fm.name = setTempName.value; - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.addToOutput(new PreIncrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } else { - stack.addToOutput(new PreDecrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } - return; - } while(false); + } } - //TestIncDec4 with result - expectedClasses = new Class[]{ - //PushItem.class - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - PushItem.class, - SetLocalAVM2Item.class - }; + //TestIncDec4 with result /* - //var _temp_4:* = §§findproperty(trace); - var _temp_1:* = a; - var _loc2_:* = _temp_1; - var _temp_2:* = 2; - var _loc3_:int = _temp_2; - var _temp_3:* = Number(_temp_1[_temp_2]); + var _temp_4:* = §§findproperty(trace); + var _loc2_:*; + var _loc3_:int; + var _temp_3:* = Number((_loc2_ = a)[_loc3_ = 2]); var _loc4_:* = _temp_3 + 1; _loc2_[_loc3_] = _loc4_; trace(_temp_3); */ - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) output.get(output.size() - 1); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof DuplicateItem) { + DuplicateItem d = (DuplicateItem) setLocValue.value.value; + if (output.size() >= 2 + && output.get(output.size() - 2) instanceof PushItem + && output.get(output.size() - 2).value instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) output.get(output.size() - 2).value; + if (ds.tempIndex == d.tempIndex) { + if (output.size() >= 3 && output.get(output.size() - 3) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 3); + if (st.tempIndex == d.tempIndex) { + if (st.value instanceof ConvertAVM2Item) { + if (st.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) st.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.name instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocName = (SetLocalAVM2Item) fm.name; + if (valueLocalReg.regIndex == setLocValue.regIndex + && objLocalReg.regIndex == setLocObj.regIndex + && nameLocalReg.regIndex == setLocName.regIndex) { + getProp.object = setLocObj.value; + fm.name = setLocName.value; + output.remove(output.size() - 1); + output.remove(output.size() - 1); + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.push(new PostIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.push(new PostDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } + } + } + } + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - PushItem pushValue = (PushItem) output.get(output.size() - 2); - SetTemporaryItem setTempValue = (SetTemporaryItem) output.get(output.size() - 3); - SetLocalAVM2Item setLocalName = (SetLocalAVM2Item) output.get(output.size() - 4); - SetTemporaryItem setTempName = (SetTemporaryItem) output.get(output.size() - 5); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 6); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 7); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof IncrementAVM2Item - || setLocalValue.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value instanceof DuplicateItem)) { - break; - } - if (!(setLocalValue.value.value.value.getNotCoercedNoDup() instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value.value.getNotCoercedNoDup(); - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!(fm.name instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - DuplicateSourceItem tempName = (DuplicateSourceItem) fm.name; - if (tempName.tempIndex != setTempName.tempIndex) { - break; - } - DuplicateItem dupValue = (DuplicateItem) setLocalValue.value.value; - if (dupValue.tempIndex != setTempValue.tempIndex) { - break; - } - - if (!(pushValue.value instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem dupSourceValue = (DuplicateSourceItem) pushValue.value; - if (dupSourceValue.tempIndex != dupValue.tempIndex) { - break; - } - if (setLocalName.regIndex != nameLocalReg.regIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - - fm.name = setTempName.value; - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.push(new PostIncrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } else { - stack.push(new PostDecrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } - return; - } while(false); + } } - + //TestIncDec4 no result AIR - expectedClasses = new Class[]{ - //PushItem.class - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetLocalAVM2Item.class - }; - /* - var _temp_7:* = a; - var _loc2_:* = _temp_7; - var _temp_8:* = 2; - var _loc3_:int = _temp_8; - var _loc4_:* = Number(_temp_7[_temp_8]) + 1; + var _loc2_:* = a; + var _loc3_:int; + var _loc4_:* = Number(_loc2_[_loc3_ = 2]) + 1; _loc2_[_loc3_] = _loc4_; */ - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) output.get(output.size() - 1); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof ConvertAVM2Item) { + if (setLocValue.value.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocValue.value.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.name instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocName = (SetLocalAVM2Item) fm.name; + if (valueLocalReg.regIndex == setLocValue.regIndex + && objLocalReg.regIndex == setLocObj.regIndex + && nameLocalReg.regIndex == setLocName.regIndex) { + getProp.object = setLocObj.value; + fm.name = setLocName.value; + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.addToOutput(new PostIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.addToOutput(new PostDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - SetLocalAVM2Item setLocalName = (SetLocalAVM2Item) output.get(output.size() - 2); - SetTemporaryItem setTempName = (SetTemporaryItem) output.get(output.size() - 3); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 4); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 5); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof IncrementAVM2Item - || setLocalValue.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value instanceof ConvertAVM2Item)) { - break; - } - if (!(setLocalValue.value.value.value instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value.value; - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!(fm.name instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - DuplicateSourceItem tempName = (DuplicateSourceItem) fm.name; - if (tempName.tempIndex != setTempName.tempIndex) { - break; - } - if (setLocalName.regIndex != nameLocalReg.regIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - - fm.name = setTempName.value; - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.addToOutput(new PostIncrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } else { - stack.addToOutput(new PostDecrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } - return; - } while(false); + } } - + //TestIncDec5 with result - expectedClasses = new Class[]{ - //PushItem.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - PushItem.class, - SetLocalAVM2Item.class - }; - /* - //var _temp_3:* = §§findproperty(trace); - var _temp_1:* = a; - var _loc2_:* = _temp_1; - var _temp_2:* = _temp_1.attrib + 1; - var _loc3_:* = _temp_2; + var _temp_4:* = §§findproperty(trace); + var _loc3_:*; + var _loc2_:*; + var _temp_3:* = _loc3_ = (_loc2_ = a).attrib + 1; _loc2_.attrib = _loc3_; - trace(_temp_2); + trace(_temp_3); */ - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!stack.isEmpty() && stack.peek() instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) stack.peek(); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocValue.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.compareSame(multiname)) { + if (valueLocalReg.regIndex == setLocValue.regIndex + && objLocalReg.regIndex == setLocObj.regIndex) { + getProp.object = setLocObj.value; + stack.pop(); + if (isIncrement) { + stack.push(new PreIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.push(new PreDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - PushItem pushValue = (PushItem) output.get(output.size() - 2); - SetTemporaryItem setTempValue = (SetTemporaryItem) output.get(output.size() - 3); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 4); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 5); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof DuplicateItem)) { - break; - } - if (!(setLocalValue.value.value instanceof IncrementAVM2Item - || setLocalValue.value.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value.value instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value.value; - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!fm.compareSame(multiname)) { - break; - } - - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - - DuplicateItem dupValue = (DuplicateItem) setLocalValue.value; - if (dupValue.tempIndex != setTempValue.tempIndex) { - break; - } - - if (!(pushValue.value instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem dupSourceValue = (DuplicateSourceItem) pushValue.value; - if (dupSourceValue.tempIndex != dupValue.tempIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.push(new PreIncrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } else { - stack.push(new PreDecrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } - return; - } while(false); - } + } + } + //TestIncDec5 no result - expectedClasses = new Class[]{ - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetLocalAVM2Item.class - }; - /* - var _temp_5:* = a; - var _loc2_:* = _temp_5; - var _loc3_:* = _temp_5.attrib + 1; + var _loc2_:* = a; + var _loc3_:* = _loc2_.attrib + 1; _loc2_.attrib = _loc3_; */ - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) output.get(output.size() - 1); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocValue.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.compareSame(multiname)) { + if (valueLocalReg.regIndex == setLocValue.regIndex + && objLocalReg.regIndex == setLocObj.regIndex) { + getProp.object = setLocObj.value; + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.addToOutput(new PreIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.addToOutput(new PreDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 2); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 3); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof IncrementAVM2Item - || setLocalValue.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value; - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!fm.compareSame(multiname)) { - break; - } - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.addToOutput(new PreIncrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } else { - stack.addToOutput(new PreDecrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } - return; - } while(false); + } } - //TestIncDec6 with result - expectedClasses = new Class[]{ - //PushItem.class - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetTemporaryItem.class, - PushItem.class, - SetLocalAVM2Item.class - }; + //TestIncDec6 with result /* - //var _temp_3:* = §§findproperty(trace); - var _temp_1:* = a; - var _loc2_:* = _temp_1; - var _temp_2:* = Number(_temp_1.attrib); + var _temp_3:* = §§findproperty(trace); + var _loc2_:*; + var _temp_2:* = Number((_loc2_ = a).attrib); var _loc3_:* = _temp_2 + 1; _loc2_.attrib = _loc3_; trace(_temp_2); */ - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) output.get(output.size() - 1); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof DuplicateItem) { + DuplicateItem d = (DuplicateItem) setLocValue.value.value; + if (output.size() >= 2 + && output.get(output.size() - 2) instanceof PushItem + && output.get(output.size() - 2).value instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) output.get(output.size() - 2).value; + if (ds.tempIndex == d.tempIndex) { + if (output.size() >= 3 && output.get(output.size() - 3) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 3); + if (st.tempIndex == d.tempIndex) { + if (st.value instanceof ConvertAVM2Item) { + if (st.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) st.value.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.compareSame(multiname)) { + if (objLocalReg.regIndex == setLocObj.regIndex + && valueLocalReg.regIndex == setLocValue.regIndex) { + getProp.object = setLocObj.value; + output.remove(output.size() - 1); + output.remove(output.size() - 1); + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.push(new PostIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.push(new PostDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } + } + } + } + } + } + } } } - - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 1); - PushItem pushValue = (PushItem) output.get(output.size() - 2); - SetTemporaryItem setTempValue = (SetTemporaryItem) output.get(output.size() - 3); - SetLocalAVM2Item setLocalObj = (SetLocalAVM2Item) output.get(output.size() - 4); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 5); - - - if (setLocalValue.regIndex != valueLocalReg.regIndex) { - break; - } - if (!(setLocalValue.value instanceof IncrementAVM2Item - || setLocalValue.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value instanceof DuplicateItem)) { - break; - } - if (!(setLocalValue.value.value.value.getNotCoercedNoDup() instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value.value.getNotCoercedNoDup(); - if (!(getProp.object instanceof DuplicateSourceItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - if (!fm.compareSame(multiname)) { - break; - } - DuplicateSourceItem tempObj = (DuplicateSourceItem) getProp.object; - if (tempObj.tempIndex != setTempObj.tempIndex) { - break; - } - - DuplicateItem dupValue = (DuplicateItem) setLocalValue.value.value; - if (dupValue.tempIndex != setTempValue.tempIndex) { - break; - } - - if (!(pushValue.value instanceof DuplicateSourceItem)) { - break; - } - DuplicateSourceItem dupSourceValue = (DuplicateSourceItem) pushValue.value; - if (dupSourceValue.tempIndex != dupValue.tempIndex) { - break; - } - if (setLocalObj.regIndex != objLocalReg.regIndex) { - break; - } - - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.push(new PostIncrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } else { - stack.push(new PostDecrementAVM2Item(setLocalValue.value.getSrc(), setLocalValue.value.lineStartItem, getProp)); - } - return; - } while(false); + } } + //TestIncDec10 with result + /* + var _temp_3:* = §§findproperty(trace); + var _loc1_:*; + var _temp_2:* = (_loc1_ = this).attrib; + var _loc2_:* = _temp_2 + 1; + _loc1_.attrib = _loc2_; + trace(_temp_2); + */ + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocValue = (SetLocalAVM2Item) output.get(output.size() - 1); + if (setLocValue.value instanceof IncrementAVM2Item + || setLocValue.value instanceof DecrementAVM2Item) { + boolean isIncrement = setLocValue.value instanceof IncrementAVM2Item; + if (setLocValue.value.value instanceof DuplicateItem) { + DuplicateItem d = (DuplicateItem) setLocValue.value.value; + if (output.size() >= 2 + && output.get(output.size() - 2) instanceof PushItem + && output.get(output.size() - 2).value instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) output.get(output.size() - 2).value; + if (ds.tempIndex == d.tempIndex) { + if (output.size() >= 3 && output.get(output.size() - 3) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 3); + if (st.tempIndex == d.tempIndex) { + if (st.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) st.value; + if (getProp.object instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocObj = (SetLocalAVM2Item) getProp.object; + if (getProp.propertyName instanceof FullMultinameAVM2Item) { + FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; + if (fm.compareSame(multiname)) { + if (objLocalReg.regIndex == setLocObj.regIndex + && valueLocalReg.regIndex == setLocValue.regIndex) { + getProp.object = setLocObj.value; + output.remove(output.size() - 1); + output.remove(output.size() - 1); + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.push(new PostIncrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } else { + stack.push(new PostDecrementAVM2Item(setLocValue.value.getSrc(), setLocValue.value.getLineStartItem(), getProp)); + } + return; + } + } + } + } + } + } + } + } + } + } + } + } + + + /*stack.moveToStack(output); if (!stack.isEmpty()) { GraphTargetItem checked = checkIncDec(false, multinameIndex, ins, localData, stack.peek(), valueLocalReg, nameLocalReg, objLocalReg); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/SetTypeIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/SetTypeIns.java index bc861d098..6d977358b 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/SetTypeIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/SetTypeIns.java @@ -20,12 +20,19 @@ import com.jpexs.decompiler.flash.abc.AVM2LocalData; import com.jpexs.decompiler.flash.abc.avm2.model.AVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.CoerceAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.ConvertAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.DecrementAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.GetPropertyAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.IncrementAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.LocalRegAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.SetLocalAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.operations.PreDecrementAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.operations.PreIncrementAVM2Item; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.TranslateStack; import com.jpexs.decompiler.graph.TypeItem; import com.jpexs.decompiler.graph.model.DuplicateItem; +import com.jpexs.decompiler.graph.model.DuplicateSourceItem; +import com.jpexs.decompiler.graph.model.SetTemporaryItem; import java.util.List; /** @@ -65,15 +72,48 @@ public interface SetTypeIns { * @param type Type */ public static void handleResult(GraphTargetItem value, TranslateStack stack, List output, AVM2LocalData localData, GraphTargetItem result, int regId, GraphTargetItem type) { + + GraphTargetItem notCoercedValue = value; + if ((value instanceof CoerceAVM2Item) || (value instanceof ConvertAVM2Item)) { + notCoercedValue = value.value; + } + + //TestChainedAssignments1 both AIR and nonair + if (notCoercedValue instanceof DuplicateItem) { + DuplicateItem d = (DuplicateItem) notCoercedValue; + stack.moveToStack(output); + if (!stack.isEmpty() && stack.peek() instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) stack.peek(); + if (ds.tempIndex == d.tempIndex) { + GraphTargetItem newValue = d.value; + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 1); + if (st.tempIndex == ds.tempIndex) { + output.remove(output.size() - 1); + } + } + + if ((value instanceof CoerceAVM2Item) || (value instanceof ConvertAVM2Item)) { + result.value.value = newValue; + } else { + result.value = newValue; + } + + stack.pop(); + stack.moveToStack(output); + stack.push(result); + return; + } + } + stack.finishBlock(output); + } + stack.addToOutput(result); if (true) { //FIXME?? return; } // - GraphTargetItem notCoercedValue = value; - if ((value instanceof CoerceAVM2Item) || (value instanceof ConvertAVM2Item)) { - notCoercedValue = value.value; - } + if (notCoercedValue instanceof DuplicateItem) { GraphTargetItem insideDup = notCoercedValue.value; diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/GetLocalTypeIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/GetLocalTypeIns.java index 2e4f8726c..539d2fdb5 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/GetLocalTypeIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/localregs/GetLocalTypeIns.java @@ -124,189 +124,8 @@ public abstract class GetLocalTypeIns extends InstructionDefinition { LocalRegAVM2Item result = new LocalRegAVM2Item(ins, localData.lineStartInstruction, regId, computedValue, type); - //TestIncDec5 with result AIR - /* - //var _temp_4:* = trace; - //var _temp_3:* = global; - var _temp_1:* = a; - var _temp_2:* = _temp_1.attrib + 1; - var _loc2_:* = _temp_2; - _temp_1.attrib = _temp_2; - _temp_4(_loc2_); - */ - stack.finishBlock(output); - Class[] expectedClasses = new Class[]{ - SetTemporaryItem.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetPropertyAVM2Item.class - }; - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; - } - } - - SetPropertyAVM2Item setProperty = (SetPropertyAVM2Item) output.get(output.size() - 1); - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 2); - SetTemporaryItem setTempValue = (SetTemporaryItem) output.get(output.size() - 3); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 4); - - - if (setLocalValue.regIndex != result.regIndex) { - break; - } - if (!(setLocalValue.value instanceof DuplicateItem)) { - break; - } - if (!(setLocalValue.value.value instanceof IncrementAVM2Item - || setLocalValue.value.value instanceof DecrementAVM2Item)) { - break; - } - if (!(setLocalValue.value.value.value instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setLocalValue.value.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocalValue.value.value.value; - if (!(getProp.object instanceof DuplicateItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - FullMultinameAVM2Item setFm = (FullMultinameAVM2Item) setProperty.propertyName; - - if (!fm.compareSame(setFm)) { - break; - } - - DuplicateItem dupObj = (DuplicateItem) getProp.object; - if (dupObj.tempIndex != setTempObj.tempIndex) { - break; - } - - DuplicateItem dupValue = (DuplicateItem) setLocalValue.value; - if (dupValue.tempIndex != setTempValue.tempIndex) { - break; - } - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.push(new PreIncrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } else { - stack.push(new PreDecrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } - return; - } while(false); - } - - //TestIncDec6 with result AIR - /* - //var _temp_4:* = trace; - //var _temp_3:* = global; - var _temp_1:* = a; - var _temp_2:* = _temp_1.attrib; - var _loc2_:* = _temp_2; - _temp_1.attrib = _temp_2 + 1; - _temp_4(_loc2_); - */ - expectedClasses = new Class[] { - SetTemporaryItem.class, - SetTemporaryItem.class, - SetLocalAVM2Item.class, - SetPropertyAVM2Item.class - }; - - if (output.size() >= expectedClasses.length) { - - loopout: do { - for (int i = 0; i < expectedClasses.length; i++) { - if (!expectedClasses[expectedClasses.length - 1 - i].isAssignableFrom(output.get(output.size() - 1 - i).getClass())) { - break loopout; - } - } - - SetPropertyAVM2Item setProperty = (SetPropertyAVM2Item) output.get(output.size() - 1); - SetLocalAVM2Item setLocalValue = (SetLocalAVM2Item) output.get(output.size() - 2); - SetTemporaryItem setTempValue = (SetTemporaryItem) output.get(output.size() - 3); - SetTemporaryItem setTempObj = (SetTemporaryItem) output.get(output.size() - 4); - - - if (setLocalValue.regIndex != result.regIndex) { - break; - } - if (!(setProperty.object instanceof DuplicateSourceItem)) { - break; - } - if (!(setProperty.value instanceof IncrementAVM2Item - || setProperty.value instanceof DecrementAVM2Item)) { - break; - } - - if (!(setProperty.value.value instanceof DuplicateSourceItem)) { - break; - } - - if (!(setProperty.value.value.value.getNotCoercedNoDup() instanceof GetPropertyAVM2Item)) { - break; - } - boolean isIncrement = setProperty.value instanceof IncrementAVM2Item; - - GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setProperty.value.value.value.getNotCoercedNoDup(); - if (!(getProp.object instanceof DuplicateItem)) { - break; - } - if (!(getProp.propertyName instanceof FullMultinameAVM2Item)) { - break; - } - FullMultinameAVM2Item fm = (FullMultinameAVM2Item) getProp.propertyName; - FullMultinameAVM2Item setFm = (FullMultinameAVM2Item) setProperty.propertyName; - - if (!fm.compareSame(setFm)) { - break; - } - - if (!(setLocalValue.value instanceof DuplicateItem)) { - break; - } - DuplicateSourceItem dupSourceObj = (DuplicateSourceItem) setProperty.object; - DuplicateItem dupObj = (DuplicateItem) getProp.object; - if (dupObj.tempIndex != setTempObj.tempIndex - || dupSourceObj.tempIndex != setTempObj.tempIndex) { - break; - } - - DuplicateSourceItem dupValue = (DuplicateSourceItem) setProperty.value.value; - DuplicateItem dupSourceValue = (DuplicateItem) setLocalValue.value; - if (dupValue.tempIndex != setTempValue.tempIndex - || dupSourceValue.tempIndex != setTempValue.tempIndex) { - break; - } - getProp.object = setTempObj.value; - for (int i = 0; i < expectedClasses.length; i++) { - output.remove(output.size() - 1); - } - stack.moveToStack(output); - if (isIncrement) { - stack.push(new PreIncrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } else { - stack.push(new PreDecrementAVM2Item(setLocalValue.value.value.getSrc(), setLocalValue.value.value.lineStartItem, getProp)); - } - return; - } while(false); - } - //TestIncDec7 AIR if (!output.isEmpty()) { GraphTargetItem lastOutput = output.get(output.size() - 1); @@ -324,6 +143,137 @@ public abstract class GetLocalTypeIns extends InstructionDefinition { } } + + //TestIncDec6 with result AIR + if (!output.isEmpty() && output.get(output.size() - 1) instanceof SetPropertyAVM2Item) { + SetPropertyAVM2Item setProp = (SetPropertyAVM2Item) output.get(output.size() - 1); + if (setProp.value instanceof IncrementAVM2Item + || setProp.value instanceof DecrementAVM2Item) { + boolean isIncrement = setProp.value instanceof IncrementAVM2Item; + if (setProp.value.value instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLoc = (SetLocalAVM2Item) setProp.value.value; + if (setLoc.regIndex == regId) { + if (setLoc.getSrc() instanceof AVM2Instruction) { + AVM2Instruction src = (AVM2Instruction) setLoc.getSrc(); + if (localData.getSetLocalUsages(localData.code.adr2pos(src.getAddress())).size() == 1) { + if (setLoc.value instanceof ConvertAVM2Item) { + if (setLoc.value.value instanceof GetPropertyAVM2Item) { + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLoc.value.value; + if (setProp.object instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) setProp.object; + if (getProp.object instanceof DuplicateItem) { + DuplicateItem d = (DuplicateItem) getProp.object; + if (output.size() >= 2 && output.get(output.size() - 2) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 2); + if (st.tempIndex == d.tempIndex) { + getProp.object = st.value; + output.remove(output.size() - 1); + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.push(new PostIncrementAVM2Item(setProp.value.getSrc(), setProp.value.getLineStartItem(), getProp)); + } else { + stack.push(new PostDecrementAVM2Item(setProp.value.getSrc(), setProp.value.getLineStartItem(), getProp)); + } + return; + } + } + } + } + } + } + } + } + } + } + } + } + + //TestChainedAssignments1 + /* + trace("c = b = a = 5;"); + var a:int = 0; + var b:int = 0; + var c:int = 0; + var _loc4_:*; + a = _loc4_ = 5; + b = _loc4_ = _loc4_; + c = _loc4_; + */ + stack.moveToStack(output); + if (!output.isEmpty()) { + //chained assignments + if ((output.get(output.size() - 1) instanceof SetTypeAVM2Item)) { + GraphTargetItem setItem = output.get(output.size() - 1); + if (setItem.value.getNotCoercedNoDup() instanceof SetLocalAVM2Item) { + SetLocalAVM2Item setLocal = (SetLocalAVM2Item) setItem.value.getNotCoercedNoDup(); + if (setLocal.regIndex == regId) { + int setLocalIp = localData.code.adr2pos(setLocal.getSrc().getAddress()); + if (localData.getSetLocalUsages(setLocalIp).size() == 1) { + + + //TestIncDec5 with result AIR + if (setItem instanceof SetPropertyAVM2Item + && (setLocal.value instanceof IncrementAVM2Item + || setLocal.value instanceof DecrementAVM2Item + )) { + SetPropertyAVM2Item setProp = (SetPropertyAVM2Item) setItem; + boolean isIncrement = setLocal.value instanceof IncrementAVM2Item; + if (setLocal.value.value instanceof GetPropertyAVM2Item) { + + //TestIncDec6 with result AIR + /* + var _temp_4:* = trace; + var _temp_3:* = global; + var _temp_1:* = a; + var _loc2_:Number; + _temp_1.attrib = (_loc2_ = _temp_1.attrib) + 1; + _temp_4(_loc2_); + */ + GetPropertyAVM2Item getProp = (GetPropertyAVM2Item) setLocal.value.value; + if (getProp.object instanceof DuplicateItem) { + DuplicateItem d = (DuplicateItem) getProp.object; + if (setProp.object instanceof DuplicateSourceItem) { + DuplicateSourceItem ds = (DuplicateSourceItem) setProp.object; + if (ds.tempIndex == d.tempIndex) { + if (output.size() >= 2 && output.get(output.size() - 2) instanceof SetTemporaryItem) { + SetTemporaryItem st = (SetTemporaryItem) output.get(output.size() - 2); + if (st.tempIndex == d.tempIndex) { + getProp.object = st.value; + output.remove(output.size() - 1); + output.remove(output.size() - 1); + stack.moveToStack(output); + if (isIncrement) { + stack.push(new PreIncrementAVM2Item(setLocal.value.getSrc(), setLocal.value.getLineStartItem(), getProp)); + } else { + stack.push(new PreDecrementAVM2Item(setLocal.value.getSrc(), setLocal.value.getLineStartItem(), getProp)); + } + return; + } + } + } + } + } + } + } + + if ((setItem.value instanceof CoerceAVM2Item) || (setItem.value instanceof ConvertAVM2Item)) { + setItem.value.value = setLocal.value; + } else { + setItem.value = setLocal.value; + } + output.remove(output.size() - 1); + stack.moveToStack(output); + + stack.push(setItem); + return; + } + } + } + } + stack.finishBlock(output); + } + stack.moveToStack(output); stack.push(result); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/stack/DupIns.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/stack/DupIns.java index 454b8f42c..ddcd92e47 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/stack/DupIns.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/abc/avm2/instructions/stack/DupIns.java @@ -24,6 +24,7 @@ import com.jpexs.decompiler.flash.abc.avm2.graph.AVM2GraphTargetDialect; import com.jpexs.decompiler.flash.abc.avm2.instructions.AVM2Instruction; import com.jpexs.decompiler.flash.abc.avm2.instructions.InstructionDefinition; import com.jpexs.decompiler.flash.abc.avm2.model.NewActivationAVM2Item; +import com.jpexs.decompiler.flash.abc.avm2.model.SetTypeAVM2Item; import com.jpexs.decompiler.flash.abc.avm2.model.clauses.ExceptionAVM2Item; import com.jpexs.decompiler.graph.GraphTargetItem; import com.jpexs.decompiler.graph.TranslateStack; diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 7999b4f5e0ad0b1921ef950d55f3fd8b0e0e223d..8abbca18d393aa5d4a302f25bdbf82322ea13daf 100644 GIT binary patch literal 34164 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 USk9rd8ZY=`Xbc|yKd!h!c4z7i4*&oF literal 33947 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 LC_Mas5w%T3fR;>4 diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index e2478e0e0ee7bfb4f17c85e9a5274129a61cb984..286a7fb2888428f4de1d7da792c2b0c90a7c14ee 100644 GIT binary patch literal 44584 zcmV)OK(@a_S5po&1_A(h0o1(}v)hux^Ed+Szp)p!5S3RX%QRbVprT_6ObEs;=>nE6Y>Gwc>hlqh6cJoy%dMmF0`2N_D+Zzf#!TTq`dZXt=5S zXKSmK<@eq%+$)|ftrcpkm!^V_bWXioUn^d@wo+LtW^S$(?`LK+*Mjr8x9mclSArY8 zqWsJPoqcY(vOcw0t*mS<T6me$I()nfI^*2a4qmG?KeS8$a2ELV$# zdL`V$J4Wqmg^jygg}cQouY8`*_V@W73-#ia-2A!B!nsU-I)7f?1s%LJMGseb*zOU$ zzbjgIdTaFaZ=L|0?ljp}e7eci^AsnudLichlNA>UPNFz1!C>zH_5m*<7mJf9DI;%H3*V zy>hRxQGVz3!o9-nSKhgK^G0#`owf2(t-Ab9skBmDzJr~2>cv`prBE-tQ>e|{*(kpM z4w_$jiAFqEs9Ci-9*J4rDA&`4m6ccS0UK|WYxUwrv1;*NiUDx0NG-MQYd3DZa^ue1 zZ{4~5_O(}EacGn&`Vz(dY7w_n42>}OHm-e}QF;qkC>Pes-z-+U=#FZ4mI16c!YwOYat!>pgrIH_%k5F9S7Qw25A_wfELWy;v{}*QmG^zFnUE_|G4NofWHTYlW=015c)MuCtwIe zI5z~gbrVP9j`4W@{)NZWIIFj)EhbCJ>BUqjHNDtX>Y85cE_F{Y_LO?27Zarfe|=Ru$p2OyoRP!; z-yJxMUqnADgor7A-;9-&<;q5_uDSCdwe|vMK)2iux(L?VgbF2qft(_hWTJ3fS`DH=vmo76Y6V$#^m>XYVX*7%aK zDjM|6zdP_RKt!UCj3(NxV2be*Be+Z+4E@fFP5tcJoxXf`*!5PpG2+!ZNU zjjr9EnaWR3&rL0DmDlR!4Gg$)cGssk)pQ}Fyiwl`5Jqk$XI-mS3lEIk`~@SQn>F%t zIb&ve)|fdzW6b8}jM-VxmJ8Fy`I+-QO{2Sr+m$#ObNN|)A?JWJ8P>qi;P7C4Xhe(& zBQA8qv|@H#nEke{6S2}kreZ{<^ln@4VM^6&>wUHk5@hScwmxd>2W|7Dt)FsE>Oh|X z{B@6fkf5#9m>55R&mnvcJ_c}noZCwSS6Gn{x znD$kzM-x{3s@4tq7IW|yeG)h6PrQrw9L*3{d8(LKb#xZSRRbe{4vO>*5U@njKo7%Q zAo`_i&ez4FUeYJ6mobk&6ETta48JD%b%T$_an$&_N%V2iC>dYY3nnI)Fm%)U#`m4Z z7>$w8#u{CZxqI?uv1&ECjXvzev*OXJ)99zo$0g?x?Is%I zM2HV8CW($_MJaVNDNZ*IKF->!@y4OY+pArT!?>^xN@|Q_?mG>8v2U@r)H_XIAegIZ z9Fr6O=UvW#q3A+x87qEnTF!Qm(V;$WbZ5ES_+u}6(!L}CDTgN>f@j-6p=I#54vq<&#G;G{s|iux4U}?{rp2i(O)!G-P$SE~iS`HZXq%oPOai;hKiUn^x~G(cObjFFu39 zia93UuYQ%lDKzsMkPEtuZ40QCi@0IBi@1ro`6mTd$2b=8#G;tAZVKQfxhNh_d|J{c zK6$qNq@c(3I2H{Y??Mlox4OL^-wXFhqeq;3^zsP70F8b$IoveBO~ILsL4u?Zrj>X+ z4gBJMMsS3ddj_e|Fc`atvL2}}f*@kj#$f=3~w>_*Q4CJCZMa85IX(hMPxTCj!*qP7MRS*O>< zj}9iy#gFdd2hg$zJHjB$pc$Ak2{SkaZ^FZj4x06lFk=(ZGBu~+WUbn#jl_1=`p&(H zdwmc%PH$%ie)V480q}n*y!M#H%y!mHSvZu=ir3Op*yzU*<&*?Y8NuN}A7(?_S({H8 z$?C6xta;!%n6+PPhRm^M$ix<{k~K|V1R2wZ%=H2MCj2~p0ZiAvy1wS&<#oAQGex7r zU)vY3U}PXAhS!|U=aP5sfCad7=iI&Ga_q~HCMs0|i1F1o->~r^>BuasR^A=HRH?2M ztC{l3<)d@cvq!IVB^>%Uerc&vc`sA0Ep1#rn#<43p7)y^`;rukSvd%xrz&R`sVNXnNxro*G2Q#)T)PkqVj_mh*}mUlZ2@#yLmE1UHi zUCQrx^W}5Y=Trt8uit*_^XE1T)mrgX#_f38AKV`jcXN)V$aA%=C3-?j=zg-WRbM>^ zp|yr*a(xvFh2qIc<(Fd7+l0VU3|(9PuB}bT;KkeTmu}0mPtlUcoxSlg%3b^s!^0;J{CM?>(5Ep^I)7tLwGQkye+Sn#ye96@waQ@bd2#S1=Va zc=H)(&oC!eGPTNjF+&5Cc~aNT`PXuAt{fRB7cx*(t`{=3A}9wY@=6B!$a#!b)Nc@0WpwQ485)58Ys$-|DgvBy>jpD79hrRf#O(s%}s<;wzrx!I8C`oi=jhM z3SY$k#UU(#`eR+;r{0Q1`XesdeMd+@x zUaYTHR&WN+J12L7n_6B%L$KDVGbH>w&TW-Jp_$?b%TUX?I+<~=c>1MG0DVmFtuj`u zrFSPYxah7=fS#RPW|SwPJ^^o}o_@85|!J=&2O@74G;D!6|KG_iS>wHqcvt%6t7fw0nZe!mnv zii|u!yjAmB?>+sM%JLSOYv?h(A}u#BKe)BxPDV_KfU%0;w#7?nrbNNLoC0NI0yvo| z-iP*orMU8ifGE=JiQM9@bG6kVmor$aS_~en6`#w%e08x^r(nYQP#`3D00@Rq=p@k# zw}a%>PPuDRFj(}pw>YWA!s=c3big(!6QsqDJO}#&@t-FrPvT*Qmt*f2c|iI}_x|Mm z;v#eAm!@1c{VN%tN0+h#tRicbOsQH~&n%Oj=OuaAr%9)O+?6q42r0_-Zn?5jbi4f| zH{v2g7#E6{^#>3fc(DWQ&Yryj?b(t^ni>o2<5tmzLLTs_i%W+g?__rQcdSD@o%;Tz zt+hRL%VaLCm9N~Y7uPenOHF)}@|TY$j>;?KFJ>&h z$nT5240Y*quwE|H+<~E@njs;UA5`XZd;4MZ%=dB~Vn6WQ_tF(_t#h|aQ+V_pu6$`q zTshEws7q7kMq#}eyUh%z#mEuw8HKeqlb9oM*P*9zoiLf?E%_6y`!G2c_ZRiNQ?_X=pIok8IYiSA)BE}R%zMr~uv!8X*_ zv1!}L*|EGGo3UfFcI>J^V(g+lFRXh(ESzad_^iO(&OJ?_Mz7djT`g|e^+HtB_I+lv1IX<1^Ar@u1s zDeHz}MUnZyShtEItF7~nxo*=jb3HEqIQaA7dV;@`{GHTtA3d7v!6*IbWq}j*22MqjUWz?jHyUYo$G#cY zK3q3pMU;&WHTKa>KIhKP{fEmYDUK%fm&LR6F->!p%%{hettD$>Id*^yjFThZCPmki zr%P5Lc`zP}TY1yyeYUd`H{-^WxK1Mu6b0EQNuz&TysXiKXbj?*P6o@H-P%oE)YfB- zAzTwrXf4*}@~2u{o(!E(__w-;ZT}t$$;JpSXHFh?-K3{sH^yie5A7g7op|GjyMKuH zoyIXd-@|wvjVw0sUXqRD*f{dxda7{(8%IA}?`oXH#<36AyBnwR4rY0{EN!nP9!(y9 zG?{HoU_1F}^2DRblar?!XR()hG>HM36}(kw$8)?&IgqS>Z4s>Mxh zOoKjiTubz62ef3Lc2G<8X@|6~KJBp9-KS-=9#cD_rL892^Odk75ysKQnulA7~^omTdY*H@fW-i2Ux+*oPmF_!prnXk8hwLI} z&o&=QyS;p?NZRe=ACQVcQ8MXNQddUpCb`yjlN_sDZ@EvZBL$t$tCo_SPe#wj$Wk(# z8cLC(+f1@$5w;TBHo9y>S{D0ka|jki&`XO58mu26Y-xP;N&?p}1_tpNfmefL!Cqo} zE)S-Nv*O!Q72mKIT4Z>LleNNxUi~A|g8S6Y(qcrPu8I%zb!q^K%4#)`pyZ+fn}`AX zNovsmw)IaYYDIBo9o`T)){Rz&w|Zpj_te&2v?jO}?lTlUAIA_oVa zjkV&2xKE6sSQcf~x*~2U_7&NmK&RMN+=H|T%gv5}yO2|CEAkv4bhFYtH^{aXfDML~ zUfXanCKpiHm4PvduRhT~fX@hwCu~^Jg9X%RVOX(E>o;A)%E@PJTKP;^WJiwaNf?uj z)MxP8>H17KR<~<&NoLL3^F}Ib*OtvjSJtU5!)lz>>dUe8I#vy`w9uixB`d2Bz_p8w za7k%|!!dgRH`*A2StZ5ChSM;OG)A%C#rxyf>Xx>fr>>>OhH+=f%<8`iOHVKFSlPsP z?%jK~6x$yBGdnwtLo_==$UBN7iY?Drv}n+9!6X3v7g!oC=3{PD@CS5U1OR%xwLsSdZe6++*UR>$840Q~_wVsPFy60_wEOk#nf-xpT*Q09&g^Fbrg0ma_|ua&pEMLtyF9ASKhk$3T=s^#ebDG&>Nv? z4fGEyczDnW4n}U;wfFK;=#AmQVQ!w6!XbO8mzP4g09qt5kS`zzRF`d%Z;jK3cS(z& zmc$oc908+S^rZ0_5HTAIpf0R{K*gd2$}p^C9l(I$*JJSQ^jGNhcctNq;52$bFQl!v z>qPJW0zCAk7vKvxy*>S-+QhSo=`-Nm2M)&d^ifU2pT&x0JdR`1++x%OsHZmPuyn>fRtB5Jv;~3k}EEsY%>x8 zQ9ZE}81;o|BR_pXu94~Hvpr0Djx1RF;7{PV4yw{S6>eX~fUOTY11?);fK-{}%hJWD zGVqf zVbKM=Sv+Eu#5p~WrzaDQG`tGJY!g_jFx%7)V4D$uy~VEbg|#n`L7)hGsDzmz;F`VD zqv`+lU!s5C|L*94;MKG^=iPmQUi3l$puU;YH}m@DjJ`RmZ=TmT=M;2B&ma_f1d+Y9 zr2}{D^X$Xv;!YH1cKdm}%twdrghKdHO-l%}(`9r34~TQKL>!ZFm$RkGH0)%-sqEYo$U!|3CYv_56k^xO7l)%1oZQdZF` z`FiZb~-~Oe_ld_S55CUePMo5Y9H@1pz!1W~H*2YGHm8GdiX@lKTZD`O(Qzm z<*+}g^g-^*f_kP;lHiekl1&Ui9S?ycgYSVS*&f~@+ zAJ@{Cad^S`MbLpG7=nVD;c>jF*D)#5GALsoG=^^aDl)ixPvrE=T7y@ni!T$o!Xky94z6o8= z=-^+({uTWG9)2JvpVH%e{xlmO#GN*-M!1*j;pGdKlr{>V_aYPBrO-3p@-?P#FMiwp za4+8QJgw!V9zAoW@HI@~+BtZ^Evn0tDD~5XQO?QcJjG#WZ`skaXWNWB9KNEz*bRrz z@Q*9JlXovfA{6@JANB=8($+`A8D`W)kz*Bh_dw4Z=cg~Is`;6KUQig2ZpDY3VJDtw z4g+HKgs>^r2Qi9J(Mv)CQI53}-H^9Pg(``O;i~9|@OPACK?JqAvLLvyU1Y(uWm>=G z>gPQ|BC>kc$eLN}%OEMtgGprt!X36Jo>9o+#PgEz$;7e=vz}QnV9L|u24kKgAEe$C zkq=7e@3rboK@d`*+N*T^Bs?suVx^jOKQ^pPRnZrs8uINuJ^|;D)Mkm~C z>j^iDD03NNTxvbxX4MHd+j*gmOt{(q&rP`B{(&ak*2G6)&_CRD%56>jT&wP_CtcIX zZ6;mQfI&Rc3z>BPDk7s_tKMZVJ74dZR?HefC6)5C8NK(k&CRyESaZW3;p&HqDJNwXmc>)rjDCquW(=+j#V3 z2Z0cu5XlriJ;asT%|d*{212UDZpoB3;@erRBtUe-LVBu+%YlxjwOQ-`if9I}Q7Qn= zeBu8>pZ?1DX*O`R>P8aB3y+HC0LvCv144*)ah%fmoG-`6V2{09UzI%4A%3&bAH)>e zQ_^(?lT+~KgbY+R$(>L|QuGRhwexiVSZcpp+&@#;7RNi{Zy`V2=4XYF2qq^vlp0RO zyPBCCBw&D`ON$*6EHFI%VTK2o68Z-Q@Y;*D83_{zs{>+i2%k|z>=VNyoWL(3 z!DgAT+S{z)t&c4X-?&yH0#IF>%d%m$%0hBHtW%2vS(XOS!@_RMP zL~}9oPG%U+mUq{R8MjmBr0jLF57|u+m$6YKzeagX@e_2fL@-q*wRe>8lXDGE=h7q{x)gIGAWR z@|Pk$r7Z1RSbW8Hx`}AE6%GGs6fw{aF0Xp(4Ub+9D>|Ut;U4>=0}5XRFcMYOHNf*v zk+9NN%hqb;{gnq@>+sku+=V+dc2)5#JRD&~QSUT0^4kyn#?Hu5)jQ$gngJwDbs$-s zONMAyk8h`Qms7IOK|UiAl@`5y_`tJ@=+Ms zc7ASW=NET&umi=B0RfLax}JPedj{px;FoZiGb<GrgYHozC==hDQ_QPBGCMi~P}nM;z6u{MB|iB2QVf$I)ojnn}Yjot^F4~{)UbErO%mWYW7r6$6s2b?^=OPKk|%1{1Da6*p|6THh; zTD(gQRD@Cy;9Wk++K=!z`6O!%K$+C&dXkN&aKT1TmOKLb;4t@Tqd)Re$=I*h-N;!9 z$y%oAi})EG7nS_XpNOnZx7I0}T^X1zR+oKuHPu4V)MI~Er|?DSeZMQpqAF_Y8s!@3 zCI6$p^+PtZE*CT6rm8m#{UCw}8}*dcDSR!d%?O>;5jhL4TN4`}!o&FxT2PG-aA)%U zn&9!v`opjx!U}YUx~n@J6)@rxiHHTTvYCwztx+a4hFi_BB6~e0@-ccqEc5_imi&kw-*g4#J`Q@;6J!G(TA1tbk@2@WP}0~uuOo7Mu0-k(?=h|N3(aylx=-z>t+Uf zAOgeTCKxU{i}6x?n!X5zwhu#7g`t<i*+ zJL6n%#>M6{?!D-B#=Gb{!9`zcx+q|~u-6-G{)v(u^e&?OvYw`kxB%Nds}*wp8M*vI zJ59KLK2PXGFb^$S#CcN^J|_lQjCI)n1My06q|{3aCk06lIAp?x#RLeXgj6buz`J&%GYZ}^JPBI=}m2^p_&k;9HbiPd@PM_ODx3@{;V*WY$SUS@xmyPh3!%w z{|{li{L?!-Fctn~{*V1YkLt^Rk-SdrOoRVC!Zxwns}hHhR!oC_+y0maz2PN5mlPX- z*Fq3fY-;{t0*klP5n}Uhn-ELm=e7-mV84NNXK(+k|*1oPM-y`N~ zJBvh3Zk{Jt*1vPF_wVCf_b^YDMhwC;)(eH%Wm@F+#994?2qAl;QrWzSf9!6+yiavEZ+8m$1~oO^MubjnjXjD<2Wo$r>CDXr*#GgWS|Nd ztWR($xGf|GKLRYL!|EQ-30Mid%e~{vw$2>(qKi&djm593< z62l|-j6?U$T)q)-`K_|oB~0r%33BG+>CA`AF#H5 zZ5!BT!U!(j`I7d5KwMQat1a70*2Cp^`kw>ZOYtT97{&y-?E8DrJ<)25NuUG5r{ARQRElorfK>j_BBY!_kTvHzKaP7Tuxo< z&8`teNNv$;f86Dx7s5Q_tOF)Z3Td;lO66*;eo%q5a{K6?_2VWw+rwhDBBtbuMGl1c zrs$&>@{O-&jwvqr(YvB)Iun_u%5A7~RXMze3CoW5(JKaP(5_xTSdn7n@&g4B9PcSD zxig4ZRTh(?5tGBDRwgTL$i+UQRwj}CXH`bnRqJIw5Ll7$&1${Z1!n7~jU>#tlXgMJ z>_n#PBsRLXk?lH#4fynMr)Q0xCs{44;Slu2&$r?KmL9_-!$FGw$KgI`e&I%_mGnof z|4mcW|38os_l-SB^6k=?9>t>wuPk8w-m0=T390`W`-X*e^MtatguCp|+7h}3tu6P( z1My7({jgpyw-dH=Y`wp=ftZ&PfGd@~lzm^XBY;=D%X3CqX+jqv2#ZZ+l80Lf+^mVx z>-UufDcp&sVCYCY37)e18#5R3$g7_tQ@1fYhg{ef7LW&fn&yOYeqq+kl|~V zpmbz4i0l0yzy=JjOiYaUuoxM|XAGYM_#DLN5Iz}vj^J|~QJoaFZi}m=NzlxzNQNMU zbyZ7{;xvZ82xKuFZZ(s%ELt4l4j5svOhEww!?db@FcGry*JyF9&RP` z0|R4+$1r(p;{)S)V-)$W`SPs?DF~#%E{TV@4R{bX-^N4CXgK8xq|%<~#gsdZgxZfN zLi+ITqu#W!MjzSr!t5X7dW~f1@%3rh#z|TLkww?a$f^b2ReJFXaBcGgeU_OtB`&hW)W7@YtXR>=`l(UXIo${r>$J zk{#Bo4`ei~D8{ji3NOoW6~Tn8i6#5xN@cBB*bvJ!*+P~G9+Kw1VqKEQXfpFw$3<#x zfk_Q_4%Q`_m-=vWD9Q5@3lI#PtVK4Eg5Jv&fvFj|W_Vm?FP=7lNL;4sl0h**aLMpY z6w)QbR3{P~FA{&wU6{O3*%;-6Sl9U*D!!sPaSx6d$b7RV`k;JiAny%~7swZZ)He{9 z){QiBA%|jW(bbTF8u5yep;wD_REnu1iE&XTj4&)LYh#MWB-CSn!fMq^ z(2}(*3W-}AsIPLJ)*$xmY3c&bY(XX+V*jrh?um`)~n?=8gRPg}8+kft1%neb(T}AX3B& zTCt$Sj@u@soI=hCTC}WwtXoJukAzboT$mJ!Ly5OqSxOfAVQi1!Gpb9=i*8)iEUZZy zTVSY&jIEhM$3ZMm7!J#prL#%KfLa__r1~>K!f~iOXF&m>6(?y8<`@ee0aQPqb5cUlat9>(HzK3kMliN*0w3O0r>BHf|yqzNjcNBWKba$kmCOv*jS# zPFRc_?MS&7rsXW)0#1?B16nRs1HP}5jOPs{wpXC}hxK)WlS&ad^YUJ>FyX4WC)7HF!+@6Y4oO>F?T(NMImNjrH3LP~(U2i)$T|?Nph315@@T^9?q(bq1kqs~k{+z?2C>N?I|1Eb zf8+bjKq1`_W5gtkpccZwaaz=$WMc!Q*Mx{E*JuVqpAU^AXd8sP0(TnrFv6Wk6)JV3 z6rCocPxjzq)Xt(3)vUY1yhoWv73_FT`-2^KbYMrSP)M;MRVdCDGQpz$T5&}xQ`j>g z=#GSDb9;49Z?8d7;OGwB1V`^E!O`8`102~q)9oGrQEEk;p~P?^4h}S25(yF_z{#;t za1i#>m3fMhXi(*djDhNysRfFWS`?uf){Bt!m@uj?ps@WF45=AOVS_azUD!Y}DX9j5 z!j*F%;>0vu7kZvNl8Y?qKmM_+|LDUK8s;P^dMU(7whK%ejSx2EuJ-G&4R!}B4j+GK zUzSN48kmf+8gJ7^{$@(8DoI;{4^oedJp>E4F97MTT%A>VioKG~Cd@IH82)XnpriJV zh?|>_dw0?dw>F`7o)V5rZ@F24B-VssB>xly;xIi#f|fn0;lQ9#Rz!EY~j(eC*dA)qLc5W#VJ`~F@hxFCttteQ^jfuG1=Zr-gZIov&j zlwzPQzy~`4Lja%*QpkIi6!BmQb)risrIPxaBp|D~q$p(~ z*#;g;xfmhM>$X|M$>SJaT5L!-*X8g!ZDv;nzk%V&2E!H{B)ij3ePz)wPkrSlER(_{ z$fXfj4O77*VJc{$I-63WlB-inFP?ub0`pfZ^-68dU!j%Mi*C#Qq+XPROWw|nlR!bA z%r*LY*`lxOoQ&}XXypd#Aht2d|b*;|<_NCO-|>}8W8s+J%-_otI)Bk|!gvhw{b2G5h0hPZpFg6T_F z=>X|unE7`&zoO*)htpq1o9B~`VbY3EI{a(;6`%CUB#eS=$7|`6{$Ii;{a@eN`T3n4 zIND%`IYvroAkF2(F-i-0lw-_>;b@}hYU@H-KO2E#*v_riR&!hS2aa-ZhNE1Ke}HTo z3Pj~_1W^T@?mfRoxY$7a{2;;a_gA^pGH9DM1I z=m7bDF*GGgr7Kupddov8L(@qYA&9^wOeVEZoWj5Yb}3F_FpRlAV(b)#K#Cvf;1pKf z+4++@J3dw$q-Y7#M@mf_;u715F!=}|nJAq1=;KH;eLS!240IEFtNpQE)cFqReu$i`upwhr0WVcW{s))8CJ+U6-+Kkc0IMEs*5X~*P*JT6Y0#AgEYl6@a~ z0}i?`%0b6aZsC{7R;zN*Y+Q;HA3bSNnFKJfqW z&S0(|;1+{hh-GHSrZjY&& zqs+vbIrugR2l$;hDnQ4P4H*^66I3xEshKIrx>gF|jIk6bqMgDT5>GWPOcDR3fyMq( z|1^D(S+);PUo!6hAhIyALefjUe|x#I={w%5={{TZ5=;Bz!4$m|$WXkF2?B%NIy)`3 z?2^sRVKTG-kqlR6o9~4MQSkEtNbwa#F=1k(pR9N&MTew`s(2{1=s=S;dbr~RUYKDI zrRbUdWIj(6#K@nYhP-RVyy5|{KnV+u6qv(En~d@SFnmGcO>iO!*uDm^hB^bNv@&eb zx(PoE#Ovd``ytf&axFF7wR8x7M-c1*0oWh`7;qz33tbAp`c=65i{_NImUW0@_rDLJ zVo_vGSh7$sfOK>+z?4=!isPR{2S1MAapU-@Xt-B(z*^VQg(PBq1z+GwPB(gF@V-e> zDHS*fth^?BE3wbP5g5Eo1n)OXr62;hA*-O{7QQ?1r&Wl1@infp>TdD==4<6OD!S>h zVnfo1IJzQL&sO{ZzjH0IQz}% zvls3xo{?aeZrk3F(cAYqI%y2sr6a*PbT^%ljEJN8E}ED%Z&Y4hLt}WDh950?Hw^g& z!=d5>>&FVdu(`uX0*hhwo>wfqgO{BFW%8Fm>fj$hd>^V1AQ2zg#kyr+93oDzz&Ny$ zAVwgY*g~eg?7-G@IMY4-*3&27dbCA>Z;SdiyNvcN>PseXMeSfs(IIx*s^8yL!5Fa6 z^B($!6^4!(<@tSL=;Yue2)K1A%x@N}6|+>nS2R$z%&2S>4Hz_BFKd(pt!!qX@Ke|q zIf4%-MIv=u2tRVO6L4DSOXfYGgcEW@K!8LFSD5Ayf1QkCq%(nl;D`9{O+bK9`Y&9K z9-HY|Cipb{cfl>lfczjkd^-JW#6yr3Oe#(K)BheFpu*o$J{_WrkB|&d|C=)vj-`K! zI102&ag`G`vT=-KnNkp3VX9EY*50h8ime0Lgxr;4>u^@=BDNyyyorGR($3ENJ3BwU zvqM?vGq|>tToM!vgCLl}<2ZaYB9*Yu7X)0tbbUMZ%Harz5fHz*R=f{-RF%aM{ro6t z#UHXoul->eq8DPIi+7a;KH8^gfp5`)5FI_-5#3(Q059{=^P7?WVgsd2$iEjs1VhdN z(7VW>b50fhu$*>Z+QbKd=8(&>_+!(SQwX79| zR0YIJ?Vgj#Fk;SCz$NZ^|B+Cpk^Ce$LQ`t!y3@m&rWVJ57LKGUL1u`)SH)1~1RSK; zR}b0gE&GrJpd7Qy=lpE0H-+UCG7b_oscfFX>Ndr-G@7HylVPe6q*1PE)2ILkh!S}u*O**W;{MMc4ypG(g$0$F8uE z4mOc+XPX6(zQ;FB?KC{X`Om-;B(O)glDFzPxEy6AWzH=`;l|M=gu8b2#(ot-Qdl|n z8WouJSUEL8ifq^)mu4Otm~$x_r^HZ9%G^viQ{0o~F@h6sbtX}2@*6&-89-dij^f3G zY$;9`2msj>;jSA^n6fv2C5V0fl60_D-c91=y+hycw>hI>TQ{`NM@WSs0dH2mL~)H(hA%7L$6jZ8lZu<8f0!2>P7!dc)bV|W;IxEML1>hT%5~0&g_OwSzqzxc!|sUx*kYx=bX4={f{&>t zk*>Xto|fA%89+jqN)>+OUoKQVV$i3!ZmG@7FItztIt1kk0by8waIa7ei{}bSP)_j| zrQ>x_2Yit)@LRbsH zx*`gE=@5}=S}Bhxd8{uhDB&Cn))%Qp;XU2N14lwud|CxIIJ-l(1g}QiG>$xcp4HOe zoSf4Rq%0%5L(DSS6X zc7&n0^o-M;csJm}l?I?-9lD3*wOY7Dwd@z@Jg5R>62tL@LoAlf?h;G`e;{`WBW7Cvoy(kM zK9mVh*@0}*nv5asQvAyXY0Kd@A>FJ0UC=Xxm>>G^ne->?hHW&#TJoOsJ+zVj9O_3( z712koIx=?zdnr2UFM(f6Jz2Jp2C8exa&teNMaHIBBkk@BVg_;Des{lxPnk9T*Wgq3 zGhB7%uk7q#r!kC+N=L^8`FVfM_46iwoiLEeHzNe(b~?|en22F6k0ogj!g(crRW|I8 zu*YKqw)#em6QoG!ij~yeqErnagI>{gcO33bN77px8>ADV?G>_gN|^JS>kXOBd4VaN zJ;J58@1070wOGBl{@~UIe1b7O@`+$OSqJoMvWvNaoDhmk%9o^BqbP^vG4*FCF2$in zw?3mxRIEhO%TB=^T-*r#ef)cfzhf3C1nSt_1e zuB=bNd1P*?fOPLzK$ffJ&H7aFeu4DjoQr<`8-#4gSmIsn47*} z%q=W*hkuDNKR?qGK9n~W=H@wum~YS}7YNdvPm!6;>KRH8r{fUm#>8;n&_MjK;ds>t z96`0_U8Q1A7h=-7ow%?Q{XK)W14ofjEJSt^8*l_UZtExQLb3`0HhEEos6Zo9M=QKVO_)Ow+4xb$Ajl*>$7Vo+W z(gj}!{v&$$kDewKk|C}U6Q^H;n$UuW2@0w9T|;oDjd^K{ek^7p4lQC3eTgbK*3S?n z>y}!jG?B4hGXEjxJVL4{CjjyUIM#3@O+{7_1Jz5VbPy=gxBY>!XihBK_**iUpu&pV z2%YQ4?vu?$i~p1?3dtW>j4hcZ`(_OEZIEItaUv(Z#EA~7Qc+%j#6x7(A#svPPZ#cJ z49n{Q>W#nxR(evoj>9PA+SNFML(o1+y$8ba8z&ZHlVdzS*=G>wDVt8C>5ShriKbXc zi#3HKHZJHIbK;AGivy*BY5F1$5Ynp171~x;XwPmtb-l8-R$c+ybFGei_e)##B8tHl zH>8yu7J02(rZ@CXxY+iD`iquuy-U8-?vfynpOeIgc`qc#Z`ZT!&+Lz$k?*K;y)Ye? zu1BJS$cN}H=Ey(5HgHs$l9{6+*KkEoJ>?{uQgPZ8do1EzGSCki)vJIL)T@9!{u260 zKnTzu0z;g@7l5ICA^TCd82PK5_n_HK?f;gytA(R#J7BoJY4 zaYX<@)Wh$j)r*}7gQd-2Q`C#skRJb1;Qd!CE9duie$!c(_jXpByXo^s^C#%;3ry}j z=dM8o>=|QbW}b5i_+td`v@>R>3A0|}Scu>pa}OSr#Bq+fr`Q`;D2D@*G#VgX0}9yy ztmMm~Yo-!%--qoXfE(ef$nJp1dH_&H+jGhnqE4#Kz_g6V(||Kl(ps?rP%$scfzu{| zF(s&bZ7E6lyBb}Y4~$Qx?Gm|UV!o2ks{>+^E0NJK5GRikAk&LZ$>A@M%7d$MpH_CO zv@-DC@NJqyicOO}AM*R@y+QSAg%S)8$Ela2F5Fy7mS~q^Pm=eh{D97KiCeLZZAkKT zkBZH>vaIyvk@{k3oD8XE^j2;>d)62K7~Vn1g6)R4a|Xwg$Z|&+94WBn1VoCSCw-J` zkwRPCpaGer&eyfD7w4F-XE~6yu?7kCaHI$ZM%!4Es51mVo>`ANMldnEpO{c< z(ur#_osCtjRx4HUa;%D^+SLukf-UdV*ReDsL>79Joqhm>1ZCbr2myIu{T*2uTj0cO zg%jv@DG$08I2Olv$qOkjKtAlRDmdY!hp;GYXN~S0@PNz*cIp)218-j1v3t`{7CxT- zQElSc#56+jLK-nf(OGj3gYM zS(?4!+kj)HEjVP^P5Co^0B{6FH$&h6`G66z1uXs_kPjG_|Aed22uiphV-Z8c>V8vJ z=uJ{mOr#B-Asq$EE*RaTE>xta7b^9d?9tUnz7LAWmmBM04gM`Rn2iXF44WgjFR98U zq=X3!`Csjc!2Dih(UICSHx;-?X9g868!;OTi!>!k(v+kmI+03<0Chl$zf*8z4NfKWc5~)E_ z+fRP!>93H!qjTl7wjP5Wih|^tDrV$7XtXT~l4~jolGFYOih|^tih|?-pms$;A~)Fl z6Wit~Z7K?qbMdiswzcALCAMBq=sl$6y(d1B`=r?-dpcg_*kWN ze{$&u7f@C@y>MAco*#4}av-BHSQVl)gsDMiVxT6^4~A)`1%BZ%EKe`6@EGibf2nDC zA{{9TRb^w3vi8T=PGB3A$sf^nl8)o>BW$PW_{UkDw!5&6)ZM>GeY&wda{NElKmJAR z^kfB{{Ho65Vi!l{+i^cg7g)%bzQvN6RDq_~6P%J)%X1LX@hVge) zz}?uF>;$wrH=*r;S`!~uYQo_M>P?eX__}6&U1aT5(p$rdZCbx75dOvbAB)1bVe(gD#b1RkhR3-=`e6UwJ>j%@=!PO9ib z4APw<(lWB@=1Uue>Vr4S8(V&`MW4g~cVXJ2bh-P&wXbv|>~0oZ#b=geio8}gLV#p7 z>Zv+-qgu-@gv?;jPIMAsXSqZ$Sa4OA2^+wG)X_nelTcPsFa-Z~5( zgebldaNaUC1##X4)h{^r`xa?t{C6E3f@gfs0k(MG35v#d8HVR^|XKZ#%DS&tN+@{SsTr*+=V8YwXaV zaE3T<%i(6+zj^m>Zdb^%x_wv3=G#5o&X9G}sI-Bsw=AF9{b$LUL|$q6y>^s$Os5c& zVB{~%8Z-GEN(anyKIS>f#|$TfI7Rcye9TzHp~T~`bn;J<-UZ##ThrEuDJ3&BeI%;N zQgU7ROWU%5K+Fv)8NuICe8%t@$L9d0WhP%vSrAj_bj*fz74r}CivLi?X6ymXL2hPK zzkzlXp-}9j7PK!Hl!?dFO)7<*Mg4VMqqP4CM8;(k6VD39lemsQCjJyqJ*PDZ4@M6s zXeMSgl%QEj#tc(DRmJQ<47*<`6A7Awf~}=J(0pHwJh&cys(II$BUR2(vNY3?bzPWsSywmnRht5E-d*>nl--lzYUf0?ONlzVr^E_H*)$$ z{*P)QAiEc#K&B^}#%m@I_pus+Dv95qzr=IUU&(j)(RosQvbcr6m-u^Gly*hyY)95a zTF;_ro#k24P6)@0~}S|kEcmCP-y@mwSVT&`ew%%l`Qh$m&6Ja|xn zd?4U{DL95iGd(1ljZtZ9#Ea_js{n=2IBb* zOpQ@-0)J6%f*^0we1h))5|>a46Qm6>A!%Y!@QOoNTs7N|>$8wHBqeSAF!+;4R03C# z)1WId4cr)xA4P_Q*SFR;Jr&fbB62r(dEw#~OIl4=0q7;*^K-GyLbb4-^9q0xA=Ye}U?e2@m9U2JhK%T;z-JcWL@btm2xv#ml8v)T|Yc2DbS#;nxu zy4tRTOI^bxWdKOw8}bG90T{u+}`QC|}!ldEeTj3c@u zebntHCY~ew!+@R~@gHDx5dT5!ItPFlT$n4#0jvGcj+p~&T%=q$(57bvsZFTA6}Mi4 z9%7gp9#M;~wv5Ayt^db6JO9JZ&cA}IvlTbvhMvt%2t7-oBQ#ZGm=a*P!jfmi`?)!j zj<+)WK23bw3d4X`hFhgqP;kMU34My=i`%k45!P~W7AYmfW8n%Aic(m1CG?I5=yeYg z`s8LutcH?h%5wssO8-61Jxsx`fM$ZBiBL69G>p?5Wa_FXQTGa;Uaa@5^wO^p(ZZ8; zm0eAuAr!FZ0}eIr8DJ>02;MhB)?67%1Ip87u`*7txYY^SdDoSxvzL3kUU4&r zA&KAJI*LINQ(;!#D?Cubks=o%$jRhNOfaMEEpM$O5ErHgTb>9JOy>Ga4yA@uanQ_2 zs(y1^INbu6q(~8cz&1ym5jT{Q%S2I8QWy;f#n3Q5qwuHZJbqHjVtjIqn=n3OP+gQI zJ~JN(WY)Aa6d;WWl(~Ti2ZBXRWbQL39b^lRe~E%dkSCb34|hM={;O1T1krP+x1W^s zmr;bx!~jGSZyH+3%5%}lu7Aeob2p_7Cvxtbrq z;t(cXH!AfeXXe97Y(mhwKPlM#@%_a+Cli3MN+LHv?^x}V%`N1;T$930xZWAMF{!(d zh_#oB_4kWN>VyPN;yrO!@f7i|M4(j|-r#uXema75KF_Jz{nOp)c{nr*emVUro*nX6 zPjqMx6cDo5Vg5o+Y93~jG9%uQGwj6SM?EI2(UDOz?gcks8AobuRzx7E0bbR}bP3Ib z6}PP(+d|k>zikfN#t3E3Gsc}^-LVW;EfJ)MhdGERi0Rf+JAl6j@j0X?Q#?@;Ovpvb zNgynNLKr~NfjQPdBw5_!>QES25&BHWivJ7=`kWl^Q&t|wisA^OO!*s$+p!IykaEkT zViZN6B0nawT_Vw*n{|?NPUAVKQ2v$-kwQdj3Q+}J9B{z(+@2H5@xreI&YgZ+H?Gyq*MeHyK(0%Q za>OF!;Mp}zc(R}1sd~k=!YUSO45?Up7E`6vG<^|oPvI5)i|OE4s0P-J$g1~d84C4{ zyG4{ z&G5O+3=qo0XdJ;xO201V#_>KdXE2p$VZqEx;M2V~ZxqS~^AmDjkU@nQA5r@>eH^fW z;v1WduJl)Er-#$Pq|>j{PG8nQr_X^glF7i`G-+Czl0qP1jF(dl40t#xggy@JQ&I>7 z4q}VVG2yj_p@&0WVzjm%EDs}+BMN!*{` zxFy!gr2LFq%x_0G)U;2{yDrF7?gA?{#SyFL)P}&JX!ER^h&9MhfX`uB zjaC<2XckQ%-dtif%(6V7!8X1P^V7PJR0P_4zT2yCG-Y4R#=wc)nN9qeK5vO{fX7=QY@ zl8RDP3~Pg%m0Y@hb4jtZZ4MwYxx0{1K96uL`%ugBP7%wz0SRSISxDHeu@Q%~0ym}~ zsF)aH6Z~RgPhM+uQ*b$Qb`Yu?eVIrQ3D@lmFC4K_Y% z*b~ig*NsC&Gq7$jx$xGFp6I&KlwQYb3zDCYtQ$ywbn_ej!f`;+%eyV&zId=dx_Nm4 zAS3Xwkp!I#vz&P>m-Ef8(9){uQ02J<4uwr|57OI}oBDFDtw;QB235-Kq%Y^&otsCh zCpYKDg*lFJm6vmIWT18{99)J`aC|5|G&p3FCs+)rQ91P4Psb~ej4Wo00o%gyVLLWz z8)MF>YivapTr#!_P49XLp_o`2gh8v-7qC4pSf7LxyjQ^p3k{Z6a%_Qi$;+L}%B1Gp zsg^Yyvb^@d@=D53HowXW4DeYY^DEi490B2EdtE?Pt0hS=AyFi2J%Tyax40Uxg+k>@ zez>?xcriejH=6CKq=8lJsjD{kJdi%`i(N?MddFh5Bl&TG&{r ztXtIzsy$0q$GCt0ej8&D4?!fYjWI~J6LpLHz)owQ9x6K@Io(?TJ)WqaeOKXe2MfCI zjn`a3fop6?!W2|c*jwN=*1>NE%n{z>Bi`i`3d#tJ<9HRI5LQ1%nWD+Ntp93 zD~<-sN>(Gw3cg`k!8bhi$)SjrKP-L*rTB!qk+p7;#+cHBBYy-n^00lh^+}EE^-|3- zESZVHzX$k{vd&zg)Z!4`Oc;2e!O{>x1ZOHZI*}qv^+GZl6esJinnnvRB#&19(};iv zqh(>8(|dX7>{E2fO6&gUl7kBXpI)hPsbJcS)mO{al})*a9q9E{mLfRWyd;9B z>bP6KvQ+CI8zgDEu$SH~e?MWh9Vrf+=lEq3< z7LLgYTQH?1QwW?qp*BVN#zVG#*f}Jexb9?7|1IMj!S@m8D87$6$MAg&s#O3eNxpLA z{9$QH*ZE_F96<0H!{-1#S$vM;a{`}}_?*J$wCL{PQt4f!QZr%mzA93r9N8KQBO|q`?^i6M0Vg&!TwAnjZv?6;^VBCc4G3#u1JRJGPj3J)wP& zc-Ek@)+z_n)wn?%jENYE{}oRH=f_~X?kV+5(-(2n-8eR}h)Ne&^zbxRJ}$%>lZ$Xv}#u&>kMsF!?k#F1QD{=N05x@gLRm^Z*{!;>gn{#|op3t9V$WrBQlV zjVpOW@BIU4O<@vhT&L3V4?o?0EeR zvk8^_TQDKkMfwkZ!YhW*=P$xA95b8iLdTkTbVaT?}Z4&B`WZpn^S>~*JAli{*0Ev0h)57dS zdS84-@i~CcK?LqmXo=tqk6OZU;z;Bxu9CwX&NOD6pUnrHK||-dV#LTpG9Nhm**t?HJwNluR87&R)qH$w?!7)MIctOW;z(7kqah zfro?3Db~BsZ>=vCtJhI|!(HC=|N3|7-@sK>$WwalkB}E!000q4F6sL~clI_=q`zPo znpTSBr!+8}{a@X28qKScUoecnrcoeNoK*B~fIpP*uB8XOE@82aBYwop6OsCei#v{2 z=h^;TH-apRBWP5yXbLI<4UWw+^{9#w3ddF`v)NYqTZ`b~*4>RtwHR`_A5v_pYV-aW z`;;pX6y6IdK-m#qaN2OHcfX))CO{AE#zC%9kSYS_|kk0F%+ORXn8*LFkBPy_qm|4S*mPRQ(V(1Q{x(G3Poyp1p=?sAn*d*x(~s)WlKjuFSvjn zZ97CWw50}Lh8XQhalf|^BT%+~KMd+DWU%xZ;>4j3Xbq2D=GFd~j(GJq^hbK8n3^*WjXTT3jFhw~#9bAN)sV!T$v8 zFeU0`wmPWS=qKil)Maaz=;_~#Ae;>@G6Ry2YlWt&&HF=Bl`F{Q6)6S1`rB3wmEG&& zntmfEUQtM@a!wOTRa*#1%6>-#&Z{IGi)V>bRliaglEplsKJA}x_AZpAsP&wPL zG2=Ud3kIQxTjS4ncEs=Q?BGvhT&9aANll{guxoNk!6>yd_)T;2banffJ-ikR2J{L^3-yL%ENVL|5)J}9w|HLCfQN&tn_HY zv)V#WDvB}YO81tF%`qQnj^vzP*R4v>Ix z^!NnM=s=>kNlH&NLC0Z{kP_B$=zz9YM~;Gs5fW$Vl$^{+u;=MBPEq!pQsD ze`{jdsy(L=UwUZVyXR?E8-TX5(Ys`#b~jQ0Jtyi4 zq+^V%Rx*~5EBkcZYK)*GOG6>BHV6KKF>URb`a2P@-rCqGRuwJWh*CDrZ`+@;ao+I2 zsMNttOC}&uuRh2uRaPEkay?j(%Va94Y`nr*&x^wV@A7JKCDYWBl>7jl>PF3Xc|G~e zE?140Sz4thAv_;$ zCcf=V{%=O`{5Dmts=l>ZtQP7OXDU0|p_Sk=TS=Wg=@*M&j(} z;i66Hh`&t%F;ADwZ}-`nmK6`v5Wcdu{9`=iOvMD-CF@b(HV}dog&gl`J^w2aNbx+5 zXjDfONHz5kOZx+=@MQohNiSUsgPS^JUKD(f64%{?Q|X`_EGRww4Dp_VyzrP!$ZKl! ziJJc~_JF*;=ve{gq}NGeh)X7s*NGJMk@hxDA-vM%L{U&W5bud3!Zr#2OMLe{1W}Rd zN!?XT4!fCd1gE&c-M79X5etaU~;lt#8LJ)Aty^D zjB=eU<1%>&<+#zwbO9F=W1UiaQgAKI9vl<4W@cjpND@JwCD}OjWRnC+g0Dfzf*STR z!40`#B8LY&Obl`@p+q+U2WpZ7O5j>zws0-+@`)}+5KDT;H!8~oPx+{+eosLoDFpY& zzUE(p_)qBaV<-f8GdrzJ8NbIAHTj4|$`#sIjA=nfP({Ux791yl`Fp#W`gK_PF^G}# zl0~vT%|A7OrCg^Wq-$88B`pLPdnp!CAB6S>YcgC<$O9O`uz31`8p`MvJ!yRU@Zqo~ zn80;}svwaO7)`ujz!4$ttPKx^kLzB>C2*KvGvTr8xEYrKRC@^fzV{Of>tQ#3RX{5a zJ-TU~!Y)d@!f3Ab(Anum&ts%spp`zUL#*Uu8yQY%;MNsjbawH($T~*5{=| zmDdj*z3z5uibn2yF6>;w0Wj_la8Zc7 z%yTxPr0k(M`Kgmv9Suoo4IlYiqfJd3M4kk##rdy7ypTg=WM^H$_ z0RWps93Y5NCpKlP<0J(XT9lw0 zpIcz}DDE7PA-Os_L&))lmk0_ZJ%z9|asp0@&JQZ4^SVgB{g8C=754lcq>5~TiH_IA z_zi+Wcuj;iW)Gl1xrk(~XkHItd9y!o^*dhDH(5+wz|ik6gX9XpIVR{J)H<}>L6~JH zOI}=&)QFFLPdNtBgN}VNp&WBPHNU4GL!cEUS>(9laOi@;TE&nPW+Gy{lXkjG5zHZA ziE18s`oke5%Fb)rpC~(bbXp&gjYyQqH<$>Jw8EIh`{lZ#Gje+q%9NNp?Yi;zmn1tIez%PjBY0aAaK{sQ!UBp9SP zH^g&fZqMqRAB!?#NgXw6(Kgagvj!g~Z6S-UX{^hQeome>NTL8EF7f1}`m-n7gGdJv zC=uCd7Yn$e?Tb|YYNv(%-)I5H6szNr`_7BfL|@ssSFEb3h>RHKWLoMJLTd&}(g$6w z8nUX^wHI!0@vg{=W9W*&oD5;`x=61C^`@e~sIwd8Y@RY<){%)jytr}vc<2T^yv>s1 z(wG=BM#NAG>l>IYI5T2>OV}2rxsB47;kd^#341jU0yF%jjz7>#^xpZ zu~)hhPR8MXmnir>Q(n1zG#uv^DF?(&Ng{BN9X84r~Lu%wIU41H(Iwjr>d+ z46QNLKQtOYVjUYECFT8CcIfy>cIXxB)sa`N1QIDD+%oPUcEsO=KodL0lz|cOxXGvTR-cZLn)J~?woGNW^8@d z7RZ}--qz=A{i3a3x4UjSBZe~r5uB*aA;d9hFEPc@G{{&u=3Ek&ui*1Je6Hei4WF0s zxq;6ud|t=rhjcpw&nILaxC%iJ6e)I9v!)>?3haYI8RJ*A1F4iS50k~g8g-l=xLS|N zMv?`u3JYnla5b11I63dztMgAcWJ>NAmwK~U_nuflmb{_1C<$9d~Bkxsn*ndnWf zK)ow-r9X$6cNoqvBa-8X@HqOoL@{2C@kMLNylDwE9(Y`e;m@H(i)tx?I!+o7$^Q1_ zp=>|wAO0|nR&=A|IO7PpWS3}&qmN4hgJ&1xljAqz(4c&bz2i$LJwzKPkh}R=<8)Tr zoILPXp)HxQP?o%8=mA(5+DJa!bm^zCkqlJh7r{uNPq+h znD3l>?|b*XS4&G~P3%Z~U9axFZ>jgrJ@>5Nsh`Ok+tZWvvw3rS`Un6BQ>emz9=DfI zUrQTMMlf=g5P(;ln)9l0IdQLR)vFgO-t@$^ZrEIk*qh|N(u!3<@OQ0895jb7My&@o zGmjx%*K%}U3p9qmh(Sv$y|rFkVHs{f?1|s^)Jk8i4~FLYHy@Aza{n<(q=f1Ww2Z`>MyU1zA&1&H@cdxf4P#bjo}7g!7%KJTYBw5ZT#NEYNr1B z%48*TZPH+D#;@Wsi+q_k9^UCA+tt@s1|M?6TL+?HWo7Vy8-AwZil~<|4qD=-)k+G# zY%QPIU(MF5d4oP`GyHKA*@7R}Z_Uu(^@@uhfoc~Y;>YC;-0j;BW{k33e+M5j!fiLaxl7F?jx`Fsra!4svl{7B=_iw*Asd<$` z$l^Dsf ztoqFouV2y;EUlNyFUf^oXvbqL`^rF?;1+1TI@P3$Rtx6x;7yX%53%zwMTCfV-Fj=Y@yPgrNrEub@$4=`MShO$vd9)i0CXB@x6JE zM)u|ZHxBEU>>kGq&}?<yu>W)Kn`oiPaUxj|Lzl3rMf$4SDGGPMB|WkjKGR`2d9w7n#n z+2bq?MP(AFH8T;PH)19dZA7rV*LGS+GZ7C~N>oXf4Co5r)%|!$VI~qp+~?US;WnHa zQU=4IPJsE@z}4X%N&hTfrEie7g;PWYP{R6yN2eCajYp}6j7!bB{DtQqWiJVBi6T`LNk&?roFbcVwC z+={|VG6e#G1HSp^uA(X9n*zO2YF{ri^ER}kBaOcJtVCZ#cbX|uv=fc-URxSl6sAZX z4EE?kWH*PqMNL5R(7`Mu$O=?Oz&q?05vhtpo;{Wt6Z8dk)&D-!cEAskNqX2A8N~)j z6oKBAegzy5U5zt~V3AILSDK0xd_N-n8Ri6_f@E>zj2~ot1DDYvTt+}FQt%i>lZgbQ zH_1wbc8lAC2*)dEALa45yZU(Ed%jMQVIlWn2p zo*g7=z(Xjtc2*ICp8S%mx7|LHOjq8CI5k~Yo{z{@Q*%`-5v|;BPqwpcu8_k6=9q@J zjnW8`!^tG<=&&}WZRnPuFw!#tpJQcGE(IxiDRNfBg5N-W~UF$wnIRf9Dahj0vC)s(j`8)x#s&?tM* zeewhJVdjsNk@1dYKejM8NKQZo<}9UQ5}^?Sf*`aHV}$mV>Pu!ziQP+=SI!Ea z*}b{7H&ve6sot#K-JU9hzZNx21#vziw(&iXmWcn7jYMl=w=JoKN=S%f0(uh`beJ|^ zii8*m7Y#Th@M~eI7+1VeBxxg!mN?^(F+758LfA9g;Tl>g+xcxND?YhOzG6vG;b0m_ ziYW)Rd(ti(!Wl0o$Zfi7y8E(8k|PnG{03U$Z#|a{in#IjAta*K?>V3hyuU+ z5GJYMYA>TC_E(&W`@M?yy?yAm18DB!=D|vmJGhyG7{UT1B{_r`V$|NM=#)$`VdaYh zn=kKF%kTJ1aY|z*dUt06Yqcv7b9_gx*^bPZ!f^pfrTre*ejjtP5%&!-XtL8gJ z<5~0Bf_d|%xx1?^%G!yD98Uz~sP_;}YTw%uW;_a9Jgg{nPB3+1A;%I9sQeJ3GMDTF z_AimIwnGVd(9r$&U!0`UB6u}*YA0mCm z7@!n$f2jtnA_sko>X?17=wyEx{ggEzR^`D1_<+u#X&6nyu``0RbR+JkPSJ%K_VtYC zehJ^TC~tqQK6U_S5e=s0oAYw(`P?_~{S?0U@WIH|v3bZ@H08KyItLpdOiTvI9eBsE zE*YS3+AGlg&`&6$sh^ul&mp%FS>65(~IGh&IFvtx{v03m`bQUyoINgeI>wqFk zie>AmWO{d}X8{)mTo0*8j78$hvOpkjNcCJCup!lpqJY|u_`FoFu+|{M>RwF|b}M|F zh^IJIM%kglZY_{MyEj!{VX(v#5>|#xUYHGxbe{(LRf^HCG6(s!>~WA%_8_0gk_)qo z$*u?V$X|20X*dy4kr2wd4dN%rEX)U+ou5N!%5c;0!SnUh$=(k^c4G&yS%-PSKEFZ$5f7ovioA$S7Jkp=nM`C?8sRnc3_ngPi>J zyH{8f)fl$p`D1Q9Zo8?v4BJoDWr(oeZXPXmgx6+uWatKo&V)7jX;mU{pg76*;7`;$f9eibXsP6jE$CTEt_?(XmCG zylx{PI)$4}q9TgbP#joWm7_VX?Jt4w!lK-jE&MQ8p)Uoc&Y8b}|0Je0Rj|>x4izDd z-w`O|IKO>iUXBl#SuJm@l1l4<67oonA`^~Vo;r(C=ts&sJ8z-pA?kZ!%fTW;moHW!yL zU4$#Uuvid9RpWOc*>t|i6~sfnARgY?!wi}cW38pRWpW%W6&F#i3Wc(@N^Q=mkyD{^ zRTMG|F&nC2nrcYn5k|HbC_0R%;@e3 z>>T0goJc&$pYBm(>KL};*z(v;V>^TGEV6Q8ldvrBBFX0PCX>u=^iTw{>GYza6-=n2 z3+ff*ch}63C=cXojB`TJ9Ax(=`xFDi<{erNY?yw3NHTs_fpEBqECKN3)A@n?5g=*7 z_)Agm93Kyqd>DGEiZSBf$>f$7xWuF@ri8ADR)b=d)hCsUyAOvTDr2rVFE|MRI9l*R zn-J6KJY=}DXsfxv76nY!IJ$&3I`QBEaK4=H-typ)R=Vg>I&a<-e{pVy&V3Bs{d~IP z)DgM7^F0j7W5@sxIiZHs?C?PPhBKzWkKv~=e2|Bq$>BXcm_49sq92QDqGwl3t|gkL z0c6WQ|D5s5=C7Lf0h?lFh%aXGa*&<~AZR!bkXBym*0rb-!|jTw_Yw8*i{c`(rx0KOq5|?T zslIZpS@ne`aiLI3mv4XzQ|i}7a`ndcer02QwZX!zj%u=S``yG0)R%S(x4F0+j(6jA zTOBQV(1d-m6-r!je@2FPcMy&pct8JF=#R z(>KzWPzi=2mByyR8kE2Qh*xGT44DbNf{mM^Vx%i8o)6-47~2T8QEX!-0?A2s5P{@| zOKwfeWK?qlsOI1rro|s1EB1AAf`bhM2)XNt5&3XGkS|VxG<79O$`=qljWTNCL0K<@ z!GOHOO3WZynmGGK2yn#n7|npq>DdjK4P-?V7SZ9D*7IU{bHBVHL#)(P=+m-N!UH-} zUnq195RDKo`b7=XCjrsAd-}YnWGXYjT=7jaZiY@lRDXI8q%BLz>A#WZerR-ix|a?B zb_|3Ljp|3Dpf0p+g>-qivbrET+b24#QIw#K53Gn9LBU)POhzUsQn+Qzc|;^i)tVzb^wUL&M}eIq z`I&N3IVq6LHk69xgHRI-vh4Id=sY6L-;!`ZefS&_dDB3VX8WZHtc$Fn!#EFz?Ijc4_1ubi zz#;-?$b{DUQ0WB%k#3gm94aDnqq?@f$Mg2fJ6p(i-h1!LR&{4p6!9iJ;Xa{9@i^9C zBI6#r9>rH;-8y_FP$=soLSbljKSZ5OZnI39O@|S=h0ia;l3S?^fxa-mm=4a*p~#Vw z2`@Wz3}H4T{4vinRO$_-q#`6JXY;~Ij~TQ_`&NqbPK|UIwqDA-0`KC`Pm;oU;Ut=q zAQP0zqAiNxVI;4is0Z@+;P6BGOlzh?$$57ag2-?1mAT_-lx4C*tvoDHM5M^l446;#iDsd7L zkF3^C(s~3pI?w!LShWPB#K;jr#{RD@)FcT*U#>h=allI1IkLe4>ZU%!9Bg zcL|%aqCrvuM?st8tOSO26p9D4asPgNLuw^iOU}|CQbU5m-Tw~eMa+N(nKLhLt*zJA zt2;vH=<=QO=?r}CFNl|_bQI=e{sFyY;J5*#r9CAR=d>2q0up^ei&7E7@_K(TU>o@> z2#>6;O$2S5z*OBuA(-k7c$cA8fal)Y+uOb{GxP4d@18HOZB?r0SGR7@6lZ4_X3AVr zZ=gDH z)g6AoGis96fEy5c&@|ts1taAU)2b9I)w`V0j^G#ZbgRMPzTi;x#+JhaUc;2jq35DCcsjmKWO&}6eR){7bk*___IO%faS&`)DO1{bHzo$4CSj4_cvdf z6%0|diu;>iTogQ!8`b?;3&nZC3FR5&%e5937X$<2_W0ddi>29y1Jun~i_3H3*~v5W zz1fBNdHL`}GvAzDSeRQDPmf#G-Pwi3xsrH#@+9*1?84IAl6ZRD5x+mXu)I)gI6~c^ zU7TH7U?>Qmr^r6dj)(XR4_M3|Dk&u>3f)eOjvEt`*p6U3 zifszpF>J@N<*}W__9V75*ru_a$2N~KFj!wRUL2l|5NFQGM74#%Cuei36%Dw{Jgml*{N!Q4rK*Jd6cq2WKu`K)9pb&*2 z3Q?rKVdl*;>P$3=2g?~>q71316C()ErO-OmEFXU5bN~@+NG%e@TXv(Ojr_uC< zdy@f%|ynELG^s(}B8HiaC@zz|=+o-5aO`CX& zw6tkq2f_JCP0_**v<_N(g0F2=k;OuH_z1HkOFU?C*l;SrA|gVu^*C$*BBgY76(tD8^>#_{k(?ADU23 z=wvA>Hu4==Y-I8|gsKH!={=I})URnzsygtjcA}`-EU>&eTH$apSBDBYq?oG+ig!K%z~dc?kx3uq zQv+XuMvKrYhhzIF>cwUIT@TeC;h;lLR(eL*p~r(L>`+7^4(5(y5XBq{fC zAX1>A2s})}5_lh_ZV);13y8lWjW|qr$HRozyh!vvixJ+{>Q<$;zY9wT z;Q^g-M1-zE)L@ZxhID(Ypd`Hw_zA9@8|{J_H?>`P(I52>sv zK*iF5B0x-G&5xnCi*l;!lL8d^C>pxC;rPQ};fv?dLaEWGxe!g5kWWVmxfvY&?~$z& z&u|Z~ahGk>K_XvomRs4-fYz@+?jSEVa9poxY|`D@d~IjHs@XlS*NFPG>?t%5$z89t zrLzT@n(B)2QR3=My?XK{Q01oAmNurtWI0@nscAqG469^ zYhz=54UQd6cpK0>U7`NYc)IjU;FSuH%hJ4pQKj!n#{SJr6k{~9cdB&bI zM~;Awa$$5@-)YgONixwPj~!Q#IY{Ix#7-)J>3Z9E zM+;Ak3?f217jU;|FVR}0tv$I($aRi-i5wizUEr#MpDL|;s5lH1rgtK;jFIia)(ZL=k)7uU`jN|GpEwzp@perzgW8cl|7c0^2Sd@)co+df3a2&cBbv%AN@8%>8J2Jg`6z^*7V?Qo50 zuIu+@#IwoR>2(6?dLrNManN*ls_h_}8;x(7goRc<0CTB8bIB?ci(}2t63ia1Nr60L zKg-ziYf>0MvojsU{u;;yMgBZQfI-g|>IT99Slu8$F{vEz6H5^5A$*RKpBVYY6kCUS z!7yxaEHCqG;VBM95un1Xa}(TB;kee*>=lM+CbDQU*Hhf3iBLkx5?GyiYu&oFE)j+`+o!k( zqGe4-mW@PpVz(_*Ul4FTVst>0tux;>`pkwB;61ks2x`D}K&ds5sRgYV2nS526v`mL zZ%he#Gio$Sfd_>~g7lCA|I?cKLO~3u3Ph}4q`w2M%O-UOEZKqP3DZqtx*Or$8Lk-w z{QrFN!~Ci5PWPa#YsEu%&AsMfWIRqL0zho9G~?1=jgjKz^}To3cdJ}HVsp(8fgaLi z&*%YaEtS%c&d8pTs}Pj}h{0GjsK8W>!f7-aG%`3MgGPIat|D!12@Ii7dpK;DWzfjM z0loQImI=t9GOtn+4kB@63?5PjMY{VpBZR~7u%fV31R04^-FuKGx5hR6PCV-U zKFOx|Jor8dqz5PNrGAs+Vz6_7J%q*_ocLk(w|0@;-i@6D>;Wz5#69afh&Qj3;v8mk zkr*t(OK&Wz{*4%IUEf><0@gC~Idmp;q+!+988i=hb`X(RV+YQjrRbLR$`oqn-2!aF z?*7J}E1Cw*os0MN`3G!n$>DweIKOF-Nkmw6#BU`^)aX>+hp@AV5p9=Y1=wGZb#)ly zL!PJs<-y0tQN|Q2%E$|ma*;5VBm_pfB{9-_@u^Bin&w6L?4r?nU}oWHJ;L+&Ig(r{ zFNW${3#4qUvk%VvsAm50nU4=1mQfZUi8`X-P*itMq*}uK%p-mn89~)|gvGg6oWVZ< z^mCO1KOhbbx+okzOr0?tq-NH+XJXU|De3xVV4~BBQ+0KQIOW+voLr`i^2%1F*vTek ztMbgETSMv8%{7g{A zWf8G`e?@S&sSg+sTY$rmlAW1$r=4l9p8TrCv3V z6`?@YN)#yf+f(42#?%%A+7l{8aws*NN}@c@7+9N%j6^UpoWG*V9UzL#{#2jRB;qUW z09>G?MYN$s2V89hw5Sq)NkmHn!2{WIc`J|1xv!GJna~EQ4uoQ9U~UHwf!+Uc%@lq$ z^a!UInA*WZAo!~u63fEuilW{_Izuxcm}aE5)ST3o5}hQqrADO2By#qwPHHp`q$V>R z4n=BwmUHJ;Vx+dzkkpp6)pY5zk=oKhpt? zn~~Zn-EXA=31_$hVR>Wyo7J^Dli9Awzu=v>(<&? z80LgQwj48aUEkb5fd4hb3hMy5i6fc<6&>PMz6?Cw+nv#)A{WDB6e|OqWo5psSp0>B zOWLKR`kpCoZf(AIdux9;KkouscfVRRS66-b_6$oWe2$_(3SAVV3PSJi4*IKm)t!(S z9C}7Htu>cH^h_W&Q)sgb6fU%Ce z^oi6stf4Rfpg0T_UBln^J%kiN06;7v+RYJTbPU_1D7=Ocyi1Uy(M3zhRWb&IQb3XS z;GU(zYuzZDhFN?t?cOIVznM*fm?U9o$DK8ZZ`JZxy4{0t_;1q^k*pA(_<# zLqd9qG!RD<(_Lr+7G$ED*f6KN@6)%gY68b~Uo`Hyh(!VlB=zxy`mtxN;SZt~PD4P# zWuM1-L|Be+X8~n0VWA=$lE%EJa0WPDg_XKD;c^HR2R=>reIU%#bZ-|;T*IsnQIyl# zbU&RHfGH;B!@>yz$X^{R*RGF&OL4|3)!u4V-tC2$r1kRl9`I+s8Hx$f6A(lFopHV& zoYC8dZRn6jiHz;2a!3%!U2MRU7hrrDlAE$5zypF0emJsF?$uq)!4ppgvlK|_)P{lp7nublHl1`?1FG+j50E~|VGZQ`O z;#5=H#N`-02~oA67PbKmXjFA|Qk*I<0SV6B16zY`m*|0^LI2)G{l3kii+cTUF`22* zP-ZGTF<91oVOQz_61)usH;E*$y4tR?#GKDw6~eJP7rG z7=G}rGw=V1*_npugywInW-5=QaP_{0qjgZdZ{zzRG{9!abXS|uk?*sQ(^0XbVtG-g zqw?9aI^Fb?&z;l1cTvAjIbGE2e~Zyku^}B5H9F$DlAo21d{8HaP}ey+T5Cr~`)5EM z4G3xf45)&a7h;J5*2f~6e=nJMn$qi)z(v8JW)t@|Xpa}QCpUIil}K7{ru zHsmxFv%iA@?TrIXS2HI@JJ%U9t-6L7=3O73LC5Y059mzDZ0H&w8L_%~x8GZ(y9(=Z z;{m0F4kIe!gm^7VHavhRA=J{2h%98G2`cK19ji!aVUZOC=!uNmVY5Y@LfEjA_H0Ui zPxZ(^S&K+28eJ3ui-Gvx5Vr%GhchU+5@F1d0>EshEmDWm6shAGT_07NG&AYffR*y{ z{@(8TS~UPS0^uYkjPiEJba;Bg(JT9;kdPji@g}44g@rH<=EOlwNGYu@i_PEe|A$UEIUZ_Ddr+Jb%M?($*KWB#So}B6v&852HUp z5%XNhSJ}NGV7@0kptTK;WROsX95cs&PGDFtwR(og=ZE-)JU+)WdQm{jb4EM^Dg9Td7!MADn@C3v2Nw4?ltn$x51lPJ>*}`DWIGS?uDjZD$Av!BC5dgE9gS z5Yg>oAk7@4ocReai0(uS=jNY)ifJ~eAdU!-m9C2kfJd0prc=}B5WlBq?^ai_25)V? zyt7sn#xJ0iB__2LsK}7oy-dE~wL9#7^`ngg-kJZjEqie|XqPitQVnD|~* z5{q%$72i=Vkf$vM1!XjaZIRF)fqU;Qg41&fCa-iBC3`3Y1 zFbttU0u&pRc|)dzH45OJl#MJa3JZZ{LxeF455KYsxmqRk5$um)8^<<*>`sI@TLz+; zV3IW;qreVgi}_-v#3zg<7NvJ$szH_JU?-r7VID*g3Q^t@iwHn=$dZIOCt)oT1+5{i zPy`fI@I(@^B`X#X`zYk(7tVZ)=7&jB0RpC1oP(OpktdnRBm(##O(IIj6!R|(!bhDh z8J3ZjiTkiu(zKAx(jSF>F@OLRzbyni_8YOeCbaE&mUdx+N=(Ky@%fHwQ1hS}qb$%* zxIUKVH={l*N+41KIURx?&Tyj*!w7_k(SG?Fg8ts%EEJ)jntiQ|LK9+*F;#88p{h2o zscJmgT1`lEQTNErOXk2(t@8cIC&7$?=TzZIntn}t`RZaI&%U|EBF#Hg;RJptWA>$o z(@7+kj~UMJ$Z!Zhln`bdOv6+P<|Ir&l#&=?TkU9S5c3E&N}7WSwH(ntGQ-hk%VlW{ zpX1mj2*i*4fIf&{8gwn!DKK=hQ<@C0X7WtKnFFdfY-j+SX{Y>y5*U~b5-Kks3y3Q$ zVAi+J(E4T3`o%uyZn&d4g_9i9JmTAt5rh;f@;dv(8T=El>$;myGbj!Xy5hzQ209OJ zTerAcb?VeH0#~TmiaSexXtEN5(ikSN-xivz{|%1_|Fn!IL`IMC{JKWfQ z4lc9u9lchtE(lk1dI$kb38X>5MZyW!q)b55Mm9u_R0?x2NfHZ`0SEqNs087^gghc7 z92hQpjlOO5=ppN31FDr$$o1Vt&|Kw zt(J+~>qA41Kw_*!uHGwqY=8U!x>0Fk;xa)JvVww%sS<$}d#ouLG!jb2 zq4O>%4monRoVCj*@c9 z5&cX&6PM;Rt-)9qQ<%#%s6*q!X2cI5F^!F}Ek@Gyq&cWK53I?hB{ByUi}PfLrDC-R z1aSIC`q>N%`;Y5U4F{NEvxFdF0j&mBpkd%hpir$R>_0)2iIGeW-2+&lumU+U&t(*! zW7x*Au_cH=CVWc}Szt|Jc{Qv{Fbjc|!XD%bdyvKUAR7?tz7^E45H9|-rj)Zsm@@iQ zF^9aDPu?e|@WXr$*GkMD9MsIb^C3ga#MAaBV4Q*Mr_8L7xol?)7Z@UGY#=d&A}}6s zm?-COl;Q8fhFCg0WQdL1cKVvyb|z!f=T(R&tG6z%`+*0O{d;(60^>I5>bLg^YWF<)pKjrS{dnD=blYpqkxqP6+<ccVEUr!`*cTlwqb&$kYBX<*DyXrmStC{;6zINC9#8)eKJ&`y? z;SVS5+%xFusSk)ACpUwyx%#m9>gJ~KHC-PSU%edCZ>M|f6XI(!hdFuzvfB7El6i(6 zJvznzmL5IAcl>+d(WBQNJ*p8N8Ge+gTS@?UP#}B{A?lgatW!D#`7fFUd;L}TJbktL z#{O`TplScrGill zjDbe?DLMJ&t+n^qah@*k+}wSUm!}p71%q-s)xG_l&DY-Bu8O111h)`*Bs0;WnN{+; zw7r=430L5ixAs`Fhw92owz;2XY=>->p8`{LHU` zV+1cCEiOclueFfwEaPGZmr`tIZkE^# ziXTx#J0UEP$ArC>h*rUJ39lu%4oV%v?$G5~M?7oFvyOXa-m^|1#R&l{wBV&ER3&>4 zN;txTE#NU&z}>Yd#$D7y_GCTe34BgcU1V&>uswn8q|x02OdZcnUcxdd-Tr{rM3_N_ z7E~)sb_%=e5|ny4_Kc*_eH9-ruIaCNTtWGGu&8=<&tFfIKKN3KCNZs!RHhLXBM4^#nfd=a{nqr`6H*{0y^L7G0Hb)w|jK~12563byU zTZt`eG0t34XF|D^o?6c={UO5!Ie3L(;}`Ijd?v(d3UJB3!jnz0pCN6X4mvxtPW$Jl zb$Z>XFs|LzEv^$=RA4{a((8|>rB}>1W(Pq#O)+%>1v{&)(ZN8PasIbMtkKrotc)(; zb=p5vO(5mL0ZeBC7CJ1{BHb0jC*}*;CP1`!`V{MBldLIV%Pi^R@5Sd}iz+*ae}Ow& zqjX@Ec$;{y%BLg6M`RZwn2^d?Q0a;v)w@n&7a%2xZs5Y^U=&GV6{RY+^#K4S!%}z6 zNc8>}!tOcvV+~eiPhuQmp>hFER0J4)w5GRn9jq%stL^6h0|8VJJm>S1VlHo73 zBAx_!>h&yOW%Fv@Ed3#3bbVrcB1Vkz&H46*K~3fI`#Pg?snhEc<1N^PE28qerd6qt z5v|H^CdyJ@+7p(pRjH$*G}X&+n?m*jF^POt89&I`_=1)c1l|DnA)}L-%tzEKqacWWRBRsXfvY2@xL!Qv-V0bn5K)TZU3DoCS`ug2OSo4h{MCoZZTR;= zR$9Gz;<_P1iJ?I?6P=b~gu)y`LF_8drAMfS2XrPvHFOQ48)=~R*pWO{5DsM>y)|?M z(T^6F8tx+^3bnMSBptmqbZC^EL@_x*P7>+P4@YeXc6VrUdNWK;NVdp5?UU1!pcS|Z zl3XjhC-(%t!atDWul)pD&Dw+@HX<9LX`m$gAA*j^h8dz@fWU^)}ITInz>`b-_bF)+?Q+T~OjzOJLk=SBMXsZLvvC>rZ3-%a^ z5zNqC5F^c@6aYhbHKgcgRB% z;gn|FF0!YG7dYZu+5+bx3Z`+vrauHP4NF^y7E#=)SA?*${6fudb}G(A<4nLg*W%%D zRpLRKGlyD;IPlq)-zZzVCl630pah}Lg|g7wRbr0}Wr3Q3P!?LNqOmLg32(POWM)&X z9S)<&D`ae|P;z!j10>UWJ5!7yxB%YkAU*p~OTI9-pu&2+uf6!CFRjCJ7;ENc z!Q3pGm4aEp-yJ}Z-!bl5cQyqbmf_?&1$SU_4Mj9Q}I?BzW46d(=(Muy-&|HI*10x&P3U?^p{EPvxFG-Lh{vKF~)t%~L<8|ykJXfQp1!xBknWl_j$QsMmx;e~1NGM3$_XHBLi3?#IB))UbEsaB7LT0Q4e=P8yFvjvPf zkw?{(lla7v&);YH(>`OIoyK+!TLD|q%sQzgtY^^gq47iS$8v5ssSJ2MI4oJuv&7$J zG-b$oZui>GpHRFZ;&i6&86TfoO+LArI`;l5AREoq?9>OV2wLzGNU=&9KsrmANGncT zNGs0RNGr}#NJE#4+~RI8_o>m7?ETcprTUO-Kf;L7e_|s#TjeGWLW_r9n z0ThUdy!pC$&spu7K2ksO!D`Pml>HA@bM@mD`tXqrXRk&sN+%Jbw%$%%Y03Pe)Bx?27ZZY405E{W|TP zr@h~xy&2m3KJCrY-fz-gf%d*fdqvv&HQFoD-Vf*^bF}x{v^URfe47j0$h(WQ`#aRX zM0>wWd&{)_Ba zq`lvwy-WNs{w|&5GVlIA?Ov&5-f)Q)>Q^g0mE3($MEzPNRk8W^K1X}}d!MI0{=L^} zkFWOv?eQ=FDca*Je~I?^$}iF$Khu|JkDuwww8zi%%e2S$^-3k_|3;U8<5##v{6^98 zYNfliek@6jXsZ#{bC|HJos7s0jdOSraCvfpBr(HuBYq?BrycQd@wCVups7syC6A zshCo)h6yfvI)e!=PEL#n3YexAi*|bRY|t9t1A&Q95ZOa7UhKBzHwzNQfqk~(m?);{;f;DHIjHxLL{48Ea}aWl3UV##EWpE5frZ;M0TmV@sQNOJ7$NjIVonb&k-aUiaT z%|!4nsaH3tnTe>mGiD;3883}t*p_5|VsdZiJubS@bG3>R8|!59cy?!JYsaV#qnO(2 zt?JrTq(^w{x_Q(TYJTsQZ&ojOawqfZUU~H$PJO)4g^Kh1^)Tqz?;TLL69T)Qw zGPCrDWURC=WBo~tkxB8&*DQMCw)$dcZS@R_^p3Vht6L&sjGNa*B8VE(mMlYQf$FG$ zLWSgn#8$$hK|lsoz>p+JMiOFZNa;wThyb?kL!z%iVtO%gYTkq;NXY&izJTJ;J<>PG|ZKH!|yxl*#qkXIADW{M1LB4-wX)3 zdu3~XGeDlvX1w0rnL44`6^JEr>6UFzR9xA1_inB4tZi#(oZ4`r2Vz+#g4Ip$B}S!v zZ%-L|VNmVBC~?4@M~fX}%UFah!}I}{g<*L2pcX>>6;$FEuR7e42TnB_P>D-R9{#wd zTTdRuv?vl@^cmiCvHN-49dSo~M$EjCSF-^CQ(9lHZzAHdh9yC*eiK?gR>N@{9r2np zx)cdD>&E6$dW}u`^TpXY7~ij7!!J-q_@o4lC<@dVcK0+ooQOvNzce4x?9y#XX{jWZ z)RAUqkTliwec;E_kAsn!e;mxn{CTR``GWBr+IWcbigEH`F&IFjrxZDFv2e&6C@RA@ z!v>TJ6g0PNm6l3W;ssG}94|gFGT^`x4#NoMl8D|3BE|{ahL?W&kR=cj3HY5@91zu^ zRhXL!86QEYxF0r-naFhsWym;e+yF@ho`B&YQ_UrC0x(&`j1z7upg|l?#WSvgv6|*p zOfAd03dkKh9PWlW`ioMSAmvwp-@`ydM(Pv+W9Ckg_KVmyV4zZCSMGIc=n)2NG~{wu z(UAKh7<~F6u*dR=kEA^Yl@G!H4e`|o%q=Fz%_75T{9itLWPbnAqks755%%hRajw9@ zvCxk!vY>F8b^!t6hNJ@-&!#-MT$SAqZKKW<9)k6fzy|?i@!kLGj7py zn9#dTQTuL6Z?klZPF`2f6)e-t?f14Js6upADV-6X)ScLS+)PJZ`>o*G9FyzwL(u&j zdtf|1D%AO4B=ZY@q)2vECu}s*tN;Y@M)6<0WFLv^92W7O2wN&Mo=7rt3 z!R?Exdun|!=jUxCu)0GTOblR6N#Q7!CHb6W3aC`?HF=el#uvxAR^(oOl`k&v&cb8 z!fxH*aWhc~o=h)~0*j?p=X}d|9vq?**YqKdd5tbZq1)j%-IO4b>b_c06s$r8o%*a| zp%?_VD@kfzMy+IJ)Cy3W*mjW0AhT3Nt%&4O8MQ)qO%`!$S_)8cPK#O@M12(rNGm&=ww?$h-nfYhZcllHw{90t~Kc@ zEZ+!|>-kAAxx%5DT;Xs`E;3AGa)p*mE^-`;D?XDuBt16cg^_b>)L3Xuxl5&Hv|pfz zEN93V@{p<4g#dZOcEJO=2wlpvT_m-|*`UNL?FNTLWO{>QCPXK;O)Is=2b~p%_@GLR z|07*`S8O9#F$FR4ELME*bTd9Eo{Jd!6X1h_*7$NEK3HhU2eq5zg;nE&1}vOSUr?B4 z^ml$pGHG^Zje9j?#L;^ej95&7&vs1Fyj?JF7tK2b^G=a}1goL>S#!H!ZU-0|#_eVd zK6)>F{9y+BtHB}JJgSWrm&85Fg~ysN&ZcOM;A>ioi#}NN@)EK{A@iq`T|?c&0M@`{ z0EC8+Au^tw1;VB0K$Auq%$VnncqaA zOQ7^4syy@$(C5VaBS2Mx=MrO_qsG)RY{#+Xv7N;BBw+KQ0%TpvYr#6v&C5j(XT9Vo z--S%WfYOAFZrEX54jBy~KrCemH7p%zUOHf|CN#Y+N-0Su5bTmNa=`ezXZ@(&BT`Rt z5AHc1qeQ9uf}5Z{0?9;}xHygzTapRj?5B+3`XC>tGF$k#5&t*}%(Vf1=$u5%OoC!& z4Ez~15jZns9l6dj+A0rsmGq~qOSAQ?e}mU;y}D3jQgrHLDr*Ii-JkjXRIMw_iZRe zo?&_>VYk4-3>+8G2b@qBDeoBnV~mO9r5_uRWsN-5sue%~KZbt(7RAMZf%9s&S>EvN ztnOovnZLo;!UOQHg~yO!wz4bwGFqR=`Vs9Hw08XdVTkcq?(n-Y@#wd5aTS!}fyK+j ze85i@KlOjL{Hf|?yN}(?8vCWuADRw+(9Es9z3mG#Gw;6p?)mcCR;7A=b?f#_adviL zrYvdzt?sOE@6A;2mTzxwRCn?FlZXBNe?WpKo&j+|Uvr$fvbC|Xz6MD6OQ9;-7?%+# zRf-%hG#L5Vi)gEhJr%zgo?0n%>kV$G!LJF=slNDmrP$wcqRkb^@(w^(S{-O<0D^!A z0So+?hz?>9J`r1(N`vN*Y(tM3Ba!EiT}(i5Qeo-iy8pRXB_<)$8IgGW_NY<0?R(ctBg*JQrk+bcGBeZ}zm>yN)bwUGb0eu3X> z{Q`xMqF7KyKqtjto*ed0=U<$-5?u`*e-UQduO3>Z@#k7z zgm=WL7+jtvHrdSX`VVVPIEE12yC~0IdY#!1nq^b>}?E1)P(?k7{O9J$Gwi zVbNMdYSvOwl(84rl5-D9TP0F=Y$W#s7$-T&3z|sqcM#&~IZ$_C@K+Z47ZD48Fa zIJWS1Aax&$9#kCIDqt5wGC!6{S0wO9P;pSu_XAo65jI6$3`FyPObP_4F%-v7mBG>` z6q<~cqe4zHQNBw!ILwcgX9Frnjuf4T*zSKse;!aL-#wo>_IoZY^2C4J93f zVB64!5W3A#)qNFPncy zKiBjHv=44?b|^wViGhn);g;)Nkga+Mo>-cBOA4&F+UQG-&M(gw^rj1~zCkBu57%`MUn zA$*P!Txtr!yK@myH%0=esSxc!YZg#b@ev9B1ec)TPq;A!x=6sPvIo;%-hn#awPIlx zMSCpcbUhB|MJcITM1>3NtuR=rQWch4Q@r-96?^DyW|J)iZlAO z)owB>G&B=5^h12g^TnA~RA(+NG@BcxK&py5l0@z+LI|WINz@QSd=_L)ye+Qxkz^7J z%7`7R-hEq#k?%K;MxU-ULq2Td1Q+DvJ3|x+{Y0GLf50zT_ha$%@_wp~+%%UGTNOJ;|T2ow8CwQrgh}XaHPudCoyGpHtjhfxsiElvpCb{mdasivjFUNGSP? z5(zn3VC@df+a!??XbOd}0BmoXLs;r;=MGuEGhuO-u=n+}V;iRsmhY*MI7?55-#EOu zz*}TlQBXe^Tc2cE{v*@}J${x&m*JPMT?P~&h0aDdF|!@qwf5$tXqMXfqQ5o3nQZGD zT$=5TT@H)XoJJcxL>t=Gq69*rJ)-tQDMRlD2D?Y>_{XWK&e8NMkC#Ytrr2b zgf?cH@I2CFW|NQ5j5vrjtQiqeP*fA_JBQ1eibi`1Dsfv;i7z23fuuX}*yF^R7irYs zUlSDZs#r-Q6ycAM(rL5q3*s&M!!^PwwmEU|di|rN9MtS$gAFg%n%m536xHA0lIGl8 zXM;2CaB${-2+26~OL-Rgk3dmDPvWs-4+K=;Uk&g7Qsg!HebG1XcU)NClmU3!+m?!j z|LXkF;h)#&6=-irs;}|0^hB=N>ZK##tQb)~_$5;W8vLVL^qJX}>LO0T3;+y+vXo${ z`+U)7KvUME&nz+<<9xy6Dkid=%mD4e zk!6ks@Ht53j{sz&Q~5^Qk#2kw%N)r$ zv~Ho=wv=-?>sNJgpf0)uqySm;V80VbA*dYQ1yu`%Vy)mHa9rP7Gl&){tY`yM6&JBl o@ibe@&aR|uY5s!ZeKYVtIWtaS=QJ7bF!74qwaDEC2ui literal 44437 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 e52!pta5I(p!L@1k&2*a4@qp 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%0DUDzcMrDA z-V)Q0()SHz=469BOIV~SL88vMnUvItP(mDnBWG|Zp(js&?N>+*lH7UnD^Guo^c|fu zr?o{4c1Q}6Z_1dF_ei5{QjmO8Qjom%uOTT&z9}h49t6}bDM;i7n;)@loYJPGAbFQQ z_K*~0eyZIq@*B(9Sx}=+9d_~Vr0q-hJyFidlflWsokGg`oRU1nNBah zsszsunh-mXUKp$jQ7XdRpffX2gXag`H1h&K@ffD3mza1AcEUf~G(C}y6p5;Gu}3-k zW9%oeujh8qRi+!I9?`$| zXTnjgK@_%xb^R47PX*yCXz!Z1nhHc6zGoMvaZQ<C^x1mFkiO_Nplx@LV<TNTE8yf{>Azqi`=(kqKnh0eL~q`JbNTXv3J<~ zm`>j(VF_+L(m*LKk=*8@08A*K!cId59!{$0Ljuz662daF>gEfZ#p?aH z*EY9(XN!!a0dB&)M`?2BrE6d5Mi_1uT*VibWQe?0H$nu-YSdG8$VRo6O^7msPCM~Q zxSiz_L1#VTvprg!bMvtQVy1ynGO7&O*!8p&p2&_Aft0n9RMJ`-Im?QlBwF_%Pq`-46i`+`Wg&?P zRE1EDA&(5EEfI^QA3_h_?2iF=Tf(KiINp>Qvy#8#PQzasr&QQ5d~zym2Hq2O?*Fj6 z`>%k(u;OOi&~v$Qq2~zG21BBVk&7?I-GX7$SFA-~8O<)fp7rwgV6E~ERy-tbmS008 zSZ^d`6pg%Fvp=pMvU5c`jDkNDoe(z@zZR_3#mX3c z;#Mc*=Jp(rFIu(lRz4`+S8$S%ixA04uWx3U(fXFR){zkBrv_S{ zh*;e+2uasqawr)G&y2(nHOB;UB!eai!lw7z=CCvD1sKVI!%(&)Xfp=H;1D+CLq%!| zu!NaqS1L()Ip9iE3nz2M2|sd#kArylQ6 z&r^aQb+*9$c%3uLXJC zKoA~+U*qLF6oe-%t8mie;Pr)r^HXIgIDcv}Sx!#T55ceq_tm$U4$4Bo`L9Q2y|>qD zHGs03Og||_4b{|Qf0A{FFM?5{zyH1h8v7wiE7c-UJ_9|P@^w;B-5*yFf2El3YV zUc`pBs`ZDFl_Me$f1cq0K6oXoh^R{K{wP#~3;4550pbrwYm$i_3C-dy8pSmVPAI*S z1kx-MF^Qs|lZWLhWefzJ6YaTcNkt>8)DsB>hn-1pmbDAP89u>HOMm_JAV2$OByng@5~p}-oV5pjOegQsT9J?8=)uPveF^neqn8$w8Him3xqtW! z>%s@1;nNP-;v0@WPl7tNZ5nY0ZOMIF4$ItGgQ~sM=Di$FOjMjNN`aya$sM5;0V2CYovy8gxk@iSlsH-1C>6|j5@iXJSoX`PDb1P~)N z_|7<*May<|xjGfr;23SQV0}Bn(c$Akd06FG^wuy#iXaqjus^o^&^0h1J0&+5reV{3 zQZ7I5#+BWJ6sRVNR2FQZK56hO_Wp2PQcG=P&>c$_w?n*_;c7VCT4VNe}DV*yd zZJYgwnCMO<IKft-!wWLuEMtXv)uW@Z^m~4|%=7 znUJWuk;wv69wt~$C={MJV&&M>B7R6Lv2brv^*qsvU~kH_j(GY$#q9+z78U#B_QHLG zFpZV9WpfQlH@eDjt6M#{U0++TC9bcr(*?BQat2WrO?)B|lByA<8 z7@Bg}zk+-8=w^1F*ghii4Zlu;sr33jytt7u1QBNzFl> zEDPCp4GqyYP0{lMtC8Ay@`#k7k4PSop<$7V{_&KwYdHdolbsC#Rjt-V3lmz3+$F$7Sj;1rC;QO3#v=rN1}F0aI9ZL@Vt1flVV#TR3O5}9 zXVXn+EFZ1i7H~G*1UQ@i*8w=2ZUUSUx_h1(ndgypZsR^2e?KVRDMfCu`4QVu;&c<> z%!6<50dQ8BYc~S+3vh-oVhzqt%;5_IG1rjciKj@yCNY=Hs#462=C4tWBO&o+NZ|v~ zM*DAH;+tWSM%t6iw~O`FShcvhQrWPo6{Mk)qK@~?tC5a*DgJUoX^F9dVw8qKVttf(>kK8WrVdrnYJ^yVLRq%+r^v zmQ=*W24lP;0~U=UNl|=s7pB3P?G2Q>i+Kmh;%L&toPo)YT>P5X^m_`N3GXD1EQO%b zepD$WQYBLdLlznQYCtPUi#gx2;%Km}AiFjuJ0-_9v~@X)raw%6NUF}0pS59<#+c$3 z!m*7ix!Vlw$=uq4k|AKqObq-zkRK`QOpbYor5oiXh6an$X6t0mU`3WXYZ?s#@cXl- zfvD<9=?V#dNaB?VpI83V$N~>W%i;#d9q_0#qv(>A+WpZb2NwW+dN~lKf@v#OUtO!N zY{_Yjmz+UsqC}!oMKi2a5;+Eko#`=z)%9OUK$botqXqg5UqT4`foXxQ>;;km@ux{i z01Vo}fYHfBhQ#O)!U{syQ{LtlI8 zpvGki*Ho%8sIAo<==D`zMQ{{M$pl>>qkCrShYh^P7wW_~U;JuXzh0u%cA}KGm@ua2 z^2W?8B8N=RN{8>ch4Wz-cm``k9?d0GQ3OV1N!-=v=8T28SrfXif|%r zMay!q;y6gr`j8%dlz_iT-b7KXC!Xke&KkyqxBtsiy{2`8>QStO>& zI!Ew(#5s!Jqs}q>9y6hJhnqNIy9NP(OC$XKvc3SkL zIEQ05Esssuyf2F+?orckAU-^X*kywfS;Q|Ri3*C1SP!k8Ev#yA9P8sh_P`A~iVyLT zGs1ro=nL+pzby#kscUiIkgXzCDuzgZRVNnDY~Ivzg^zDoEHgYJUFxG%9f>aV%vWs^ zC35|biuR|X%NX%mCqB+uDaD0 zyL(7|=Cn_MlQ(kK7mbI{(!k9)UyVQ6IaZ9zP$V}Tak`)jRs%w-4L(oSYU|h!x*J(~ zp15}8Q_&-iHI6V`_1I$K&4l(K@vK4l_EZU`yK$W)7!wHX{}pcn=f_~XPL)$r^h2{m z56Z?D5rP+!9^S^v$HiD)dmGV>L12@hsW+)>KJ$D~D;x?va0Y7JNp?BY;)2rr5HoI?d2;WZ5rrm?Z$7I4c;Z~*mR)$?>e zUe)68(=StI2UdRdK21w-%seP~T#5^7wdoR<$j*?A)lHu&BCKNc~i(#*GV z1+m4wtT{d&`;cN3Z_#Rhg5O6kMAPCHqj2S)g8VaWODs;_Go%uOkx|g3Qe+`cyh?_P zBBsR*MG2uFy%J5S)6C$Q4Yp`NoIP6HaeAGf9c+E3%ePLpuB9ns?mXWMt9=TEJ+@;G zEKfnazd4?eqPH!(4?t1{eR{?y%ug}wZHQsQ){r$iJfwjYN&!@^au6s3YMNe~5^)XM z_LxlqC?fS4NYTSmKnh|g88JyDl~!RhgBVHJMz9^gc2JKy9M7G@WM~P;i6a`4xJ=+4 z5GpK}F+F~r6eWr4v;>CU2BY2$o}oh_bQJP}Yg7PNLLeoQ7i@qOR@U{O1-G)kO==ob zx8f(!(jqktVS&0d3lMej1?|9PF<#Qo0ICB35L#fd4b2TM9hNIu8xvd_x2WKJsWL`) zH!0(9KnhVpZ*b&|lv)OOOdyDUHZl^wP=k)62J5^hhi27Pl3%$`t0b>~8g3W|xq_R1 zO5{aBT=k+cKy-i2E~{}?eMG|tylPT#4eI*I>z#&}3u#c7QGPWMxc?qHj;p!z42$zm z@a5GeJOikeF~mrz?Bf|Qr&E%~7GMUa6_^1kMABSKNE+rKL$J~?EXYERO@7=AW@yA| zJ%sE6>0@Bnlx<3eZ{Vb~Y~^4VeF{_Qq_2YK1C6#W5ECRwtU_2DtoC1kwfQfBwfS?5 z55OKN9D#?>8z~njLCY+|g+54J1Oa_KTm)`NI{Xi%BQaq|P{}zW+rb@p%9oG`Hzw>s zoWeP9$1u-}U)tTJu&{?w=)o1TZ|J`uenb3KSg5}#{(JEcY0!C41zOx;u&eX7(Ktc# zHjT3}H_lD7O4L(?CBSgdn_|8D?Dob|sd^1zf!#r+|JT1m|N1Yhi#(;({w(r>3t)H& zM7{Ab(4El+%IYuZhQ^Vy@>42!itwMh^AJ*3enB_>NTT4@aZ=H{o<~r^yOtivy2Rh( z*jlXmB4(b*s*j|&ilI-fp)ao-cmDLMx4v>> z@a^TQ-%oM|9x6SC;3yP|j)WzLmr+A^GivNH$(gR3);Gg`y0qAU&e9EV@*TpoW2!uT zLW0*3>KtK_42Zd~1}CVtmugRX&~|tXac%DjIuRO)(>uA83w(#`Bb+Dc+<}vHqO9$A zYll!PJ%;uW4I=F97$8pmeuUy&wCiUp^|y-1C%>b8Xw{H% zvM#RZ*Yn~vg{3OzG_h2*h6qVH?nr@iDoa&PY)f~r9KA%kLm-sDs?r@#skAU6=OLr3 z5$Aw&5JugIa{ynFz38Wi_K>gG6$4W{8B%9Z06LlK?;2Kf1kd7(;hc=mA&P7aAoz6y zDgFH5*FFebFcFHlHTHaWSNzWIF8(yeWE?w^40fjEr>iwZhROf6JWlIv9pg!N>5Z_Wo6OAKfJQiLE2t|3j$=2w5U_m1S7%7(`Otz;W@?hAR}hi z)13aT@nx&_oLqeUot*f#H}9jtx9?^kw?K|~N?^nEY3!$-=CpojD;vE_CXxy+o3-a@ z(#s7zK_5A-Y%C#&-|4v37)C?ZFoYBW&5pkiOj`p}|8|5}Ie)UU_8(UAS@?DPlh4BI z9yBU7XYR^BQLo<5E>%|UXY(mc$ZKROscgQ+;TTIpAl~KG(n_|erc25LbgJt$-|e;J zGrL{oL3U}qviyOPGsC+JqFzNR@{5Udy@Sql>tbG$>RAElO1V~MAy5N4LeCY=MSxEQ ziXf78aYaL7Pv(0l1A06uAjruA1FIXou_wCPrVK2+6sJgzBn-&#d;NY(;YNDoG%GFE z_TR|^I9lk0L?veBaa!0Sfu$YI^+y>`SmSY;w-QmC}tXW^Jaanim`4lz%c z%x`CGP0NXgX)L~Sw)|r}0aah)R-@tJicxhs=ngk0^2BCY(tDd8#%`ReB8ZfkJuVKAR}7snTa^{>#_{7)k$IM;ww!;UXrqveZtnw zT&y3uDMFUy;?$BAp~zLZ4kZhcYXVvV#UsHm5yJxr6N8{7v5*PC3}x+>igFq`4jfB7&4UH$W19j#&0o6RX)Wc;p3(n8GnK@aD@1GiwrJSd+NY|tn6L=wrv6p-i^#N#aFed|g zLI_|u!{Y4+YAB;eq|(?j*x0QJCU70DDmpxBDF+86O{g1L(8Q+?3_OrvEejboKnW~n z0{=SwWz=Jy=XjP zeI~>66p{kUEXM8q3WH*W%3Io+f8d@sX1i`{N_Wefv|X%#IYGGv|XO=I&hT zVl)*CDfd9sp{$B!8GTjW>qHUy>^#GxxN*RSPz#sn2YtwYlt7PBRR5b->@BB&9UeP1cV(u2yrH?EYqNX_r7WpK1Yh#TB42s-S# zU~qcs5D2qf?&*sWnuD7W1!MQAPVutys`kgr&h4G%M?@nMYlICZKYnS2F-!N>>Wa?D zZB10B_}qD=L}%`PM@n08!zD4xaZmCoZbmh{`~gfZd(%#1Vfr&fMSxGhr4kbrg`Z@% zOh`_g9IyT?{W<9SXkn1#*bvVVQZlD=d@PEHC3VzDlGR8*%^6%w+CpBsrZF!!`Z##j z04)WW;u253S%3CqX8_?K0wp4Yb}@k~h>A!`f_7Ty|BWVa46!<1xerH_u$Ri_-BMKz zMP$SGJvR61Ii4XAk0_Vws2k3EYUkhMUf* z3x8Aid=40bFfN1XkzfTB4<<==auVisd?rpj;YUFw^kJ+haeTq2hv<(9O9wTuk)Oou z=3IuJnEgLv<>`NV^#w8WfcB85Vch7y{LEVl8*!i9eD}3m?`jqUVE2ckxEI3L6*aMD z!soj#-WNrLQoAeeS@+i0YIS{m8Ai?(#r0eD2xlCPhmt|6L}n3guX6T_NkhGukzC6C zj}Thq61pSxRHHn+BGtLFQawN0is zIey|;HN3mFQK}kWe*3Mhi}bLUx)V;;;eQv&`8~U~^6Jt2(M$P@lXOVc&9#N2mkRA` zr;lEmZmPXF$ybuBn_cYv*j`Ke+KO0C@G^`caVFsg{e_N)9@O9Y5u>v7zQXI>H$%Lh z1rdeedsW2n-TfD>cMw-=!6@XXjl#@%WBPo-m|o!AyvEE-6S_G%Mh`0207=nDx)40e zsTbBx1`W-^!udP|-YM)9rqd8;jlsUbk@yko*w6?m??-ck$A@!+uUW4TziuTc%`PQZ zgzt#I3sEI@j5z}Xq6LHh;J#@N+xjSw(YBR!ki56+=)ojdh;?F2x2=;%Sz{+o+s3%9 zpRx6`&N;+bp6to%c5K?#XKaDEdFO3?*48iB`Zc@zhBIt9(^!HNw>bnqChZmGIGTnv z7RsE9;?+yoK7;Ktwkz1KV!Mv*Cbl=R{fKU7fhI)cfy)rIz>#8?HERmXM1f;)C}Zrh zb|9G)=3%lpSR;;;0@Qj`R?=GVvak>a3s-}Qfzk{Md*nKb<1E5kZZPNMSH*-W*;uUG ziv2SS>$c3}sq9Ce0Hk{aiZD!`T0f~QkfkxM4b?Q@*jA5bJZC?g> zIsW>mBIUgEsYoZ@{Z#aJtw6miW&P(c^9}(FGb|;3EFMQ5m&wPgF}7$enKvwf$^(zf zG5k5SXi<_EaK{PbA=%%aJe2i^{o;?(s6{g>#~DWml3k`Qjy^66be>y`PmJA&Lxb`$ zj*c%OCOYk$SR#wz>72GTaiB4t`@g&U(ipj}?7Vt=ZQWJ9?_`rKk|Nn;cUAAyGTcOo zvX;?E8jnV5(N*15>=v8d?OrHykcChn8?b@EgF!rjfdm|lV~;&v5;zXB*|Cy8Nq_`w z3X*>0PZlId3?r&RkN^o1FyA@%-uLc%wY6lHVn^cZdUfx8OTBmQxo7>3u{AMPJ(DxH zCJq6BFoE)r=Wu(uz~Q#6dIoVpKA?nOO|!xSFN=nxirNMGRV4>Z)|%3X4eH#-8|nPcC&=y3zO)8nGuD zpTU=&t35IC?Fv2eUMK2a8J*b;+6h;1Ivl(^JtsmwrjX@ z;$bCI85CE30X+ro`6={Zyw>;9$9NfjlS71&slKu_^ukc=-q3Qg`t?$>GK?F16~nM6 zZt3+0m63a+%c<%cOJk+f)iI+R02|eB;xhAmnKvKa?k3ySx0m`Ja>LvEqG4&NZ=V}} zrsRsKmm&^Y;HKqL0>5k}7u#D-SIaqrJ}Q&^aRb?cpH^2V>F-*}#g72K^N09xIRkh5 z?t@9AXjgCI!|AH7KM?eW-CGZAdf*#N4tB(yZ_!Gv6{2&h@1X?~O$F%cAabIUj2reW z8#lbABO*$6yfQwugg=P9A6xY>eRh|Q2Jy3ql^sGG$qE0Y_XfB@c*(y~US3B`I9IEc zN&{(J`0w9-ZA|kjg~qKs?tB{=OB37*I5Y~judmy;f&FaXrik?0dt`UJjWIhr-t7&J z%=2zzslghY*i(s-93QUVEb;n<#UMC4Z@pZ6SuXTKJ051)R|e7qw?OOF$p&4tTId&P zsin-%3V|aVJ@QDjLENv9VCkpkCt8jWvKtR3)XACIMZf`|+HbmlV36@9$?AuQU6`X0 zz>7p2fJzRs)lZ;N6T~XLbb%siNfgNue2&6h%;CDC>Z(!yU4#yx}AhiRxtoel0c<#iq=H}E&?ic$x$+X&!lQHl>D&={@6Kw z&juIFTpf8($o$?kDXFU?lB+Lv?bqrc?vkp#p@Qz*cgX4hQ( zDTiXb7_Q?sMgk;VD1Re*8zvhW4a8)7yGA*OTl!i>spdnPK}dA8#~{S#234_3dTyaM zP7;ok@pYgmBeP?pd}mjo?Zwf|9%pGNDv~&@nThzk5i^l!BZB380w`hqLGmr3 zP;d|>7L!x_weZ_w*#LRUP|6JUWZ0zdYW8vPC~7i|b>b8`rTd;U#$JBib|_aO8m3J} zqC>8|MzH6#3F2IcPf^&YMq#3(Jru_0RuncprJ();^UobcQ^t1$dZX07USZ~~LpW;m z#b+h@BD&K|k)oYwjQ3j7*t{@B@?fw>mssOKrzloJ9y*wX1X+Q~2zZD6A|h3>-?N7k z!@?j9cGdGf)ONrR5`_&IgG1N=i6YRulCMItMOXcN23Vw%Kai#(1>cYC8HPCls32J! zInMwY-@s+G2$vBMixfOY(PSd6;Vpcl%x;U@g9yjVXdmM7xV!2|&U?N}kzpbe;jkb> zy%@j|bjpYat9lGyIF_M$BKPL=#+%!BfXJfEl67+ksK$7RIMXDcPSGDq{Uaz_!Ty$O z*q_jreWcMo&8VQd+G9zOX9tNI@DNI^omIr3C#QU9ts}{F<(-IA({<(fh-@`ASG5w+ z%Kg@4JH_S-IXqyFNqE~RjUYY{k0(gs>`&UzEkR+VXBr8^N+nzhQuGq;m}QvQ?1XEM zSd?pK69Op~a9ZsHA72nc26jozD8w#nLdeKN_YJ`=$>yo@4TxLvW>(DC4Axj2!ZCEw z%uPA#l5si*42_}(-6z*eA7<`Q5gG4T_G=dAI>`yhz?`BqOd>QwKoErXVGW^uqkIFA zc8U#-X&_Uwr#%2u;^d$*vzRxF1+$blO9gWyZ*Ji4w6X1q0hzaoXTS6I_S+j%XBXdo zd+Cg^7Jm!77cVWH5q6i(jm_Qh;`ny?M)}Uxcs~5KpkXSA^AWL)?1Hoeva)O>S`)i1 zNlisTvXCr}3Fu8&&|%tuDH38Nik*N%0>2iPiV?*dMUpnsXo)lS8v}#bMuk1I6|SL` zu$|wMvf>lVq?mAkAeD6C5KehnAu~>NOmto{Npd8@lixr~{4I0IpoklP zA3`FEknKS<1llsmgs42W2Vs&bL3J@oVo%8_xj!soOisKqH(YxCdSgT!unBz_9viTOwp>LWu^Ts9f zQr^5&FurYEHosjku9!Cq#|Y|yA!B$1+hHi!FtxXY&x7sm`!WfUojVAPjRV8`zfuHu z5PpdC8Kaj{%>AVru!?%saaeTHzl46j?s&CtA3mV7X!0wxRtIsGPQ?9GDY}qD!>c3N zU&MDU%G+P7kD!)yFAb*Uo3jC{x$HameiGj^>?lIEj?F{Ppef5u6Is{*VPY~s?gp$i zQ`qa~y*%9y{e%LVdbnx&IV9H`6TSQ;d7>)?htoV7`nX}CW)?gdodt~?POCNCI-m$2 zT1`(S)4SU}3%DfqT1Z7=EE3<92?X-GRL=#n>r%ZakgffQFH7|bYYj52?$s1wx5BrH zc!~pMlpQGS)&lvndlPCAvt_|^iJuY@R*Fnsm<^0{p9K0_DYte1^TT0~helvt{k5~g*8IcjUt(vwt! z(?t0xqZm`cDEyPPg_}bdADEy1MNMu*iYk&5v)?9m3bHX+xdz36b)mwJpLA$x`?j_Z zWxN|2&xBJ=1L+#9iPa>aOXeId(4Nhb)i(j|+xIsfJ(`GDduqsttU;lryAjh0DkBh6wB3#?fMjcx_fkhHjAPOqe|DcN4X# ztF)pu#Ct{j<|2ncgp~QULl+99kP~#aD5l4YxP^Eys-cI998y{Fuz<(KBAx^aDYh&v z;x)<9kg#w_V9tYS(sl+xbP6|{M8y}37{!6LR5=>s+WsO4FD%Mk-oy`s75XA7v)tIY zRo>VYA%x&Ru?bBTtT*oF<0cCxhdNgRWgO+VFU-rew>-IATwf-Y)&V8t5LC*QIEv$E zo*th)RNUTv3;pX)oLU-xdR+f@X1wsEO@~S+Yt5s;g>!R~_q5ip-IwkXrKNYzk%xKw z^wZ<{DRwp|`1@JhOo}dFSmGPY>bEk9&S9;=zvB~hmM2{pHFp6JFOzRn)k$Do6^&gz z7`M)|!6RY+^=$J;NVi_+**EiRqu?Z_i*RM<=ko&%P9fQJu0gkW$mhkwJ9CghlVYs3 zFtbRGgN4F8%2mN}pjB#fP7a<7m8+tVVOYwb3MQ#m6>PCt_CBM|FCah$J!i;shCOG* zGa-f_^X%iEc_MM#Omte9!?YS>Mt6>4=MYclSnLV@bPpTjN3b2mmcw=m+i7fP%xo8I z5|-s%plJyJq$ZUB$VAaZU*ChC~RmPcblT&Y|VN zhUxbslJV0D*v5^e3HBqG%=P9D0Z9wSUy6F?_;{e?!_bQyH;R8JlUq*U5|gedstXg` zqCv6B>XXXF-G@UEl`)r`7o6BV2j;y&jL-0S$Z%)TR&jwX3Ye@BbO~*A^uYt*d^tZ@ z_27|Ky69m#Z_X5dac+mseFWV-e7d955xKncLk!7bNG}gLu7*_X@Id;8GbVq8;ioXX zkB6Vm;ypc>+NWxwpNeXtXO>K^C7PrGWXnGHobgNMubB4%MP#LjFQ)Nwke&!2XgD)9 zU&|cUTlh4Udov6IM4c|gJP8710|X47=_&d{_MR+W()3bK&<0;i5PTcgb!)YF@dEwY zUg|8|edSuS>I+Tce11Avybdl*sbA~ynTcM~&EUs^5P=KNwf-i_C7b+qI`qxu=;J)c)&jyLO^RHJB_0ZP_vqI7+0 zd+l~{w`@)47p!UUq8UW^%o3)#BWr3n-GkjRm0&1RX>2O2K?w|icxA@I;3=ZEhN>9p zrj3qHY<<`Uunl4x!ZvIokep-(5lC)O;;e0%jB0KG)f`;IwD<#L#lB8XaIj$jA$L77 zA|FBv^2G^|rmiGO`2wP+QA8~~DC>v^fTu~%G|Ay#TCbZc2D;Q{TbFBG~4h(?GPJ)(x`6M$&lIdx7{GL;!%uK1=I zH$$f&sz0?0(v~IV^xw#HKQy{E-OmZP6gvh&heq`yQBW7!wnDn3`d)BJwkX;Fq9dzQ z^Xvtf>w(G01jU8BMA$l{)+O@+7_Nj7ZYjIk4f7O!u7)_o3jlGz-K%J0K#Tnd^|vSX zL%#$l1D43u^7{Iw#{%fJUBRl(H)^fn0@VT zqr#$iCao!F77>Y3yyXZF{d7^{QDEmtex{sMP6{Nm4W(lFAk@TyEIWA*I*&;6wOzP?kr5NX_!AE5dAlFp7ZyHz1-trz z_?F_%`#D#9W!6OiLjyPuhwa5w#)PO z>)V^iciz2wd9%E|EQ)v&o^ZF&qj((CLS)=y*Q5AKtW1Tk1PWz+L?{f6?uV$8$!&^B zv*9ozxA6I8SaLI!As3gg@qaC{jh%9q=%KP!j91c@d?@ z4BDf8D?xduMzRB27iC_7cX8+^N#V@Hh~^~71f{ZQiz0X!$!jR;fjmAq{E$9Vv;0Mh z$awl{26-=#?Y>*Xur99_*EW2U%ZTRRlRfS6?}?KWd%9t)CJ-vKU3_tEqik#&3NIBw z+t(1JrkCS3msd6WqBsRnh6c?b8x^M#Cn51jTlnM{q7|{*k}1tCTGMkfPhNz-@l%Vk zBZP>-M~4WA1c5b6b_5q6JjIAd9)gP*B!M?T30Mx{H;51$ONQ9=<8#=6=h=oO&1HUM z2KSWHmw7IfYSu1Y~ouk8d&L>mwxxXM@s?t%IkNF35k%8kn zkd}6pOq|tPSPO`C2Q5lP2+Qj|!GJB~uOK|KyfPZJZ2+fu2ZdnD*Wq1;S^=KBy1Tn| zesc1?_ue~KT-hv@&n<7>nk-CB%}o}$q}~ogyibG9go5-`rg- zZ=b()7t?{Yn8IT(iK3n$^Jo7FVs;AqjOq?Q;7K*fD!>g0J!qP56M~U)h-q00mFiti zYDe&kc&gdpa9?n!dSi>>0k30P`#%BqDBs%o;6T6aa>P!{!)*a5B)NaSl*$0>|f{+^Pzv*M;tkcdc;DxX+X&#nrSX7%%Or< ze$FbOD8O_9%fiAU1qpZQ)Fl+~g~hq7*2*uzT3lG@4jR?tMNNQ(d{5Bs6DUdq%+HSo z9ktH}^#c~`k5E6{&d(I)1v8YdM%>@*^ps$TqE+1A?EJjoiQK5}&zdXD3Qj1`AYZOE zH$NvB7`NBnoi#r_Rd;~8Ict7#Mm#%tX1+H&KRYWQo@nNqv-5K^i{j~VtGYWoKR+`q zo}N63ygfU=FtZ?@9(UB7gj^M`Z0e2V~)C4!y z51U(jj7m3{2oZBU6fZ?yz6(*H(=(8!blkH}diE*LIpeu!J!8@{^PV;Bd9$7~@41Vf z@uX)y?O9**yo;W5*>j)u;?H^J^NHsS2n!G@JuJ;0c0I%^c#s`DM4Nl4>EIz;$U`ut zhxiN+@fjZQ%{^37;wW@GHZ)?4j$u25?J%}+Y)7yi#g@Z%0^1YVPGg(Eb`IMVwgR>p zY;)Kau${;D6t-uuUBGq;+ZAkAv0Xzr2rNGx>COv~h*4ELgU`5SbY$_Fu#C`v8hwKoV=0uUxEM1((wi}(D^L;S#r&bLKKE5M3H#M%$Y^hn{dqJI~G}<7_smj6w5B! zEL^<Xx1QNt&gi;T!>RkO;(0qY#wFaweMCSVf}_qiH;6 zp^2@z)N~Y0$8t8BVAT}|oP1CtJ zni8rBDKFKzTmnr=)wF=7#at3iDb@58nx4+3(3Dn97tnMumqt?uHOcCL>FTri)tySr zOQV9t=+a1KWQzWfm^X}{By4GaSfhO)$((9+BWPV2OGY&bU+Zm81VL~C$T|XHenw7j zVNf&g+%W)stbAMsVpfD_ZdE37srK#YVm_i;avuXMFAE&%($|rW`_u;85%Y zO-i4Jt?D>vSPNgUP^$~UISA{j7(~NCDE3Z08is9acWq-&m{-7e^_VNXTfe(KF<06Z zNTHU6nVl_Q%p!L7Y2GRD-)a6k!+&SB;4AG6M5tQumEI%iPW_tJq^bkYYA1@S%>v7t zqZJMob9JB)8H%}zpm^tE06gBN7@6dLF46lUG+KmKIUL(ZQ7NfP)S_S?RfZ zKj-lv3Oi(+iE3Z=C7Z&$Wui zCf&`A*SGh|n%(nSg{V)a=CAG55Ju!+kDquCK4Hz_FtVZ@rqQE7ac}PnUiPyix&jIbBdN zs#N}5NNZ$}()?cfarCY==T)eS-lE>n^8L@xvdc<8CZGY4EvFE>RID-7M9P`#@a!(| zngFsbg$E83CpeBNVFP=}RYj7Sa8+RvS;9#L#zabiEJTG2%=BLn%@{~ylz*0Et^T+yFzXRd1B#4PjpYv6B*Dy52QzYT=2IK}2Y01MU{>C0dKL zwI(+SRmo8=k%I%e3tUz3Q%UE#T*~4gFqqzn$WlhS16vm??Ce>GCzKqaL}X?i=yQ~T zuE|>q(u@?SKjAtg_o?E^!<{UA9}gi6?NCZO7Be({%#9y&Be^7M*i$CLp5WI)_WBh4 zA*npb5C7E~TDexaDk_30!DuMN(N$-AAWr>@`&?;erdA|Mi2zE5Gglg>pDCV1r-UUJ zJj~#vaZS4OFG7^1#ajmLVil4K4+epUbLN4Z@h^qQ76xwN|T2c(nfjaeR^~q%N5X!$Oa-@%NOCaS}X1C2A=xi z@qlSG7`o9GF{%E=K+$ab5EUbw%G&nME(32g9F7<~={h|?xUwiR?Qo50u9f+9#IwoR z=`{lCI+knoIA}UN*>VugjrzAt!a_42fVq&Txn$)Fh2h3$31$!1q(GjrpJikIy0U6C=NvV(U;Z7={hv*Cbg3 z$CIp@;V1%Bn00PIC{Q@A)g*g`AsWg6J4!K{a1mlhDR>h}>~tb^WFm!~42(DXu-w2- zlz2duU8!8UJ<<7~V%=w7aE8n+|6ZC~C=?+qV^W%DXlf+L0bIum{6P&97a7}%gAZ#$ zy6kCBaDq5Ft?IXpVr_~$I&%4i1Bc-2DelrlD4}Ettj=6rvsTw6!mwuh6!$>1tm(+I zk*H4Wwq)va0{wFWY^pcMn*fXS3X83g!^DM4?B z2r;B41s-&f|uae>c<}4Z09A|q^%~l`wy_KZtVQN?=#2GiXdbGsJ!l^C>>whs#`c~$L(wg3rE%2GTLo;w&ffa2 zE1G)Go~`Zc_7B+Dl*7CIaeh-DlZdeDh~G+-sL`ps4`F8!BU&!Q3a~#f>*_GZhdfao z%7c%Oql_t5l#v%A|{oc^R@{?X}A_a7Ef79cJ_uc_{yNVSCdnMZsS89~)|gvGf_oWVZ<^mBzw(<=@Q zx(-lEuaR}`nHuVZlyq$)FwyD6sk+)jobv1-PA*eMd1cE|>|~R&ReEOLt)O)3#)?K@ z@~8-bsa9ffa=$feL(M5-ZA@75p!$U68;cK=GS1+{Ajd$%W=P`5vWVEeza+TZ_y-J# zEx=(&$xcnU6V8NJjepbP*gjqe0rR$O?*rsBI}1S#C>!>n4?e4QJcNz}Fgg@w%z2%J zf&?oM49IYkQJEY-@-sR|iv4D(f@636QwVYn+-ZLbbdGWj4T)(vuOvAgu1IyYhlb?Y zd6jh5fNXe2FuG*%tutr%`x3|b2IF%1Y5Cq;t1CFm*|Xv-8U@O8MJQ0U5(Ucr))Y9S zF}3-C_Jm3i?@tUQ;wX@Xk=044iH6VPoi6C616LBFI=E3qBW;Q2V89l zw5Sq)NkmHm!2{WIIV*?Exo?uena~EQ4uoQ9U~c;lf!+UU#T0%u^a!UInA-kBAo!~u z63fDiDMh`9bcRMiFpWrUp)si~#M((}3-w5iN#x8Koz!R?NbSH{1W1j~a`x;}4XG{E zCA9@@HC^~(q_*(qkq+(sF7$tS~?BzlAR9}5RAcZLVa_u15}F}-L3JOFv7 zoyGOB41W4{=&lL3cHk4-&4hn z&5gUaHurXNvo4@@_sRuxdD(|=PqB2u=O_rI&^a+GFZBM-pufCZ-VTYup=U(XT5}mh z?pRLm&=IYt`2s6yky8cJU6^{~{c-Yxi=u0QDg%fFr8OYGild1rzX}-Z$V(qhjKCTS z0|1J{P|-E~ecwY!5d;9jih^HZ&=?xVHYN(MAq4LtGQl0Y1d zO?03MSdg)DY~7sbyieac$}t?*dBM2nA{GfKkkrQ)>cO71fhRQdbr@WVGgc{aqFH%26kiH>5);HLTf4xY{Z1$*L{C5r^|!|@t6zdw z!?1b6Skqjw`dA`&%@rH!BB@DlXiexkO0<4tKA0K4glKg(6E}d?+=Tbb-sC@_@^qj`zc~ z1vn_A=ul<0j+_MpMJC4x`&m?_22KL36a6Lk^l}n5iBdA2fEd32 z-P7-X!t6{#bVBp@R5O)F61Iiz{qN#v9aQgo_ZB0r+DAt#t>|d)G^nEv zA?=+8m2i6-DQT{Tl3v`ru?B!7!Uftx)a?z$nj~BpTN!J{Ja#k^jsuBahKP&Z8m)Mc>Bw;}S3F2 z{EQYkVTP~9Pu_;(2Am0&b`)f$xQ~xJVPnObmcX~p6X?!9MA3Q`jEMLU+Nao%Q&i0U zHU_jd4m4cNoEqA>#*k^{6~r*_`1lMuc1L(XdqQSI*8s_g)y=zgcbV=gtjCQ6loC3O zsE8BdwJ6!}0HTCYODiI>kcB3wsH^5!MM87)tRO&7WZVv$E$S4)hMlBmhj2SABB^L} zQ3xysvMc4hlNJyPVT0!3^a-v+7;~fmFq>(K)ZsKl>Uc)iN0lbcO!{?TrM$AYyR)`Z z4#15-II&TqxYafto}O^@%04N?q{n5X!Khq*Zo0K`@nI)q(M~-c z=1h%NjJ?;UmZD25kgfirqIRRGekZ=#5d&eIiAsl0$QFk=ov`qHxp?XOhyoc zVaM-5u?0J|RLBPM__dIYVN!viHk#fAz2v-~l4KT@0j| zgOoEr;RVs1XyM%a<4`fpIu*nb0kYI_AqMaWQ`&SY`W)i-^z5DTGS=YDjaRl;%EI^s zw6fTkmI4(SQhD4nir3-rMKF)Nm+tap9-=u=)0;!hIZe?F_xow>%K#JKElXlCZn@$+ z$|bV-W|T>pNjP#m==@B>&f5EFCK*};yD1%!4RGAf)2q>uF zu{dH&mMkFlQOL>9pZ*lh596i+1WYbD`xTobPg0Rd1n@zcM1lD#48lj9E*X}QmWeCc zOG#SDrs$7Czvx8(ir*H39sBi~xh53xS(bKTf{KmRXyUVN)u3iUGe%J>{-ycNs1J)0 z#0LU7?S~%DaHDm@2!x2ydim;y{$A%S6rrG+eXWc_6KWc3RJGZwm)|!av~|;unf&0WPoL>!#hois1MCOk37Mb$XtzVnVtM0C!$X z&QXJCMri0selwA*`qD~oFz00ePFg=o30ca1(VpBVO7grY*tx{j=N!+YP&_D5P@tEm zv%o@NSaVkP3h!s#$Ye~5EixS&XA|BVJ*daenVo@*IT zsV@h-5Xq$##|#_8r0Q{CF0IZIHlg*ZX5EtJH#Rk>&DG`7a~hYPYfX_lm!7NT(&|an z=hAh0|3Bf<-=om9gK%l7W;A2du>SenmRazheLnpYtbk!YEtchJ#isSxHr3V6U=gm7 zBJ=erl9FK9wZKbF!lIFou%uI~we&w{K%fEcDMGS>canEWI0OJV29=}&X! z>CY%+bJ>3Qamj|tZ6j{e^6lUv)1Q3QYUoGxhLUMqgrbo2BF`B$_!|p*+_^$A!ZcYV?>W$2$Ze?&_;V{b&%%s3JJ_2>33?z zkG?QhkxW5mCJ_v;S>l_ViX@ks?s|=_$$gP+PSKME;*f~2NcJOcFNT;30UQc78agx# zOh^LCk|u5TA@vLa2heH}R)LtC@LvMl5rRED)Llk*54L`wP(gV{!NQA334%BZ!&RJ9 zH{-grZki5Nf3sq7L>3UPHb+tTt!cDU4iL3kCT_1A4OzlQvSQh4m+Z0q@xACq%^@D| z*rpSI5e?9;Mc$q#s=p${!n{R+5GclpPzdvuNhc+kn9&Q?>9TpIXpN!OLTm2@8>QxR z9C!goHWkn`VG}b=K(`yu%4QmK z{+YJQX)`RR2}!J*ICWSG(>Onk1m{0+3LT#3Y%}RG0k0c$5M^S-mtlTV5P7JxxyY~u|3EJ#JU#52OH~Cno`al zVan)J#T;^8E`Fb!!Vhy9u9cYH->;ZC=R<~;sZHA(g>eRppn|x-;$u6*xIjNGOTDpv z6oK)8!$diMLkxcxHpJ55Awz7fZKu1TZD*`z`n(1SeR=iLnjd&D*0W3U29rh5*&bv8 z|NJz8RE^P#=B3N2D`!{Al_Ju$&OV#GN&zb+Du!x2=RQAdO9SG$a6Zt%9Tav!BwCK{PPdSAy$`3h{p= z`wywl$NS3u7?!5Q{-+a2PklHH`|I&o_BN`Pp$?MxYGiNVYezLBzM9!@;cI8LTYR;$ z*J81g6#j7B&OU>lOtn|^IN3>j%~l7*SC?=MCX&@5@zu*B{dS_OIx4=#vzVjDp{|T9 zBAKWE(W8_6Z{g7+e8;~R9zA;F(W46Ck>N*)x}^kw2T98J5Tc$r%{nDqk^iER73?p= z=jp4}*Y|eH0@djif~{s&ri84MBG#LS@NChBJoX@Oz6yH>gR5ZDn7hjfpT{P7;_^so zDHV)bU<}l|PszzIZLZv9$9b~2ePib(UY?p96b#C4mv{HJH(tNHRTf8`4sIdxNG790 zQ_EC*spZAQPq+-PytTVr2v*p_@y3@5jwvLzipZ$j{bq4H&ey}vc;f?+^YF$_`H98@ zUI)hrUO-Y@h#p^aH_HN+ycuhHdR`vEKWAnkpVICWu*3@ptfw2W<`KF=Ghi4t~tZ~me>X|vuI*t@41hCM8m!MFU z^gU=J2n)7=$6x_>*PQy~|J&pU|O9`69G?L0RqGANu z#8cpQ0CHdxovZ_IJH6=7z%fc-o5Hu!H4cRji@WU{MqjTuwvX7LT($f6ui7yVTgT1H zVF3Q8sP|!TL{X6Klj?{VCe~aGJBPC&Uxe=DFtHnXwsAOnkfu*)ohZ4sUlAyv#BvzT zR$|Lqj58P4nNW5qQ^`!xAJXv1!7DVppT}GBnGmZfz$NA))SHt=3U0fnN#Z8bq=SVgIdZM7Fb$uL=5HDX== zg|K_}{|Li}0K1Gb;F!G+sQ%t(3?Mre2XO*v*%*1_EhJ-z^$(Xmf~j%z1X(~rE8+=| zr(Vwj<_53gP0=4BM%O3CV>QGm-<)r6=+jg#zpp(impZ*JF|NWmRuYxxHLXgGjA&JU zGf|fM(weYztx6pgrKv84+Z3`Nh)LwDf>kg*Q8s=U0_{HZ3x~3f-WocB=tql7 z4fhcdg<4uul8)XQIy6d7qL`c@rvsIdJ1{xD6(%PnTV$W|$>|Bu3T&ovu9cn19>Z4{ zN)!CGhhVE&n-IiCWFs^Ulw|({&=HyO!_>p-uD<3qqMqFv>XGxzcW4dPvYF{vTiFab zs^S|c=yZ9txQ&8MMzWT{uv>}6XCZZWZEbHZmv?r?>A3M_9H>F1tDoe@<*AcvaSQ$! zjYCb#WX)!BCPJRsnQY}}rl?G&a2#+PgF2-mvH5ACt@bjb4;*kdF{Fhh4ij5PZb z01RR7MbXcw;Ho&7Emy;CeD+`)kaeCc6Zl;aTm*cVL1Az7QW1PZY>hF?mDz(5GMxhG z5Q3fHWf@xIPGPC5m=o@gf0-iZu?C-_uO_~B{Tq-MhtJcIJvg!l>l)Q?N-}O2xs<{S z9Puq}f%6&`Z2AN6(y+9JXc5J&xgm%w52Hl@(^;oFYb1rd?Vkt3Oz?fq>R82X7Pb~TT zeTqNr)5e(zY-h3Mu@%g;lZeB52K^oyKlFYq=Z2F=f!Bk>lJz`I{9Q&Kxmnhw*i7SOo4C{!^Cw;RtN!w9peR+I}-=V!l+WTGF zJ5PImoA#b8xwH`5ScpsBZEAUnTe`HCr)l&L==#sl-iNgJHQKvRdlzW$H)-!8Ka9Ua zC%MGCzel^5OQ|}Ql^x>4~nQ>EhS1e|K8_lkALs;w8y{q8tw7*UZ6extR@?B1GsTq{ZPs!>ltz*TsRF?30XhG0YSt6ZMI?|p|E546377lC( zpC}No5E$UZ!Lxl>E1=Mj9|!E3qQPLEWfvzV60zbyxDF8Vq0dnmd&oQh15?C2;MvYY z3J8Fxb>w{wTdf)&N6flRSbaF&^P^ad(Hg4hHz10E6)J?a_aT%K!rC#w;=(0K6+&T%}0;?fB0VQAh@@3Hs90j=&)DWIn4!s_7$%WVO_;P!|!b-q4y{bqo>x$be*pQrMp4d@^Ib zBgmA@=LxQ1FRTbCs0D-8DIz@|LsIC3S+;gk+=+sA$T@waDx}D8^{=rLz&sovrm&Ie zp;SXMs!n@Zl^Mqr?big!P=9+!M!y6|1~T!TU9v*n*)14FmV5_@1|q}2Dy5&gHLH|1 z1&#RhlSPOx)D^w3B%x;339w5dQ52e7%tj9vVN{K{B@*)p0+3uVnk5DG__c? z)0=05*2pdhOoW2S9(r?Pww%nmYG2auwKx&3_tNv?T&(v9dt<~3Yc9Ej^-GZDN?>eY>DW+G~CkC_N(#!F)u zwgtGkC_gd2yM337Ze*^MQDS3_Odii}Z*OiJZ}O?ncc9`te|?>gF!NV8W_3sDX} zTa(QkTdFWLpcWBj+||zx7J=g?-FApMM)oeV1yk08^vsdOFjg2At7=O^jtcBHld#*M z%`#gM*li)N3$g$^|AiE*LRCAkRtY3DRG!C95PZ{_eJxsph+HrnWrJ!R)$Z(cP_08$ ze5A!IRW{d+iX$-LC{Cw?8m_uAZV8w9Fq@S57{Z|$is|&rd{70yEJt~cK4%>}lQ;3_ zRogo9bH*|xAo?04rk4VViDJIM$CTrb+`y=F;q_t_taj#{{SVO>XW87@{{cFC_dmj4M6)OQ z{uKnJ0j|^=e&12g9#|j10qayG`jeXX&47?QmpAt|0^}KO#_QefsS~PQfmkA!ZrSn# zvgMY$ySlc$vZbMMYQu>hh-DoQRyVzu7?t+DHD&09LA3*;!~u66Eq078V-dCt(+6A@ zhT+|VS_tu1P>El>>R?MAIMq-W*7)i`S&yrAVk*Gd2#>Yi!V;D@^5Ke7|-Tzd#w` z;}SHYAW&o2-Ba&yA|3(!(s)RtOSdE?Rfc7-(HSI7HGCiV@$}k`V4aoD&4k_tQl z!$ZoBOW*`xvWOWc+*Ck=IGmGYTmfS>%`2E%mURV?J9aqS4RiDtq%gsm-BK=vMVu@& z0LILoB<&ZmZNNaK#*XY8)Q}MdY&2xESJ06C8W?=?A+X1Cv5%!a29*!N{|)ig2+S=e z$IT+iZ{%M-dSw3S(W8Ix=n?j+-L+hSgJYo|S+u%ynRWreqvt1y5L(2uDGx4JW%ond z=oAS&1nXsi4+6&G!wW!kAQ!+OplrWotkQEB)w@km`)*usv-HIDoUWcLSfDRRpl3Eh26N$?Te~=YJD(gXKiHix&0|j3}8)3;V6+N z`J7}5s8sAlGJN5v18tPD5wdz>Bu5em3Z(_iL>3>goB*Ia{;k-ml1qR8Ae6!^Os!n~ zVU)1wix6YmhMX29B)%MoNT_y+t(!Lr9Hb=d)^#2?6P4h}^ztaMSXyi%5x1tL02Sx7sFgmBSTSs%Ub7mAh!qeO$V|qngo8MhO9y5JHd}HXoC&9z zQ1Vp*JS~k*wk3pAD#GK?f>7*+K`75PCtZc*8)0&puY$?t56t95Hkr?N8Zo)ZFpbIO zn=-k`aV)O*7ds$5HsXbmb8FO?Z%(-j(~W39PZ3#8ztQg@Q>_C5@`mk#2XYa*glD@* zYO7^~Nh6iU)(H-Y$n-jeb%;)En^tO#4?0T@@j;a#{D->quGmJfVhUp7S*-ZrsYZNI zJQp$cE8v5I*7$NEKA3OH2eq4In$!580Sjlt7Zj!${hc3>Od6e8<6eyzarB-ABNh|j ziyc!iZ{^Kf1@m^^yj|cQ!D?u3%G}DETLm9Xz_`_j!AI|fk3Yy@e>FHDn@6?L!h*O* zx$s!Cg{cIs5qwQ+e%=R*UR*$yC}jR*yraK!00;w^48Rf)GDOO=(?GcN9B9%=gBkYR zLC+oX+!0<34zXGAm}esJ1p`hdGO%@#20%-KhlCfeJBHGasPfR$OP{0f4+2#Qo=c2z z4jbb~upPyg!*&AO6M)T!3XpawuLbKwCodNn&U(pGz6+U#0i_8U-LS&|1u_~yfLO{B zYFIjwymY`^O=x-@lu{CpA=o8hWP$N_&-$dA5veEH2lt#$QKHm+!Hv-#fn*{~TpY)V zE%6v|_7lcHwU3WenJs+Wpnn_%=GuThbWR{?#=o0afUD6vKzI4L^PQGu+{TIZ`%IhoWpeyk&lF48{@zy*LmLtSU0^ zIK2pKF4oW#t-p1&2vQWN8iZAKmU@=DE8SD{hir^pXcIO@q%sB;2#tp!M@liR#A8o) zQP+9$)?HkOI1uj$8LOYxeH%)VXPBNzAQrGN1JDBW0VmW2$~(sY z7-J%N=_dwcStCcaYQ@k0kD;HxNpW#t;Jn&x6xV$_tNYkv=CAX$@BsX4;W5ORt?Y=t zl-4J*enk6utsTFA0Af6rJN#};Jo>F%Tm_|gVDU0BAMlgKPyJs_f2w-f?qhee*8I}w z4^0L?XmWLTckBG*ve9Z&aVm2sqWhIO0mD`M4QQzov^vnz00aRK0v7l&5go)Jd?L0mkp#^l*@hl7 zMk3E2yO@B!H3KxM1)Idd{~&uQCS@&I0kSEW6qzst>HebwzB+%trbL#TdYpA0RUx+7 zF1tmYmq%Wc*;a3_Q0Mg(!tbxA_Wh}a{Ll0Y{9*GKD1;Qnf>HuKtoG%}VK>|V;>4Bk z(#|$`X<|U|!o>IR%gXpKOZ5JEm}$RqV3o$7YdI0#tzK7P+tI|`LhNVT_0j_4j;7Sm zd~2jMT>W+=% zegNad$9O>#3H}a3JUs{M4s2YV(0DRg&*}1p|0yXDq{dJjKUD@xnowv`R+b7m$wc`M;ovYoRh|u~99dFy z9%8%yG5vXP)rs9F-@!d^DSmp{5xbRm2{#mX5Q1$(8$#$dM^$&1Y-NH=;b!_!%CWaP zfF^*w+0HnchGCT(m8VOc{zRTFwU3h-7{|EDbm(CmI#4}=rZC*jaYzCjhAq?;cd1dz z{;9ePiEsYT>r+6jC+_xF!F#m12j&xN#6f^Y5lqrAN8xp4UZ^;AWd1(^p^`8bVjguZ zRDSyB@B!HQ^jFNz1?FjkbSw_iJ}E*=#0ocE?}BXA z1MozFjVf;5(2!@?f|nGC={0^ihhQ=6=IlTo3ek)WX;;**Xq&NQPs zb78L0+?Woes;DDL#l_%*cpcD}}rY%|iE%2?1*z`!ZO~=Z)JbL~5 zjm_)3o7b0jH@B|?G*E^>Uk7j6vbHvNtbC!N1J7JoIDq+x!!}a}f)=7CB$$?JY)Ay+ zgxL*TgKNOiz~Z3Uk-Ua>q~B}u&I;j|HeBze6~tS6?3mW-$;-D^P_IqI)2d!cIpQYx zZbc|)wEv5~xQ2?Dxv=#*aeZ*UVz%6M94Fw1@)F3lomKl6|OqZkz0#ytom_qFFKODM3AheLp zMMy1aWZU@`Dl7560FlS(g6@^+AuHWzl8$p}o6Nv@^|&m&D{Hu=!9Lsd&bFJaAyh=QV;VBa}d&QvtoQ&5T9j7ogbObH~NvBw@K z9ss9`=jmS)6!Ds1+7XKIM@Z?kQTKWA7X9HG;S^e&IC#DO(NYd-bg{m=7i-RKrZkG` zsdGtlW~RNtnRYlh^FM@S9Qvg^i~L8Rs2~%2?AQYV75G=f`@a}@O@3eW&HEka*EXbr zrM+#bSop8bA07UA^w9xp!$ZBYPM7?GmA|AR&MV@G2OUOivH7X_k^H5c4% zAe&4^o;?c$_2*)AvEZx8g~g``K{dL-P*=LpWsoRi5a*@o%zNRtt%(C0y4B`rltaONrtY{d>KMW7Mv0!seqiQ!VwC-(7GhDoKQd&20OG5VLie-CxeQK zEGIKSyKrQ^mtK7KQQa48!*JIp;Cw(S#tRf%r2yq%%cG$xsxA)HMVEjSAd4RCcj71nmBYJW08$Q#lpJdX2Z7`I)|x&H xroxIgFja988x>E}mGsn7vXbOKh+rC9rDc;=zeEpBf|rVG8?g)6`M>HTnGi;?9by0g diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index 47d970050..e2dd0e433 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -24,7 +24,10 @@ package TestCallLocal; TestCatchFinally; TestChain2; - TestChainedAssignments; + TestChainedAssignments1; + TestChainedAssignments2; + TestChainedAssignments3; + TestChainedAssignments4; TestCollidingTraitNames; TestCollidingTry; TestComplexExpressions; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments1.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments1.as new file mode 100644 index 000000000..6fc36cda7 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments1.as @@ -0,0 +1,15 @@ +package tests +{ + + public class TestChainedAssignments1 + { + public function run():* + { + trace("c = b = a = 5;"); + var a:int = 0; + var b:int = 0; + var c:int = 0; + c = b = a = 5; + } + } +} diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments2.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments2.as new file mode 100644 index 000000000..c477e675d --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments2.as @@ -0,0 +1,19 @@ +package tests +{ + + public class TestChainedAssignments2 + { + public function run():* + { + trace("e.attrib1 = e.attrib2 = e.attrib3 = 10;"); + var e:TestClass = new TestClass(); + e.attrib1 = e.attrib2 = e.attrib3 = 10; + } + } +} + +class TestClass { + public var attrib1:int; + public var attrib2:int; + public var attrib3:int; +} diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments3.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments3.as new file mode 100644 index 000000000..312264241 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments3.as @@ -0,0 +1,18 @@ +package tests +{ + + public class TestChainedAssignments3 + { + private var prop:int; + + public function run():* + { + var a:int = 0; + var b:int = 0; + prop = a = b = 4; + if (a == 2) { + trace("OK: " + a); + } + } + } +} diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments4.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments4.as new file mode 100644 index 000000000..465a37153 --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestChainedAssignments4.as @@ -0,0 +1,18 @@ +package tests +{ + + public class TestChainedAssignments4 + { + private var prop:int; + + public function run():* + { + trace("slotc = slotb = slota = 5;"); + var slota:int = 0; + var slotb:int = 0; + var slotc:int = 0; + var f:Function = function(n1:int, n2:int):int {return n1 + n2;}; //trigger slot generating + slotc = slotb = slota = 5; + } + } +}