From 117a0b3c424f447463cfc3e6388ff2e9e4fca1fd Mon Sep 17 00:00:00 2001 From: volodya-lombrozo Date: Fri, 2 Aug 2024 14:32:48 +0300 Subject: [PATCH] feat(#344): fix the bug with local variables --- .../org/eolang/opeo/ast/LocalVariable.java | 2 +- .../eolang/opeo/compilation/XmirParser.java | 2 +- src/test/java/it/JeoAndOpeoTest.java | 3 +- .../eolang/opeo/ast/LocalVariableTest.java | 2 +- .../opeo/ast/VariableAssignmentTest.java | 2 +- .../resources/xmir/decompiled/Enhancer$3.xmir | 8 +- .../StreamUtils$NonClosingOutputStream.xmir | 8 +- .../DefaultRouterFunctionSpec.xmir | 248 ++++++++++++++++++ 8 files changed, 262 insertions(+), 13 deletions(-) create mode 100644 src/test/resources/xmir/disassembled/DefaultRouterFunctionSpec.xmir diff --git a/src/main/java/org/eolang/opeo/ast/LocalVariable.java b/src/main/java/org/eolang/opeo/ast/LocalVariable.java index 0f6fabd4..6c280e01 100644 --- a/src/main/java/org/eolang/opeo/ast/LocalVariable.java +++ b/src/main/java/org/eolang/opeo/ast/LocalVariable.java @@ -51,7 +51,7 @@ public final class LocalVariable implements AstNode, Typed { /** * The prefix of the variable. */ - private static final String PREFIX = "local"; + private static final String PREFIX = "local-"; /** * The identifier of the variable. diff --git a/src/main/java/org/eolang/opeo/compilation/XmirParser.java b/src/main/java/org/eolang/opeo/compilation/XmirParser.java index b29a06a3..9a89d73d 100644 --- a/src/main/java/org/eolang/opeo/compilation/XmirParser.java +++ b/src/main/java/org/eolang/opeo/compilation/XmirParser.java @@ -169,7 +169,7 @@ public AstNode parse(final XmlNode node) { result = new FieldRetrieval(node, this); } else if (".write-field".equals(base)) { result = new FieldAssignment(node, this); - } else if (base.contains("local")) { + } else if (base.startsWith("local-")) { result = new LocalVariable(node); } else if (".new".equals(base)) { result = new Constructor(node, this); diff --git a/src/test/java/it/JeoAndOpeoTest.java b/src/test/java/it/JeoAndOpeoTest.java index 898ea9c3..cea76f1f 100644 --- a/src/test/java/it/JeoAndOpeoTest.java +++ b/src/test/java/it/JeoAndOpeoTest.java @@ -128,7 +128,8 @@ void compilesDecompiled(final String path) { "xmir/disassembled/UndertowWebServerFactoryCustomizer$ServerOptions.xmir", "xmir/disassembled/MutableCoercionConfig.xmir", "xmir/disassembled/WebProperties$Resources$Chain$Strategy$Content.xmir", - "xmir/disassembled/OAuth2ClientRegistrationRepositoryConfiguration.xmir" + "xmir/disassembled/OAuth2ClientRegistrationRepositoryConfiguration.xmir", + "xmir/disassembled/DefaultRouterFunctionSpec.xmir" }) void decompilesCompilesAndKeepsTheSameInstructions(final String path) throws Exception { final XMLDocument original = new XMLDocument(new BytesOf(new ResourceOf(path)).asBytes()); diff --git a/src/test/java/org/eolang/opeo/ast/LocalVariableTest.java b/src/test/java/org/eolang/opeo/ast/LocalVariableTest.java index 5942875a..34c0c33a 100644 --- a/src/test/java/org/eolang/opeo/ast/LocalVariableTest.java +++ b/src/test/java/org/eolang/opeo/ast/LocalVariableTest.java @@ -51,7 +51,7 @@ void convertsToXmir() throws ImpossibleModificationException { MatcherAssert.assertThat( "We expect the xmir variable to be equal to , but it wasn't", new Xembler(new LocalVariable(1, Type.INT_TYPE).toXmir()).xml(), - XhtmlMatchers.hasXPath("./o[@base='local1']") + XhtmlMatchers.hasXPath("./o[@base='local-1']") ); } diff --git a/src/test/java/org/eolang/opeo/ast/VariableAssignmentTest.java b/src/test/java/org/eolang/opeo/ast/VariableAssignmentTest.java index 98234667..aa5be55f 100644 --- a/src/test/java/org/eolang/opeo/ast/VariableAssignmentTest.java +++ b/src/test/java/org/eolang/opeo/ast/VariableAssignmentTest.java @@ -45,7 +45,7 @@ final class VariableAssignmentTest { private static final String XMIR = String.join( "\n", "", - " ", + " ", " 64 65 73 63 72 69 70 74 6F 72 3D 44 7C 74 79 70 65 3D 6C 6F 63 61 6C", " ", " 00 00 00 00 00 00 00 02", diff --git a/src/test/resources/xmir/decompiled/Enhancer$3.xmir b/src/test/resources/xmir/decompiled/Enhancer$3.xmir index 772458ed..1138b455 100644 --- a/src/test/resources/xmir/decompiled/Enhancer$3.xmir +++ b/src/test/resources/xmir/decompiled/Enhancer$3.xmir @@ -80,7 +80,7 @@ 64 65 73 63 72 69 70 74 6F 72 3D 6F 72 67 2E 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2E 63 67 6C 69 62 2E 70 72 6F 78 79 2E 45 6E 68 61 6E 63 65 72 24 33 - + 64 65 73 63 72 69 70 74 6F 72 3D 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 63 67 6C 69 62 2F 70 72 6F 78 79 2F 45 6E 68 61 6E 63 65 72 3B 7C 74 79 70 65 3D 6C 6F 63 61 6C @@ -91,7 +91,7 @@ 64 65 73 63 72 69 70 74 6F 72 3D 6F 72 67 2E 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2E 63 67 6C 69 62 2E 70 72 6F 78 79 2E 45 6E 68 61 6E 63 65 72 24 33 - + 64 65 73 63 72 69 70 74 6F 72 3D 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 63 67 6C 69 62 2F 63 6F 72 65 2F 43 6F 64 65 45 6D 69 74 74 65 72 3B 7C 74 79 70 65 3D 6C 6F 63 61 6C @@ -140,7 +140,7 @@ 64 65 73 63 72 69 70 74 6F 72 3D 28 49 29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 7C 69 6E 74 65 72 66 61 63 65 64 3D 66 61 6C 73 65 7C 6E 61 6D 65 3D 61 63 63 65 73 73 24 31 30 30 7C 6F 77 6E 65 72 3D 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 63 67 6C 69 62 2F 70 72 6F 78 79 2F 45 6E 68 61 6E 63 65 72 7C 74 79 70 65 3D 73 74 61 74 69 63 - + 64 65 73 63 72 69 70 74 6F 72 3D 49 7C 74 79 70 65 3D 6C 6F 63 61 6C @@ -158,7 +158,7 @@ - + 64 65 73 63 72 69 70 74 6F 72 3D 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 61 73 6D 2F 4C 61 62 65 6C 3B 7C 74 79 70 65 3D 6C 6F 63 61 6C diff --git a/src/test/resources/xmir/decompiled/StreamUtils$NonClosingOutputStream.xmir b/src/test/resources/xmir/decompiled/StreamUtils$NonClosingOutputStream.xmir index 66d9bc4e..8fc22461 100644 --- a/src/test/resources/xmir/decompiled/StreamUtils$NonClosingOutputStream.xmir +++ b/src/test/resources/xmir/decompiled/StreamUtils$NonClosingOutputStream.xmir @@ -53,7 +53,7 @@ 64 65 73 63 72 69 70 74 6F 72 3D 6F 72 67 2E 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2E 75 74 69 6C 2E 53 74 72 65 61 6D 55 74 69 6C 73 24 4E 6F 6E 43 6C 6F 73 69 6E 67 4F 75 74 70 75 74 53 74 72 65 61 6D - + 64 65 73 63 72 69 70 74 6F 72 3D 4C 6A 61 76 61 2F 69 6F 2F 4F 75 74 70 75 74 53 74 72 65 61 6D 3B 7C 74 79 70 65 3D 6C 6F 63 61 6C @@ -98,13 +98,13 @@ - + 64 65 73 63 72 69 70 74 6F 72 3D 5B 42 7C 74 79 70 65 3D 6C 6F 63 61 6C - + 64 65 73 63 72 69 70 74 6F 72 3D 49 7C 74 79 70 65 3D 6C 6F 63 61 6C - + 64 65 73 63 72 69 70 74 6F 72 3D 49 7C 74 79 70 65 3D 6C 6F 63 61 6C diff --git a/src/test/resources/xmir/disassembled/DefaultRouterFunctionSpec.xmir b/src/test/resources/xmir/disassembled/DefaultRouterFunctionSpec.xmir new file mode 100644 index 00000000..f9c46cf8 --- /dev/null +++ b/src/test/resources/xmir/disassembled/DefaultRouterFunctionSpec.xmir @@ -0,0 +1,248 @@ + + + yv66vgAAADQAdQoAEQAzCwA0ADUJABAANgkAEAA3CgA4ADkKADoAOxIAAABBCgA6AEISAAEAQQoAOgBECwA0AEUKADoARgsANABHCwBIAEkLADQASgcASwcATAcATgEADnJvdXRlckZ1bmN0aW9uAQBBTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9Sb3V0ZXJGdW5jdGlvbjsBAAlTaWduYXR1cmUBAERMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvcmVhY3RpdmUvZnVuY3Rpb24vc2VydmVyL1JvdXRlckZ1bmN0aW9uPCo+OwEAEWhhbmRsZXJTdHJhdGVnaWVzAQBETG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9IYW5kbGVyU3RyYXRlZ2llczsBAAY8aW5pdD4BAEQoTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9Sb3V0ZXJGdW5jdGlvbjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQBITG9yZy9zcHJpbmdmcmFtZXdvcmsvdGVzdC93ZWIvcmVhY3RpdmUvc2VydmVyL0RlZmF1bHRSb3V0ZXJGdW5jdGlvblNwZWM7AQAWTG9jYWxWYXJpYWJsZVR5cGVUYWJsZQEAEE1ldGhvZFBhcmFtZXRlcnMBAEcoTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9Sb3V0ZXJGdW5jdGlvbjwqPjspVgEAElJvdXRlckZ1bmN0aW9uU3BlYwEADElubmVyQ2xhc3NlcwEAlShMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvcmVhY3RpdmUvZnVuY3Rpb24vc2VydmVyL0hhbmRsZXJTdHJhdGVnaWVzOylMb3JnL3NwcmluZ2ZyYW1ld29yay90ZXN0L3dlYi9yZWFjdGl2ZS9zZXJ2ZXIvV2ViVGVzdENsaWVudCRSb3V0ZXJGdW5jdGlvblNwZWM7AQAWaW5pdEh0dHBIYW5kbGVyQnVpbGRlcgEAQCgpTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9hZGFwdGVyL1dlYkh0dHBIYW5kbGVyQnVpbGRlcjsBAAp3ZWJIYW5kbGVyAQArTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9XZWJIYW5kbGVyOwEAH2xhbWJkYSRpbml0SHR0cEhhbmRsZXJCdWlsZGVyJDEBABMoTGphdmEvdXRpbC9MaXN0OylWAQAIaGFuZGxlcnMBABBMamF2YS91dGlsL0xpc3Q7AQAfbGFtYmRhJGluaXRIdHRwSGFuZGxlckJ1aWxkZXIkMAEAB2ZpbHRlcnMBAOVMb3JnL3NwcmluZ2ZyYW1ld29yay90ZXN0L3dlYi9yZWFjdGl2ZS9zZXJ2ZXIvQWJzdHJhY3RNb2NrU2VydmVyU3BlYzxMb3JnL3NwcmluZ2ZyYW1ld29yay90ZXN0L3dlYi9yZWFjdGl2ZS9zZXJ2ZXIvV2ViVGVzdENsaWVudCRSb3V0ZXJGdW5jdGlvblNwZWM7PjtMb3JnL3NwcmluZ2ZyYW1ld29yay90ZXN0L3dlYi9yZWFjdGl2ZS9zZXJ2ZXIvV2ViVGVzdENsaWVudCRSb3V0ZXJGdW5jdGlvblNwZWM7AQAKU291cmNlRmlsZQEAHkRlZmF1bHRSb3V0ZXJGdW5jdGlvblNwZWMuamF2YQwAGQBPBwBQDABRAFIMABcAGAwAEwAUBwBTDABUAFUHAFYMACgAVwEAEEJvb3RzdHJhcE1ldGhvZHMPBgBYEABZDwcAWhAAKwwAWwBcDAAvAF0PBwBeDABfAF0MAGAAYQwAYABiDABfAGMHAGQMAGUAZgwAZwBjAQBGb3JnL3NwcmluZ2ZyYW1ld29yay90ZXN0L3dlYi9yZWFjdGl2ZS9zZXJ2ZXIvRGVmYXVsdFJvdXRlckZ1bmN0aW9uU3BlYwEAQ29yZy9zcHJpbmdmcmFtZXdvcmsvdGVzdC93ZWIvcmVhY3RpdmUvc2VydmVyL0Fic3RyYWN0TW9ja1NlcnZlclNwZWMHAGgBAE1vcmcvc3ByaW5nZnJhbWV3b3JrL3Rlc3Qvd2ViL3JlYWN0aXZlL3NlcnZlci9XZWJUZXN0Q2xpZW50JFJvdXRlckZ1bmN0aW9uU3BlYwEAAygpVgEAQm9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9IYW5kbGVyU3RyYXRlZ2llcwEADHdpdGhEZWZhdWx0cwEARigpTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9IYW5kbGVyU3RyYXRlZ2llczsBAEBvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9yZWFjdGl2ZS9mdW5jdGlvbi9zZXJ2ZXIvUm91dGVyRnVuY3Rpb25zAQAMdG9XZWJIYW5kbGVyAQCyKExvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9yZWFjdGl2ZS9mdW5jdGlvbi9zZXJ2ZXIvUm91dGVyRnVuY3Rpb247TG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3JlYWN0aXZlL2Z1bmN0aW9uL3NlcnZlci9IYW5kbGVyU3RyYXRlZ2llczspTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9XZWJIYW5kbGVyOwEAPG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9hZGFwdGVyL1dlYkh0dHBIYW5kbGVyQnVpbGRlcgEAayhMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmVyL1dlYkhhbmRsZXI7KUxvcmcvc3ByaW5nZnJhbWV3b3JrL3dlYi9zZXJ2ZXIvYWRhcHRlci9XZWJIdHRwSGFuZGxlckJ1aWxkZXI7CgBpAGoBABUoTGphdmEvbGFuZy9PYmplY3Q7KVYKABAAawEABmFjY2VwdAEAZyhMb3JnL3NwcmluZ2ZyYW1ld29yay90ZXN0L3dlYi9yZWFjdGl2ZS9zZXJ2ZXIvRGVmYXVsdFJvdXRlckZ1bmN0aW9uU3BlYzspTGphdmEvdXRpbC9mdW5jdGlvbi9Db25zdW1lcjsBAF0oTGphdmEvdXRpbC9mdW5jdGlvbi9Db25zdW1lcjspTG9yZy9zcHJpbmdmcmFtZXdvcmsvd2ViL3NlcnZlci9hZGFwdGVyL1dlYkh0dHBIYW5kbGVyQnVpbGRlcjsKABAAbAEAEWV4Y2VwdGlvbkhhbmRsZXJzAQAVbG9jYWxlQ29udGV4dFJlc29sdmVyAQA9KClMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmVyL2kxOG4vTG9jYWxlQ29udGV4dFJlc29sdmVyOwEAeyhMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmVyL2kxOG4vTG9jYWxlQ29udGV4dFJlc29sdmVyOylMb3JnL3NwcmluZ2ZyYW1ld29yay93ZWIvc2VydmVyL2FkYXB0ZXIvV2ViSHR0cEhhbmRsZXJCdWlsZGVyOwEAEigpTGphdmEvdXRpbC9MaXN0OwEADmphdmEvdXRpbC9MaXN0AQAGYWRkQWxsAQAZKExqYXZhL3V0aWwvQ29sbGVjdGlvbjspWgEACndlYkZpbHRlcnMBADpvcmcvc3ByaW5nZnJhbWV3b3JrL3Rlc3Qvd2ViL3JlYWN0aXZlL3NlcnZlci9XZWJUZXN0Q2xpZW50BwBtDABuAHEMAC4AKwwAKgArAQAiamF2YS9sYW5nL2ludm9rZS9MYW1iZGFNZXRhZmFjdG9yeQEAC21ldGFmYWN0b3J5BwBzAQAGTG9va3VwAQDMKExqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZXMkTG9va3VwO0xqYXZhL2xhbmcvU3RyaW5nO0xqYXZhL2xhbmcvaW52b2tlL01ldGhvZFR5cGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTtMamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGU7TGphdmEvbGFuZy9pbnZva2UvTWV0aG9kVHlwZTspTGphdmEvbGFuZy9pbnZva2UvQ2FsbFNpdGU7BwB0AQAlamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGVzJExvb2t1cAEAHmphdmEvbGFuZy9pbnZva2UvTWV0aG9kSGFuZGxlcwAgABAAEQABABIAAgASABMAFAABABUAAAACABYAAgAXABgAAAAFAAAAGQAaAAMAGwAAAGMAAgACAAAAESq3AAEquAACtQADKiu1AASxAAAAAwAcAAAAEgAEAAAAJwAEACQACwAoABAAKQAdAAAAFgACAAAAEQAeAB8AAAAAABEAEwAUAAEAIAAAAAwAAQAAABEAEwAWAAEAIQAAAAUBABMAAAAVAAAAAgAiAAEAFwAlAAIAGwAAAD8AAgACAAAAByortQADKrAAAAACABwAAAAKAAIAAAAuAAUALwAdAAAAFgACAAAABwAeAB8AAAAAAAcAFwAYAAEAIQAAAAUBABcAAAAEACYAJwABABsAAAB3AAIAAgAAAC8qtAAEKrQAA7gABUwruAAGKroABwAAtgAIKroACQAAtgAKKrQAA7kACwEAtgAMsAAAAAIAHAAAABoABgAAADQADAA1ABYANgAfADcAJgA4AC4ANQAdAAAAFgACAAAALwAeAB8AAAAMACMAKAApAAEQAgAqACsAAgAbAAAARQACAAIAAAARKyq0AAO5AA0BALkADgIAV7EAAAACABwAAAAGAAEAAAA3AB0AAAAWAAIAAAARAB4AHwAAAAAAEQAsAC0AAQAhAAAABQEALBAAEAIALgArAAIAGwAAAEUAAgACAAAAESsqtAADuQAPAQC5AA4CAFexAAAAAgAcAAAABgABAAAANgAdAAAAFgACAAAAEQAeAB8AAAAAABEALwAtAAEAIQAAAAUBAC8QAAAEABUAAAACADAAMQAAAAIAMgAkAAAAEgACABIATQAjBgkAbwByAHAAGQA8AAAAFgACAD0AAwA+AD8AQAA9AAMAPgBDAEA= + + + + + + package + org.springframework.test.web.reactive.server + org.springframework.test.web.reactive.server + + + alias + org.eolang.jeo.opcode + org.eolang.jeo.opcode + + + alias + org.eolang.jeo.label + org.eolang.jeo.label + + + + + 00 00 00 00 00 00 00 34 + 00 00 00 00 00 00 00 20 + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 41 62 73 74 72 61 63 74 4D 6F 63 6B 53 65 72 76 65 72 53 70 65 63 3C 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 57 65 62 54 65 73 74 43 6C 69 65 6E 74 24 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 3B 3E 3B 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 57 65 62 54 65 73 74 43 6C 69 65 6E 74 24 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 3B + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 41 62 73 74 72 61 63 74 4D 6F 63 6B 53 65 72 76 65 72 53 70 65 63 + + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 57 65 62 54 65 73 74 43 6C 69 65 6E 74 24 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + + + 00 00 00 00 00 00 00 12 + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 3B + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 3C 2A 3E 3B + + + + 00 00 00 00 00 00 00 02 + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 48 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 3B + + + + + + 00 00 00 00 00 00 00 04 + 28 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 3B + + + + 00 00 00 00 00 00 00 02 + 00 00 00 00 00 00 00 02 + + + + 32 35 33 63 35 36 35 35 2D 35 38 33 36 2D 34 35 61 61 2D 39 31 31 30 2D 62 38 32 33 30 32 63 36 66 32 39 62 + + 00 00 00 00 00 00 00 19 + 00 00 00 00 00 00 00 00 + + + 00 00 00 00 00 00 00 B4 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 72 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 3B + + + 00 00 00 00 00 00 00 19 + 00 00 00 00 00 00 00 00 + + + 00 00 00 00 00 00 00 B4 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 68 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 48 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 3B + + + 00 00 00 00 00 00 00 B8 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 73 + 74 6F 57 65 62 48 61 6E 64 6C 65 72 + 28 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 3B 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 48 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 3B 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 57 65 62 48 61 6E 64 6C 65 72 3B + 00 + + + 00 00 00 00 00 00 00 3A + 00 00 00 00 00 00 00 01 + + 65 64 64 65 63 30 35 37 2D 31 64 37 30 2D 34 65 66 63 2D 62 65 64 62 2D 35 34 63 61 37 62 34 64 32 37 38 38 + + 00 00 00 00 00 00 00 19 + 00 00 00 00 00 00 00 01 + + + 00 00 00 00 00 00 00 B8 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 + 77 65 62 48 61 6E 64 6C 65 72 + 28 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 57 65 62 48 61 6E 64 6C 65 72 3B 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 3B + 00 + + + 00 00 00 00 00 00 00 19 + 00 00 00 00 00 00 00 00 + + + 00 00 00 00 00 00 00 BA + 61 63 63 65 70 74 + 28 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 3B 29 4C 6A 61 76 61 2F 75 74 69 6C 2F 66 75 6E 63 74 69 6F 6E 2F 43 6F 6E 73 75 6D 65 72 3B + + 00 00 00 00 00 00 00 06 + 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4C 61 6D 62 64 61 4D 65 74 61 66 61 63 74 6F 72 79 + 6D 65 74 61 66 61 63 74 6F 72 79 + 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 48 61 6E 64 6C 65 73 24 4C 6F 6F 6B 75 70 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 54 79 70 65 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 54 79 70 65 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 48 61 6E 64 6C 65 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 54 79 70 65 3B 29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 43 61 6C 6C 53 69 74 65 3B + 00 + + 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 29 56 + + 00 00 00 00 00 00 00 07 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 6C 61 6D 62 64 61 24 69 6E 69 74 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 24 30 + 28 4C 6A 61 76 61 2F 75 74 69 6C 2F 4C 69 73 74 3B 29 56 + 00 + + 28 4C 6A 61 76 61 2F 75 74 69 6C 2F 4C 69 73 74 3B 29 56 + + 65 30 62 33 36 37 63 34 2D 64 65 38 37 2D 34 33 39 39 2D 38 30 32 31 2D 64 32 35 34 61 31 33 65 30 39 37 62 + + 00 00 00 00 00 00 00 B6 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 + 66 69 6C 74 65 72 73 + 28 4C 6A 61 76 61 2F 75 74 69 6C 2F 66 75 6E 63 74 69 6F 6E 2F 43 6F 6E 73 75 6D 65 72 3B 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 3B + 00 + + + 00 00 00 00 00 00 00 19 + 00 00 00 00 00 00 00 00 + + + 00 00 00 00 00 00 00 BA + 61 63 63 65 70 74 + 28 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 3B 29 4C 6A 61 76 61 2F 75 74 69 6C 2F 66 75 6E 63 74 69 6F 6E 2F 43 6F 6E 73 75 6D 65 72 3B + + 00 00 00 00 00 00 00 06 + 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4C 61 6D 62 64 61 4D 65 74 61 66 61 63 74 6F 72 79 + 6D 65 74 61 66 61 63 74 6F 72 79 + 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 48 61 6E 64 6C 65 73 24 4C 6F 6F 6B 75 70 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 54 79 70 65 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 54 79 70 65 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 48 61 6E 64 6C 65 3B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 54 79 70 65 3B 29 4C 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 43 61 6C 6C 53 69 74 65 3B + 00 + + 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 29 56 + + 00 00 00 00 00 00 00 07 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 6C 61 6D 62 64 61 24 69 6E 69 74 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 24 31 + 28 4C 6A 61 76 61 2F 75 74 69 6C 2F 4C 69 73 74 3B 29 56 + 00 + + 28 4C 6A 61 76 61 2F 75 74 69 6C 2F 4C 69 73 74 3B 29 56 + + 62 65 34 63 39 65 39 34 2D 31 39 35 63 2D 34 37 65 32 2D 38 37 38 33 2D 30 38 39 33 66 39 64 63 36 36 65 39 + + 00 00 00 00 00 00 00 B6 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 + 65 78 63 65 70 74 69 6F 6E 48 61 6E 64 6C 65 72 73 + 28 4C 6A 61 76 61 2F 75 74 69 6C 2F 66 75 6E 63 74 69 6F 6E 2F 43 6F 6E 73 75 6D 65 72 3B 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 3B + 00 + + + 00 00 00 00 00 00 00 19 + 00 00 00 00 00 00 00 00 + + + 00 00 00 00 00 00 00 B4 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 44 65 66 61 75 6C 74 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 68 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 + 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 48 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 3B + + 64 61 33 37 64 30 38 37 2D 63 36 34 36 2D 34 66 33 62 2D 61 36 36 34 2D 65 31 37 65 39 66 36 64 35 38 66 64 + + 00 00 00 00 00 00 00 B9 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 66 75 6E 63 74 69 6F 6E 2F 73 65 72 76 65 72 2F 48 61 6E 64 6C 65 72 53 74 72 61 74 65 67 69 65 73 + 6C 6F 63 61 6C 65 43 6F 6E 74 65 78 74 52 65 73 6F 6C 76 65 72 + 28 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 69 31 38 6E 2F 4C 6F 63 61 6C 65 43 6F 6E 74 65 78 74 52 65 73 6F 6C 76 65 72 3B + 01 + + + 00 00 00 00 00 00 00 B6 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 + 6C 6F 63 61 6C 65 43 6F 6E 74 65 78 74 52 65 73 6F 6C 76 65 72 + 28 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 69 31 38 6E 2F 4C 6F 63 61 6C 65 43 6F 6E 74 65 78 74 52 65 73 6F 6C 76 65 72 3B 29 4C 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 77 65 62 2F 73 65 72 76 65 72 2F 61 64 61 70 74 65 72 2F 57 65 62 48 74 74 70 48 61 6E 64 6C 65 72 42 75 69 6C 64 65 72 3B + 00 + + 63 61 37 38 61 37 63 35 2D 35 65 36 33 2D 34 31 33 37 2D 38 36 61 37 2D 32 39 38 63 36 38 30 63 64 61 66 32 + + 00 00 00 00 00 00 00 B0 + + 66 30 63 34 61 33 65 37 2D 65 31 36 38 2D 34 36 61 32 2D 39 63 33 38 2D 63 33 38 63 32 66 38 34 34 33 62 34 + + + + + + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 57 65 62 54 65 73 74 43 6C 69 65 6E 74 24 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 6F 72 67 2F 73 70 72 69 6E 67 66 72 61 6D 65 77 6F 72 6B 2F 74 65 73 74 2F 77 65 62 2F 72 65 61 63 74 69 76 65 2F 73 65 72 76 65 72 2F 57 65 62 54 65 73 74 43 6C 69 65 6E 74 + 52 6F 75 74 65 72 46 75 6E 63 74 69 6F 6E 53 70 65 63 + 00 00 00 00 00 00 06 09 + + + 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 48 61 6E 64 6C 65 73 24 4C 6F 6F 6B 75 70 + 6A 61 76 61 2F 6C 61 6E 67 2F 69 6E 76 6F 6B 65 2F 4D 65 74 68 6F 64 48 61 6E 64 6C 65 73 + 4C 6F 6F 6B 75 70 + 00 00 00 00 00 00 00 19 + + + + +