Pekka Lampila
2007-Sep-11 13:21 UTC
[Swfdec] 8 commits - libswfdec/swfdec_as_function.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_object.c libswfdec/swfdec_as_strings.c test/trace
libswfdec/swfdec_as_function.c | 55 +++++ libswfdec/swfdec_as_initialize.as | 4 libswfdec/swfdec_as_initialize.h | 288 ++++++++++++++--------------- libswfdec/swfdec_as_object.c | 57 +++-- libswfdec/swfdec_as_strings.c | 1 test/trace/Makefile.am | 14 - test/trace/function-apply-5.swf |binary test/trace/function-apply-5.swf.trace | 160 ++++++++++++++++ test/trace/function-apply-6.swf |binary test/trace/function-apply-6.swf.trace | 194 +++++++++++++++++++ test/trace/function-apply-7.swf |binary test/trace/function-apply-7.swf.trace | 194 +++++++++++++++++++ test/trace/function-apply.as | 47 ++++ test/trace/function-properties-5.swf |binary test/trace/function-properties-6.swf |binary test/trace/function-properties-6.swf.trace | 20 +- test/trace/function-properties-7.swf |binary test/trace/function-properties-7.swf.trace | 20 +- test/trace/object-watch-5.swf |binary test/trace/object-watch-5.swf.trace | 22 ++ test/trace/object-watch-6.swf |binary test/trace/object-watch-6.swf.trace | 37 +++ test/trace/object-watch-7.swf |binary test/trace/object-watch-7.swf.trace | 37 +++ test/trace/object-watch.as | 81 +++++++- test/trace/trace_properties.as | 4 26 files changed, 1043 insertions(+), 192 deletions(-) New commits: diff-tree e1c72a42832cf84d1b7c491fefe2879313415805 (from 05ff9f64432c618ed59680546688b932c59d31ce) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 15:59:00 2007 +0300 Expand object-watch test for various cases diff --git a/test/trace/object-watch-5.swf b/test/trace/object-watch-5.swf index bff16b4..06e28a5 100644 Binary files a/test/trace/object-watch-5.swf and b/test/trace/object-watch-5.swf differ diff --git a/test/trace/object-watch-5.swf.trace b/test/trace/object-watch-5.swf.trace index 4600342..3df4a62 100644 --- a/test/trace/object-watch-5.swf.trace +++ b/test/trace/object-watch-5.swf.trace @@ -1,15 +1,37 @@ +normal undefined undefined undefined undefined +deleting the variable undefined undefined undefined undefined +missing params undefined undefined undefined undefined +extra params +undefined +undefined +deleting the object +undefined +undefined +loop +undefined +undefined +undefined +undefined +undefined +undefined +deleting inside watch function +undefined +undefined +undefined +undefined +working with native functions undefined undefined undefined diff --git a/test/trace/object-watch-6.swf b/test/trace/object-watch-6.swf index 6e70311..6d074a1 100644 Binary files a/test/trace/object-watch-6.swf and b/test/trace/object-watch-6.swf differ diff --git a/test/trace/object-watch-6.swf.trace b/test/trace/object-watch-6.swf.trace index ae228ef..05322a3 100644 --- a/test/trace/object-watch-6.swf.trace +++ b/test/trace/object-watch-6.swf.trace @@ -1,16 +1,31 @@ +normal true o.test: 0 -> 1 (user data) : 4 true true o.test: 0 -> 1 () : 4 true +deleting the variable +true +o.test: 0 -> 1 () : 4 +false +o.test: -> 2 () : 4 +false +true +missing params false false false false +extra params true o.test: 0 -> 1 (user data) : 4 true +deleting the object +true +o.test: 0 -> 1 () : 4 +false +loop true 0 -> 1 true @@ -21,3 +36,25 @@ true 2: -> 2 3: -> 3 true +deleting inside watch function +true +0 -> 1 +false + -> 2 +false +true +working with native functions +true +o.test: 0 -> 1 () : 4 +o.test: 1 -> 2 () : 4 +set 2 +false +o.test: 2 -> 3 () : 4 +set 3 +set 1 +true +o.test2: 1 -> 2 () : 4 +set 2 +false +o.test2: 2 -> 3 () : 4 +set 3 diff --git a/test/trace/object-watch-7.swf b/test/trace/object-watch-7.swf index 000dc02..966a93b 100644 Binary files a/test/trace/object-watch-7.swf and b/test/trace/object-watch-7.swf differ diff --git a/test/trace/object-watch-7.swf.trace b/test/trace/object-watch-7.swf.trace index d8a5f0b..3ee1d34 100644 --- a/test/trace/object-watch-7.swf.trace +++ b/test/trace/object-watch-7.swf.trace @@ -1,16 +1,31 @@ +normal true o.test: 0 -> 1 (user data) : 4 true true o.test: 0 -> 1 (undefined) : 4 true +deleting the variable +true +o.test: 0 -> 1 (undefined) : 4 +false +o.test: undefined -> 2 (undefined) : 4 +false +true +missing params false false false false +extra params true o.test: 0 -> 1 (user data) : 4 true +deleting the object +true +o.test: 0 -> 1 (undefined) : 4 +false +loop true 0 -> 1 0 -> 2 @@ -277,3 +292,25 @@ true 2: undefined -> 194 3: undefined -> 195 true +deleting inside watch function +true +0 -> 1 +false +undefined -> 2 +false +true +working with native functions +true +o.test: 0 -> 1 (undefined) : 4 +o.test: 1 -> 2 (undefined) : 4 +set 2 +false +o.test: 2 -> 3 (undefined) : 4 +set 3 +set 1 +true +o.test2: 1 -> 2 (undefined) : 4 +set 2 +false +o.test2: 2 -> 3 (undefined) : 4 +set 3 diff --git a/test/trace/object-watch.as b/test/trace/object-watch.as index 6b0c6c5..1b81f36 100644 --- a/test/trace/object-watch.as +++ b/test/trace/object-watch.as @@ -30,11 +30,19 @@ var watch_loop_complex3 = function (prop return new_value; }; -// create an object +var watch_delete = function (prop, old_value, new_value, user_data) { + trace (old_value + " -> " + new_value); + delete this[prop]; + return new_value; +}; + + +// create the object var o = new Object(); o.toString = function () { return "o"; }; -// normal + +trace ("normal"); o.test = 0; trace (o.watch ("test", watch_test, "user data")); o.test = 1; @@ -47,7 +55,21 @@ o.test = 1; trace (o.unwatch ("test")); o.test = 2; -// missing params + +trace ("deleting the variable"); +o.test = 0; +trace (o.watch ("test", watch_test)); +o.test = 1; +delete o.test; +trace (o.hasOwnProperty ("test")); +o.test = 2; +delete o.test; +trace (o.hasOwnProperty ("test")); +trace (o.unwatch ("test")); +o.test = 3; + + +trace ("missing params"); trace (o.watch ()); trace (o.unwatch ()); @@ -57,14 +79,30 @@ o.test = 1; trace (o.unwatch ("test")); o.test = 2; -// extra params + +trace ("extra params"); o.test = 0; trace (o.watch ("test", watch_test, "user data", "user data2")); o.test = 1; trace (o.unwatch ("test")); o.test = 2; -// loop + +trace ("deleting the object"); +o.test = 0; +trace (o.watch ("test", watch_test)); +o.test = 1; + +delete o; +o = new Object(); +o.toString = function () { return "o"; }; + +o.test = 2; +trace (o.unwatch ("test")); +o.test = 3; + + +trace ("loop"); o.test = 0; trace (o.watch ("test", watch_loop, "user data")); o.test = 1; @@ -79,4 +117,37 @@ o.loop1 = 1; trace (o.unwatch ("loop1")); o.loop1 = 2; + +trace ("deleting inside watch function"); +o.test = 0; +trace (o.watch ("test", watch_delete)); +o.test = 1; +trace (o.hasOwnProperty ("test")); +o.test = 2; +trace (o.hasOwnProperty ("test")); +trace (o.unwatch ("test")); +o.test = 3; + + +trace ("working with native functions"); +var test_get = function () { trace ("get"); return "get"; }; +var test_set = function (value) { trace ("set " + value); }; + +o.test = 0; +trace (o.watch ("test", watch_test)); +o.test = 1; +o.addProperty ("test", test_get, test_set); +o.test = 2; +trace (o.unwatch ("test")); +o.test = 3; + +o.test2 = 0; +o.addProperty ("test2", test_get, test_set); +o.test2 = 1; +trace (o.watch ("test2", watch_test)); +o.test2 = 2; +trace (o.unwatch ("test2")); +o.test2 = 3; + + loadMovie ("FSCommand:quit", ""); diff-tree 05ff9f64432c618ed59680546688b932c59d31ce (from d258d1a93904a367069ea318719f22f17373b688) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 15:57:40 2007 +0300 Few (un)watch tweaks Allow watching native properties Don't allow unwatching native properties Don't recreate a variable deleted inside a watch function diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c index 5719eaf..d6831f2 100644 --- a/libswfdec/swfdec_as_object.c +++ b/libswfdec/swfdec_as_object.c @@ -333,39 +333,36 @@ swfdec_as_object_do_set (SwfdecAsObject SWFDEC_AS_VARIABLE_VERSION_8_UP); } } + if (object->watches) { + SwfdecAsValue ret = *val; + SwfdecAsWatch *watch = g_hash_table_lookup (object->watches, variable); + /* FIXME: figure out if this limit here is correct. Add a watch in Flash 7 + * and set a variable using Flash 6 */ + if (watch && swfdec_as_watch_can_recurse (watch)) { + SwfdecAsValue args[4]; + SWFDEC_AS_VALUE_SET_STRING (&args[0], variable); + args[1] = var->value; + args[2] = *val; + args[3] = watch->watch_data; + swfdec_as_watch_ref (watch); + swfdec_as_function_call (watch->watch, object, 4, args, &ret); + swfdec_as_context_run (object->context); + swfdec_as_watch_unref (watch); + var = swfdec_as_object_hash_lookup (object, variable); + if (var == NULL) + return; + } + + var->value = ret; + } if (var->get) { if (var->set) { SwfdecAsValue tmp; swfdec_as_function_call (var->set, object, 1, val, &tmp); swfdec_as_context_run (object->context); } - } else { - if (object->watches) { - SwfdecAsValue ret = *val; - SwfdecAsWatch *watch = g_hash_table_lookup (object->watches, variable); - /* FIXME: figure out if this limit here is correct. Add a watch in Flash 7 - * and set a variable using Flash 6 */ - if (watch && swfdec_as_watch_can_recurse (watch)) { - SwfdecAsValue args[4]; - SWFDEC_AS_VALUE_SET_STRING (&args[0], variable); - args[1] = var->value; - args[2] = *val; - args[3] = watch->watch_data; - swfdec_as_watch_ref (watch); - swfdec_as_function_call (watch->watch, object, 4, args, &ret); - swfdec_as_context_run (object->context); - swfdec_as_watch_unref (watch); - var = swfdec_as_object_hash_lookup (object, variable); - if (var == NULL) { - var = swfdec_as_object_hash_create (object, variable, flags); - if (var == NULL) - return; - } - } - var->value = ret; - } else { - var->value = *val; - } + } else if (!object->watches) { + var->value = *val; } if (variable == SWFDEC_AS_STR___proto__) { if (SWFDEC_AS_VALUE_IS_OBJECT (val) && @@ -1340,6 +1337,7 @@ void swfdec_as_object_unwatch (SwfdecAsContext *cx, SwfdecAsObject *object, guint argc, SwfdecAsValue *argv, SwfdecAsValue *retval) { + SwfdecAsVariable *var; const char *name; SWFDEC_AS_VALUE_SET_BOOLEAN (retval, FALSE); @@ -1348,6 +1346,11 @@ swfdec_as_object_unwatch (SwfdecAsContex return; name = swfdec_as_value_to_string (cx, &argv[0]); + + // special case: can't unwatch native properties + if ((var = swfdec_as_object_hash_lookup (object, name))&& var->get != NULL) + return; + if (object->watches != NULL && g_hash_table_remove (object->watches, name)) { diff-tree d258d1a93904a367069ea318719f22f17373b688 (from 3a69becf53764c298412ab797d2bb5b63d17bca3) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 15:23:14 2007 +0300 Add Object.prototype.toLocaleString method (just calls this.toString) diff --git a/libswfdec/swfdec_as_initialize.as b/libswfdec/swfdec_as_initialize.as index 617889e..bf283c5 100644 --- a/libswfdec/swfdec_as_initialize.as +++ b/libswfdec/swfdec_as_initialize.as @@ -24,6 +24,10 @@ ASSetNativeAccessor = ASnative (4, 1); /*** BASE OBJECTS ***/ +Object.prototype.toLocaleString = function () { + return this.toString (); +}; +ASSetPropFlags (Object.prototype, null, 3); ASSetPropFlags (Object, null, 7); Boolean = ASconstructor(107, 2); diff --git a/libswfdec/swfdec_as_initialize.h b/libswfdec/swfdec_as_initialize.h index 6cab4c2..2a752dc 100644 --- a/libswfdec/swfdec_as_initialize.h +++ b/libswfdec/swfdec_as_initialize.h @@ -2,149 +2,155 @@ /* compiled from swfdec_as_initialize.as */ const unsigned char swfdec_as_initialize[] = { - 0x88, 0x54, 0x04, 0x30, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x4E, 0x61, 0x74, 0x69, 0x76, 0x65, + 0x88, 0x6C, 0x04, 0x32, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x4E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x00, 0x41, 0x53, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x4E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6F, 0x72, 0x00, 0x4F, 0x62, - 0x6A, 0x65, 0x63, 0x74, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6F, 0x70, 0x46, 0x6C, - 0x61, 0x67, 0x73, 0x00, 0x42, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x00, 0x41, 0x53, 0x63, 0x6F, - 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, 0x00, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, - 0x79, 0x70, 0x65, 0x00, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 0x2C, 0x74, 0x6F, 0x53, 0x74, - 0x72, 0x69, 0x6E, 0x67, 0x00, 0x4E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x4E, 0x61, 0x4E, 0x00, - 0x50, 0x4F, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x5F, 0x49, 0x4E, 0x46, 0x49, 0x4E, 0x49, 0x54, - 0x59, 0x00, 0x49, 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 0x00, 0x4E, 0x45, 0x47, 0x41, 0x54, - 0x49, 0x56, 0x45, 0x5F, 0x49, 0x4E, 0x46, 0x49, 0x4E, 0x49, 0x54, 0x59, 0x00, 0x4D, 0x49, 0x4E, - 0x5F, 0x56, 0x41, 0x4C, 0x55, 0x45, 0x00, 0x4D, 0x41, 0x58, 0x5F, 0x56, 0x41, 0x4C, 0x55, 0x45, - 0x00, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 0x2C, - 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x74, 0x6F, 0x55, 0x70, 0x70, 0x65, 0x72, - 0x43, 0x61, 0x73, 0x65, 0x2C, 0x74, 0x6F, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, - 0x2C, 0x63, 0x68, 0x61, 0x72, 0x41, 0x74, 0x2C, 0x63, 0x68, 0x61, 0x72, 0x43, 0x6F, 0x64, 0x65, - 0x41, 0x74, 0x2C, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x2C, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x4F, - 0x66, 0x2C, 0x6C, 0x61, 0x73, 0x74, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x4F, 0x66, 0x2C, 0x73, 0x6C, - 0x69, 0x63, 0x65, 0x2C, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x73, 0x70, - 0x6C, 0x69, 0x74, 0x2C, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x00, 0x66, 0x72, 0x6F, 0x6D, 0x43, - 0x68, 0x61, 0x72, 0x43, 0x6F, 0x64, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x68, 0x00, 0x45, 0x00, 0x4C, - 0x4E, 0x31, 0x30, 0x00, 0x4C, 0x4E, 0x32, 0x00, 0x4C, 0x4F, 0x47, 0x31, 0x30, 0x45, 0x00, 0x4C, - 0x4F, 0x47, 0x32, 0x45, 0x00, 0x50, 0x49, 0x00, 0x53, 0x51, 0x52, 0x54, 0x31, 0x5F, 0x32, 0x00, - 0x53, 0x51, 0x52, 0x54, 0x32, 0x00, 0x61, 0x62, 0x73, 0x2C, 0x6D, 0x69, 0x6E, 0x2C, 0x6D, 0x61, - 0x78, 0x2C, 0x73, 0x69, 0x6E, 0x2C, 0x63, 0x6F, 0x73, 0x2C, 0x61, 0x74, 0x61, 0x6E, 0x32, 0x2C, - 0x74, 0x61, 0x6E, 0x2C, 0x65, 0x78, 0x70, 0x2C, 0x6C, 0x6F, 0x67, 0x2C, 0x73, 0x71, 0x72, 0x74, - 0x2C, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x2C, 0x66, 0x6C, - 0x6F, 0x6F, 0x72, 0x2C, 0x63, 0x65, 0x69, 0x6C, 0x2C, 0x61, 0x74, 0x61, 0x6E, 0x2C, 0x61, 0x73, - 0x69, 0x6E, 0x2C, 0x61, 0x63, 0x6F, 0x73, 0x2C, 0x70, 0x6F, 0x77, 0x00, 0x44, 0x61, 0x74, 0x65, - 0x00, 0x67, 0x65, 0x74, 0x46, 0x75, 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, 0x67, 0x65, 0x74, - 0x59, 0x65, 0x61, 0x72, 0x2C, 0x67, 0x65, 0x74, 0x4D, 0x6F, 0x6E, 0x74, 0x68, 0x2C, 0x67, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x65, 0x2C, 0x67, 0x65, 0x74, 0x44, 0x61, 0x79, 0x2C, 0x67, 0x65, 0x74, - 0x48, 0x6F, 0x75, 0x72, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, - 0x2C, 0x67, 0x65, 0x74, 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x4D, - 0x69, 0x6C, 0x6C, 0x69, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x46, - 0x75, 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, 0x73, 0x65, 0x74, 0x4D, 0x6F, 0x6E, 0x74, 0x68, - 0x2C, 0x73, 0x65, 0x74, 0x44, 0x61, 0x74, 0x65, 0x2C, 0x73, 0x65, 0x74, 0x48, 0x6F, 0x75, 0x72, - 0x73, 0x2C, 0x73, 0x65, 0x74, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x2C, 0x73, 0x65, 0x74, - 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x4D, 0x69, 0x6C, 0x6C, 0x69, - 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x2C, - 0x73, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x2C, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x7A, - 0x6F, 0x6E, 0x65, 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2C, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, - 0x6E, 0x67, 0x2C, 0x73, 0x65, 0x74, 0x59, 0x65, 0x61, 0x72, 0x00, 0x67, 0x65, 0x74, 0x55, 0x54, - 0x43, 0x46, 0x75, 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, - 0x59, 0x65, 0x61, 0x72, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x6F, 0x6E, 0x74, 0x68, - 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x44, 0x61, 0x74, 0x65, 0x2C, 0x67, 0x65, 0x74, 0x55, - 0x54, 0x43, 0x44, 0x61, 0x79, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x48, 0x6F, 0x75, 0x72, - 0x73, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x2C, - 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x67, 0x65, - 0x74, 0x55, 0x54, 0x43, 0x4D, 0x69, 0x6C, 0x6C, 0x69, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, - 0x2C, 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x46, 0x75, 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, - 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x6F, 0x6E, 0x74, 0x68, 0x2C, 0x73, 0x65, 0x74, 0x55, - 0x54, 0x43, 0x44, 0x61, 0x74, 0x65, 0x2C, 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x48, 0x6F, 0x75, - 0x72, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, - 0x2C, 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, - 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x69, 0x6C, 0x6C, 0x69, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, - 0x73, 0x00, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 0x00, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6D, - 0x65, 0x00, 0x55, 0x54, 0x43, 0x00, 0x41, 0x72, 0x72, 0x61, 0x79, 0x00, 0x70, 0x75, 0x73, 0x68, - 0x2C, 0x70, 0x6F, 0x70, 0x2C, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x2C, 0x73, 0x68, 0x69, 0x66, - 0x74, 0x2C, 0x75, 0x6E, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2C, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2C, - 0x6A, 0x6F, 0x69, 0x6E, 0x2C, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0x2C, 0x74, 0x6F, 0x53, 0x74, - 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x73, 0x6F, 0x72, 0x74, 0x2C, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, - 0x65, 0x2C, 0x73, 0x6F, 0x72, 0x74, 0x4F, 0x6E, 0x00, 0x43, 0x41, 0x53, 0x45, 0x49, 0x4E, 0x53, - 0x45, 0x4E, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45, 0x00, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4E, 0x44, - 0x49, 0x4E, 0x47, 0x00, 0x55, 0x4E, 0x49, 0x51, 0x55, 0x45, 0x53, 0x4F, 0x52, 0x54, 0x00, 0x52, - 0x45, 0x54, 0x55, 0x52, 0x4E, 0x49, 0x4E, 0x44, 0x45, 0x58, 0x45, 0x44, 0x41, 0x52, 0x52, 0x41, - 0x59, 0x00, 0x4E, 0x55, 0x4D, 0x45, 0x52, 0x49, 0x43, 0x00, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, - 0x00, 0x75, 0x6E, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, - 0x6E, 0x74, 0x00, 0x69, 0x73, 0x4E, 0x61, 0x4E, 0x00, 0x69, 0x73, 0x46, 0x69, 0x6E, 0x69, 0x74, - 0x65, 0x00, 0x74, 0x68, 0x69, 0x73, 0x00, 0x96, 0x13, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x6A, 0x65, 0x63, 0x74, 0x00, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x00, 0x74, + 0x6F, 0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x74, 0x68, + 0x69, 0x73, 0x00, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x41, 0x53, 0x53, 0x65, + 0x74, 0x50, 0x72, 0x6F, 0x70, 0x46, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x42, 0x6F, 0x6F, 0x6C, 0x65, + 0x61, 0x6E, 0x00, 0x41, 0x53, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, + 0x00, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 0x2C, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, + 0x67, 0x00, 0x4E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x4E, 0x61, 0x4E, 0x00, 0x50, 0x4F, 0x53, + 0x49, 0x54, 0x49, 0x56, 0x45, 0x5F, 0x49, 0x4E, 0x46, 0x49, 0x4E, 0x49, 0x54, 0x59, 0x00, 0x49, + 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 0x00, 0x4E, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, + 0x5F, 0x49, 0x4E, 0x46, 0x49, 0x4E, 0x49, 0x54, 0x59, 0x00, 0x4D, 0x49, 0x4E, 0x5F, 0x56, 0x41, + 0x4C, 0x55, 0x45, 0x00, 0x4D, 0x41, 0x58, 0x5F, 0x56, 0x41, 0x4C, 0x55, 0x45, 0x00, 0x53, 0x74, + 0x72, 0x69, 0x6E, 0x67, 0x00, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 0x2C, 0x74, 0x6F, 0x53, + 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x74, 0x6F, 0x55, 0x70, 0x70, 0x65, 0x72, 0x43, 0x61, 0x73, + 0x65, 0x2C, 0x74, 0x6F, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x2C, 0x63, 0x68, + 0x61, 0x72, 0x41, 0x74, 0x2C, 0x63, 0x68, 0x61, 0x72, 0x43, 0x6F, 0x64, 0x65, 0x41, 0x74, 0x2C, + 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x2C, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x4F, 0x66, 0x2C, 0x6C, + 0x61, 0x73, 0x74, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x4F, 0x66, 0x2C, 0x73, 0x6C, 0x69, 0x63, 0x65, + 0x2C, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x73, 0x70, 0x6C, 0x69, 0x74, + 0x2C, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x00, 0x66, 0x72, 0x6F, 0x6D, 0x43, 0x68, 0x61, 0x72, + 0x43, 0x6F, 0x64, 0x65, 0x00, 0x4D, 0x61, 0x74, 0x68, 0x00, 0x45, 0x00, 0x4C, 0x4E, 0x31, 0x30, + 0x00, 0x4C, 0x4E, 0x32, 0x00, 0x4C, 0x4F, 0x47, 0x31, 0x30, 0x45, 0x00, 0x4C, 0x4F, 0x47, 0x32, + 0x45, 0x00, 0x50, 0x49, 0x00, 0x53, 0x51, 0x52, 0x54, 0x31, 0x5F, 0x32, 0x00, 0x53, 0x51, 0x52, + 0x54, 0x32, 0x00, 0x61, 0x62, 0x73, 0x2C, 0x6D, 0x69, 0x6E, 0x2C, 0x6D, 0x61, 0x78, 0x2C, 0x73, + 0x69, 0x6E, 0x2C, 0x63, 0x6F, 0x73, 0x2C, 0x61, 0x74, 0x61, 0x6E, 0x32, 0x2C, 0x74, 0x61, 0x6E, + 0x2C, 0x65, 0x78, 0x70, 0x2C, 0x6C, 0x6F, 0x67, 0x2C, 0x73, 0x71, 0x72, 0x74, 0x2C, 0x72, 0x6F, + 0x75, 0x6E, 0x64, 0x2C, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x2C, 0x66, 0x6C, 0x6F, 0x6F, 0x72, + 0x2C, 0x63, 0x65, 0x69, 0x6C, 0x2C, 0x61, 0x74, 0x61, 0x6E, 0x2C, 0x61, 0x73, 0x69, 0x6E, 0x2C, + 0x61, 0x63, 0x6F, 0x73, 0x2C, 0x70, 0x6F, 0x77, 0x00, 0x44, 0x61, 0x74, 0x65, 0x00, 0x67, 0x65, + 0x74, 0x46, 0x75, 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, 0x67, 0x65, 0x74, 0x59, 0x65, 0x61, + 0x72, 0x2C, 0x67, 0x65, 0x74, 0x4D, 0x6F, 0x6E, 0x74, 0x68, 0x2C, 0x67, 0x65, 0x74, 0x44, 0x61, + 0x74, 0x65, 0x2C, 0x67, 0x65, 0x74, 0x44, 0x61, 0x79, 0x2C, 0x67, 0x65, 0x74, 0x48, 0x6F, 0x75, + 0x72, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x2C, 0x67, 0x65, + 0x74, 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x4D, 0x69, 0x6C, 0x6C, + 0x69, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x46, 0x75, 0x6C, 0x6C, + 0x59, 0x65, 0x61, 0x72, 0x2C, 0x73, 0x65, 0x74, 0x4D, 0x6F, 0x6E, 0x74, 0x68, 0x2C, 0x73, 0x65, + 0x74, 0x44, 0x61, 0x74, 0x65, 0x2C, 0x73, 0x65, 0x74, 0x48, 0x6F, 0x75, 0x72, 0x73, 0x2C, 0x73, + 0x65, 0x74, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x53, 0x65, 0x63, + 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x4D, 0x69, 0x6C, 0x6C, 0x69, 0x73, 0x65, 0x63, + 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x2C, 0x73, 0x65, 0x74, + 0x54, 0x69, 0x6D, 0x65, 0x2C, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, + 0x4F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2C, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, + 0x73, 0x65, 0x74, 0x59, 0x65, 0x61, 0x72, 0x00, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x46, 0x75, + 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x59, 0x65, 0x61, + 0x72, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x6F, 0x6E, 0x74, 0x68, 0x2C, 0x67, 0x65, + 0x74, 0x55, 0x54, 0x43, 0x44, 0x61, 0x74, 0x65, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x44, + 0x61, 0x79, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, 0x43, 0x48, 0x6F, 0x75, 0x72, 0x73, 0x2C, 0x67, + 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x2C, 0x67, 0x65, 0x74, + 0x55, 0x54, 0x43, 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x67, 0x65, 0x74, 0x55, 0x54, + 0x43, 0x4D, 0x69, 0x6C, 0x6C, 0x69, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, 0x65, + 0x74, 0x55, 0x54, 0x43, 0x46, 0x75, 0x6C, 0x6C, 0x59, 0x65, 0x61, 0x72, 0x2C, 0x73, 0x65, 0x74, + 0x55, 0x54, 0x43, 0x4D, 0x6F, 0x6E, 0x74, 0x68, 0x2C, 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x44, + 0x61, 0x74, 0x65, 0x2C, 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x48, 0x6F, 0x75, 0x72, 0x73, 0x2C, + 0x73, 0x65, 0x74, 0x55, 0x54, 0x43, 0x4D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x2C, 0x73, 0x65, + 0x74, 0x55, 0x54, 0x43, 0x53, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x73, 0x65, 0x74, 0x55, + 0x54, 0x43, 0x4D, 0x69, 0x6C, 0x6C, 0x69, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x00, 0x76, + 0x61, 0x6C, 0x75, 0x65, 0x4F, 0x66, 0x00, 0x67, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x00, 0x55, + 0x54, 0x43, 0x00, 0x41, 0x72, 0x72, 0x61, 0x79, 0x00, 0x70, 0x75, 0x73, 0x68, 0x2C, 0x70, 0x6F, + 0x70, 0x2C, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x2C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2C, 0x75, + 0x6E, 0x73, 0x68, 0x69, 0x66, 0x74, 0x2C, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2C, 0x6A, 0x6F, 0x69, + 0x6E, 0x2C, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0x2C, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, + 0x67, 0x2C, 0x73, 0x6F, 0x72, 0x74, 0x2C, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2C, 0x73, + 0x6F, 0x72, 0x74, 0x4F, 0x6E, 0x00, 0x43, 0x41, 0x53, 0x45, 0x49, 0x4E, 0x53, 0x45, 0x4E, 0x53, + 0x49, 0x54, 0x49, 0x56, 0x45, 0x00, 0x44, 0x45, 0x53, 0x43, 0x45, 0x4E, 0x44, 0x49, 0x4E, 0x47, + 0x00, 0x55, 0x4E, 0x49, 0x51, 0x55, 0x45, 0x53, 0x4F, 0x52, 0x54, 0x00, 0x52, 0x45, 0x54, 0x55, + 0x52, 0x4E, 0x49, 0x4E, 0x44, 0x45, 0x58, 0x45, 0x44, 0x41, 0x52, 0x52, 0x41, 0x59, 0x00, 0x4E, + 0x55, 0x4D, 0x45, 0x52, 0x49, 0x43, 0x00, 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x75, 0x6E, + 0x65, 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6E, 0x74, 0x00, + 0x69, 0x73, 0x4E, 0x61, 0x4E, 0x00, 0x69, 0x73, 0x46, 0x69, 0x6E, 0x69, 0x74, 0x65, 0x00, 0x96, + 0x13, 0x00, 0x08, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0x02, + 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, - 0x13, 0x00, 0x08, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0x02, - 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, - 0x08, 0x03, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, - 0x13, 0x00, 0x08, 0x05, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0x6B, 0x00, 0x00, 0x00, 0x07, 0x02, - 0x00, 0x00, 0x00, 0x08, 0x06, 0x3D, 0x1D, 0x96, 0x09, 0x00, 0x08, 0x08, 0x07, 0x6B, 0x00, 0x00, - 0x00, 0x08, 0x05, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, - 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, - 0x05, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, - 0x08, 0x04, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x09, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0x6A, - 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x06, 0x3D, 0x1D, 0x96, 0x09, 0x00, 0x08, - 0x08, 0x07, 0x6A, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, - 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, - 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, 0x00, - 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, - 0x04, 0x00, 0x08, 0x0A, 0x08, 0x0A, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x04, - 0x00, 0x08, 0x0B, 0x08, 0x0C, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x04, 0x00, - 0x08, 0x0D, 0x08, 0x0C, 0x1C, 0x96, 0x05, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x4F, 0x96, - 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x0E, 0x07, 0x00, 0x00, 0x00, 0x00, 0x4F, - 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x0B, 0x00, 0x08, 0x0F, 0x06, 0xFF, 0xFF, 0xEF, 0x7F, - 0xE2, 0xFF, 0xFF, 0xFF, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, - 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, 0x13, 0x00, - 0x08, 0x10, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFB, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, - 0x00, 0x08, 0x06, 0x3D, 0x1D, 0x96, 0x0E, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x11, 0x07, - 0xFB, 0x00, 0x00, 0x00, 0x08, 0x10, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, 0x00, - 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x02, 0x08, 0x10, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, - 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x10, 0x1C, 0x96, 0x13, 0x00, - 0x08, 0x12, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x07, 0xFB, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x10, - 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, 0x5F, 0x00, - 0x08, 0x13, 0x08, 0x14, 0x06, 0x0A, 0xBF, 0x05, 0x40, 0x74, 0x57, 0x14, 0x8B, 0x08, 0x15, 0x06, - 0xB1, 0x6B, 0x02, 0x40, 0x1F, 0x55, 0xB5, 0xBB, 0x08, 0x16, 0x06, 0x42, 0x2E, 0xE6, 0x3F, 0xEC, - 0x39, 0xFA, 0xFE, 0x08, 0x17, 0x06, 0x7B, 0xCB, 0xDB, 0x3F, 0x11, 0xE5, 0x26, 0x15, 0x08, 0x18, - 0x06, 0x47, 0x15, 0xF7, 0x3F, 0xEF, 0x82, 0x2B, 0x65, 0x08, 0x19, 0x06, 0xFB, 0x21, 0x09, 0x40, - 0x11, 0x2D, 0x44, 0x54, 0x08, 0x1A, 0x06, 0x9E, 0xA0, 0xE6, 0x3F, 0xD1, 0x3B, 0x7F, 0x66, 0x08, - 0x1B, 0x06, 0x9E, 0xA0, 0xF6, 0x3F, 0xE3, 0x3B, 0x7F, 0x66, 0x07, 0x08, 0x00, 0x00, 0x00, 0x43, - 0x1D, 0x96, 0x09, 0x00, 0x08, 0x1C, 0x07, 0xC8, 0x00, 0x00, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x07, - 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, - 0x00, 0x00, 0x02, 0x08, 0x13, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, - 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x1D, 0x07, 0x00, 0x01, 0x00, 0x00, 0x07, 0x67, 0x00, 0x00, - 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x06, 0x3D, 0x1D, 0x96, 0x09, 0x00, 0x08, 0x1E, 0x07, - 0x67, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, 0x00, - 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x0E, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x08, 0x1F, 0x07, 0x67, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, - 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x02, 0x00, - 0x08, 0x1D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x20, 0x08, 0x1D, - 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x21, 0x4E, 0x4F, 0x96, 0x02, - 0x00, 0x08, 0x1D, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x22, 0x07, 0x01, 0x01, 0x00, 0x00, 0x07, 0x67, - 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x08, 0x00, 0x07, - 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x1D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, 0x96, 0x07, - 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, - 0x00, 0x00, 0x02, 0x08, 0x1D, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, - 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x23, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x06, 0x3D, 0x1D, 0x96, 0x0E, 0x00, 0x07, 0x01, 0x00, - 0x00, 0x00, 0x08, 0x24, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x08, 0x23, 0x1C, 0x96, 0x02, 0x00, 0x08, - 0x07, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, - 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x23, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x4E, - 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, - 0x23, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x25, 0x07, 0x01, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, - 0x08, 0x23, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x26, 0x07, 0x02, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, - 0x00, 0x08, 0x23, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x27, 0x07, 0x04, 0x00, 0x00, 0x00, 0x4F, 0x96, - 0x02, 0x00, 0x08, 0x23, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x28, 0x07, 0x08, 0x00, 0x00, 0x00, 0x4F, - 0x96, 0x02, 0x00, 0x08, 0x23, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x29, 0x07, 0x10, 0x00, 0x00, 0x00, - 0x4F, 0x96, 0x13, 0x00, 0x08, 0x2A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, - 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x2B, 0x07, 0x01, - 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, - 0x1D, 0x96, 0x13, 0x00, 0x08, 0x2C, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, - 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x2D, 0x07, 0x12, - 0x00, 0x00, 0x00, 0x07, 0xC8, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, - 0x1D, 0x96, 0x13, 0x00, 0x08, 0x2E, 0x07, 0x13, 0x00, 0x00, 0x00, 0x07, 0xC8, 0x00, 0x00, 0x00, - 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x0D, 0x00, 0x07, 0x06, 0x00, 0x00, - 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x02, 0x08, 0x2F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, - 0x00, 0x00, 0x08, 0x04, 0x3D, 0x17, 0x00 + 0x02, 0x00, 0x08, 0x03, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x05, + 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x07, 0x52, 0x3E, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x03, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x07, 0x00, + 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, + 0x00, 0x02, 0x08, 0x03, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, + 0x17, 0x96, 0x13, 0x00, 0x08, 0x09, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0x6B, 0x00, 0x00, 0x00, + 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x3D, 0x1D, 0x96, 0x09, 0x00, 0x08, 0x0B, 0x07, 0x6B, + 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x07, 0x00, 0x07, + 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, + 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x0C, 0x07, 0x02, 0x00, 0x00, 0x00, + 0x07, 0x6A, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x3D, 0x1D, 0x96, 0x09, + 0x00, 0x08, 0x0B, 0x07, 0x6A, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, + 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, + 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, + 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x0C, + 0x1C, 0x96, 0x04, 0x00, 0x08, 0x0D, 0x08, 0x0D, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, + 0x96, 0x04, 0x00, 0x08, 0x0E, 0x08, 0x0F, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, + 0x04, 0x00, 0x08, 0x10, 0x08, 0x0F, 0x1C, 0x96, 0x05, 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, + 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x11, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x0B, 0x00, 0x08, 0x12, 0x06, 0xFF, 0xFF, + 0xEF, 0x7F, 0xE2, 0xFF, 0xFF, 0xFF, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, + 0x08, 0x0C, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, + 0x13, 0x00, 0x08, 0x13, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFB, 0x00, 0x00, 0x00, 0x07, 0x02, + 0x00, 0x00, 0x00, 0x08, 0x0A, 0x3D, 0x1D, 0x96, 0x0E, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, + 0x14, 0x07, 0xFB, 0x00, 0x00, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, + 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, + 0x00, 0x00, 0x00, 0x02, 0x08, 0x13, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x07, 0x00, + 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, + 0x13, 0x00, 0x08, 0x15, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x07, 0xFB, 0x00, 0x00, 0x00, 0x07, 0x02, + 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, + 0x08, 0x13, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, + 0x5F, 0x00, 0x08, 0x16, 0x08, 0x17, 0x06, 0x0A, 0xBF, 0x05, 0x40, 0x74, 0x57, 0x14, 0x8B, 0x08, + 0x18, 0x06, 0xB1, 0x6B, 0x02, 0x40, 0x1F, 0x55, 0xB5, 0xBB, 0x08, 0x19, 0x06, 0x42, 0x2E, 0xE6, + 0x3F, 0xEC, 0x39, 0xFA, 0xFE, 0x08, 0x1A, 0x06, 0x7B, 0xCB, 0xDB, 0x3F, 0x11, 0xE5, 0x26, 0x15, + 0x08, 0x1B, 0x06, 0x47, 0x15, 0xF7, 0x3F, 0xEF, 0x82, 0x2B, 0x65, 0x08, 0x1C, 0x06, 0xFB, 0x21, + 0x09, 0x40, 0x11, 0x2D, 0x44, 0x54, 0x08, 0x1D, 0x06, 0x9E, 0xA0, 0xE6, 0x3F, 0xD1, 0x3B, 0x7F, + 0x66, 0x08, 0x1E, 0x06, 0x9E, 0xA0, 0xF6, 0x3F, 0xE3, 0x3B, 0x7F, 0x66, 0x07, 0x08, 0x00, 0x00, + 0x00, 0x43, 0x1D, 0x96, 0x09, 0x00, 0x08, 0x1F, 0x07, 0xC8, 0x00, 0x00, 0x00, 0x08, 0x16, 0x1C, + 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, + 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x16, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x20, 0x07, 0x00, 0x01, 0x00, 0x00, 0x07, 0x67, + 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x3D, 0x1D, 0x96, 0x09, 0x00, 0x08, + 0x21, 0x07, 0x67, 0x00, 0x00, 0x00, 0x08, 0x20, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, + 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x0E, 0x00, 0x07, 0x80, + 0x00, 0x00, 0x00, 0x08, 0x22, 0x07, 0x67, 0x00, 0x00, 0x00, 0x08, 0x20, 0x1C, 0x96, 0x02, 0x00, + 0x08, 0x04, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, + 0x02, 0x00, 0x08, 0x20, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x23, + 0x08, 0x20, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x24, 0x4E, 0x4F, + 0x96, 0x02, 0x00, 0x08, 0x20, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x25, 0x07, 0x01, 0x01, 0x00, 0x00, + 0x07, 0x67, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x08, + 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x04, 0x4E, + 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, + 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x20, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, + 0x08, 0x08, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x26, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFC, + 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x3D, 0x1D, 0x96, 0x0E, 0x00, 0x07, + 0x01, 0x00, 0x00, 0x00, 0x08, 0x27, 0x07, 0xFC, 0x00, 0x00, 0x00, 0x08, 0x26, 0x1C, 0x96, 0x02, + 0x00, 0x08, 0x04, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, + 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x26, 0x1C, 0x96, 0x02, 0x00, 0x08, + 0x04, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x96, 0x02, + 0x00, 0x08, 0x26, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x28, 0x07, 0x01, 0x00, 0x00, 0x00, 0x4F, 0x96, + 0x02, 0x00, 0x08, 0x26, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x29, 0x07, 0x02, 0x00, 0x00, 0x00, 0x4F, + 0x96, 0x02, 0x00, 0x08, 0x26, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x2A, 0x07, 0x04, 0x00, 0x00, 0x00, + 0x4F, 0x96, 0x02, 0x00, 0x08, 0x26, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x2B, 0x07, 0x08, 0x00, 0x00, + 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x26, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x2C, 0x07, 0x10, 0x00, + 0x00, 0x00, 0x4F, 0x96, 0x13, 0x00, 0x08, 0x2D, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, + 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x2E, + 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, + 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x2F, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00, + 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x30, + 0x07, 0x12, 0x00, 0x00, 0x00, 0x07, 0xC8, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, + 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0x31, 0x07, 0x13, 0x00, 0x00, 0x00, 0x07, 0xC8, 0x00, + 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x0D, 0x00, 0x07, 0x06, + 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x02, 0x08, 0x06, 0x1C, 0x96, 0x07, 0x00, 0x07, + 0x04, 0x00, 0x00, 0x00, 0x08, 0x08, 0x3D, 0x17, 0x00 }; diff-tree 3a69becf53764c298412ab797d2bb5b63d17bca3 (from 4328989d1427e8cf2e51a80d3b30ffb4335808b6) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 14:37:13 2007 +0300 Recompile function-properties test with trace_properties.as changes diff --git a/test/trace/function-properties-5.swf b/test/trace/function-properties-5.swf index de06263..f556e5c 100644 Binary files a/test/trace/function-properties-5.swf and b/test/trace/function-properties-5.swf differ diff --git a/test/trace/function-properties-6.swf b/test/trace/function-properties-6.swf index baa9301..14fd223 100644 Binary files a/test/trace/function-properties-6.swf and b/test/trace/function-properties-6.swf differ diff --git a/test/trace/function-properties-6.swf.trace b/test/trace/function-properties-6.swf.trace index 9a8937f..c68f0ca 100644 --- a/test/trace/function-properties-6.swf.trace +++ b/test/trace/function-properties-6.swf.trace @@ -1,11 +1,19 @@ -_global.Function = _global.Object.constructor - __proto__ (hp) = _global.Object.__proto__ - constructor (hp) = _global.Object.constructor - prototype (hp) = _global.Object.__proto__ +_global.Function = function + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function + prototype (hp) = object + __proto__ (hp) = _global.Object.prototype + apply (hp) = function + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function + call (hp) = function + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function + constructor (hp) = _global.Function local.a = object myFunction = function - __proto__ (hp) = _global.Object.__proto__ - constructor (hp) = _global.Object.constructor + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function prototype (hp) = object __proto__ (hp) = _global.Object.prototype constructor (hp) = local.a.myFunction diff --git a/test/trace/function-properties-7.swf b/test/trace/function-properties-7.swf index 14d01da..ef22be7 100644 Binary files a/test/trace/function-properties-7.swf and b/test/trace/function-properties-7.swf differ diff --git a/test/trace/function-properties-7.swf.trace b/test/trace/function-properties-7.swf.trace index 9a8937f..c68f0ca 100644 --- a/test/trace/function-properties-7.swf.trace +++ b/test/trace/function-properties-7.swf.trace @@ -1,11 +1,19 @@ -_global.Function = _global.Object.constructor - __proto__ (hp) = _global.Object.__proto__ - constructor (hp) = _global.Object.constructor - prototype (hp) = _global.Object.__proto__ +_global.Function = function + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function + prototype (hp) = object + __proto__ (hp) = _global.Object.prototype + apply (hp) = function + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function + call (hp) = function + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function + constructor (hp) = _global.Function local.a = object myFunction = function - __proto__ (hp) = _global.Object.__proto__ - constructor (hp) = _global.Object.constructor + __proto__ (hp) = _global.Function.prototype + constructor (hp) = _global.Function prototype (hp) = object __proto__ (hp) = _global.Object.prototype constructor (hp) = local.a.myFunction diff-tree 4328989d1427e8cf2e51a80d3b30ffb4335808b6 (from 476005699d9e4fc7e2585f0908810eab49f16c52) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 14:36:22 2007 +0300 Add Function.prototype.constructor property diff --git a/libswfdec/swfdec_as_function.c b/libswfdec/swfdec_as_function.c index 27a0121..c8f4fbe 100644 --- a/libswfdec/swfdec_as_function.c +++ b/libswfdec/swfdec_as_function.c @@ -247,6 +247,9 @@ swfdec_as_function_init_context (SwfdecA &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); swfdec_as_object_set_variable_and_flags (function, SWFDEC_AS_STR_prototype, &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); + SWFDEC_AS_VALUE_SET_OBJECT (&val, function); + swfdec_as_object_set_variable_and_flags (proto, SWFDEC_AS_STR_constructor, + &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT); /* prototype functions */ swfdec_as_object_add_function (proto, SWFDEC_AS_STR_call, SWFDEC_TYPE_AS_FUNCTION, swfdec_as_function_do_call, 0); diff-tree 476005699d9e4fc7e2585f0908810eab49f16c52 (from 2317fb49f1f8060fabbb307e802a4a5b058b0430) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 14:28:09 2007 +0300 Add a test for Function's apply method diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am index 5f360cc..c0a12e0 100644 --- a/test/trace/Makefile.am +++ b/test/trace/Makefile.am @@ -489,13 +489,13 @@ EXTRA_DIST = \ function1.swf.trace \ function2.swf \ function2.swf.trace \ - function-properties.as \ - function-properties-5.swf \ - function-properties-5.swf.trace \ - function-properties-6.swf \ - function-properties-6.swf.trace \ - function-properties-7.swf \ - function-properties-7.swf.trace \ + function-apply.as \ + function-apply-5.swf \ + function-apply-5.swf.trace \ + function-apply-6.swf \ + function-apply-6.swf.trace \ + function-apply-7.swf \ + function-apply-7.swf.trace \ function-prototype-chain.swf \ function-prototype-chain.swf.trace \ function-scope.as \ diff --git a/test/trace/function-apply-5.swf b/test/trace/function-apply-5.swf new file mode 100644 index 0000000..e478c90 Binary files /dev/null and b/test/trace/function-apply-5.swf differ diff --git a/test/trace/function-apply-5.swf.trace b/test/trace/function-apply-5.swf.trace new file mode 100644 index 0000000..e35f023 --- /dev/null +++ b/test/trace/function-apply-5.swf.trace @@ -0,0 +1,160 @@ +valueOf called +toString called +toString called with +valueOf called with +0: valueOf! +1: valueOf! +2: valueOf! +3: valueOf! +4: valueOf! +5: valueOf! +6: valueOf! +7: valueOf! +8: valueOf! +9: valueOf! +10: valueOf! +11: valueOf! +12: valueOf! +13: valueOf! +14: valueOf! +15: valueOf! +16: valueOf! +17: valueOf! +18: valueOf! +19: valueOf! +20: valueOf! +21: valueOf! +21: toString! +22: valueOf! +23: valueOf! +23: toString! +24: valueOf! +24: toString! +25: valueOf! +25: toString! +26: valueOf! +26: toString! +Testing: (no arguments) +undefined +Testing: a +undefined +Testing: a, [1, 2, 3] +undefined +Testing: a, [1, 2, 3], [4, 5] +undefined +Testing: a, 1, [2, 3] +undefined +Testing: a, 1, 2, 3 +undefined +Testing: a, fake_array +undefined +Testing: b, [1, 2, 3] +undefined +Testing: (0) (undefined), [1, 2, 3] +undefined +Testing: (1) null (null), [1, 2, 3] +undefined +Testing: (2) true (boolean), [1, 2, 3] +undefined +Testing: (3) false (boolean), [1, 2, 3] +undefined +Testing: (4) 0 (number), [1, 2, 3] +undefined +Testing: (5) 1 (number), [1, 2, 3] +undefined +Testing: (6) 0.5 (number), [1, 2, 3] +undefined +Testing: (7) -1 (number), [1, 2, 3] +undefined +Testing: (8) -0.5 (number), [1, 2, 3] +undefined +Testing: (9) Infinity (number), [1, 2, 3] +undefined +Testing: (10) -Infinity (number), [1, 2, 3] +undefined +Testing: (11) NaN (number), [1, 2, 3] +undefined +Testing: (12) (string), [1, 2, 3] +undefined +Testing: (13) 0 (string), [1, 2, 3] +undefined +Testing: (14) -0 (string), [1, 2, 3] +undefined +Testing: (15) 0.0 (string), [1, 2, 3] +undefined +Testing: (16) 1 (string), [1, 2, 3] +undefined +Testing: (17) Hello World! (string), [1, 2, 3] +undefined +Testing: (18) true (string), [1, 2, 3] +undefined +Testing: (19) _level0 (string), [1, 2, 3] +undefined +Testing: (20) _level0 (movieclip), [1, 2, 3] +undefined +Testing: (21) [object Object] (object), [1, 2, 3] +undefined +Testing: (22) (undefined), [1, 2, 3] +undefined +Testing: (23) [type Object] (object), [1, 2, 3] +undefined +Testing: (24) [type Object] (object), [1, 2, 3] +undefined +Testing: (25) [object Object] (object), [1, 2, 3] +undefined +Testing: (26) (object), [1, 2, 3] +undefined +Testing: (27) (object), [1, 2, 3] +undefined +Testing: (28) null (object), [1, 2, 3] +undefined +Testing: (29) true (object), [1, 2, 3] +undefined +Testing: (30) false (object), [1, 2, 3] +undefined +Testing: (31) 0 (object), [1, 2, 3] +undefined +Testing: (32) 1 (object), [1, 2, 3] +undefined +Testing: (33) 0.5 (object), [1, 2, 3] +undefined +Testing: (34) -1 (object), [1, 2, 3] +undefined +Testing: (35) -0.5 (object), [1, 2, 3] +undefined +Testing: (36) Infinity (object), [1, 2, 3] +undefined +Testing: (37) -Infinity (object), [1, 2, 3] +undefined +Testing: (38) NaN (object), [1, 2, 3] +undefined +Testing: (39) (object), [1, 2, 3] +undefined +Testing: (40) 0 (object), [1, 2, 3] +undefined +Testing: (41) -0 (object), [1, 2, 3] +undefined +Testing: (42) 0.0 (object), [1, 2, 3] +undefined +Testing: (43) 1 (object), [1, 2, 3] +undefined +Testing: (44) Hello World! (object), [1, 2, 3] +undefined +Testing: (45) true (object), [1, 2, 3] +undefined +Testing: (46) _level0 (object), [1, 2, 3] +undefined +Testing: (47) _level0 (object), [1, 2, 3] +undefined +Testing: (48) [type Object] (object), [1, 2, 3] +undefined +Testing: (49) (object), [1, 2, 3] +undefined +Testing: (50) [type Object] (object), [1, 2, 3] +undefined +Testing: (51) [type Object] (object), [1, 2, 3] +undefined +Testing: (52) [type Object] (object), [1, 2, 3] +undefined +Testing: (53) [type Object] (object), [1, 2, 3] +undefined diff --git a/test/trace/function-apply-6.swf b/test/trace/function-apply-6.swf new file mode 100644 index 0000000..d692744 Binary files /dev/null and b/test/trace/function-apply-6.swf differ diff --git a/test/trace/function-apply-6.swf.trace b/test/trace/function-apply-6.swf.trace new file mode 100644 index 0000000..8e977bb --- /dev/null +++ b/test/trace/function-apply-6.swf.trace @@ -0,0 +1,194 @@ +valueOf called +toString called +toString called with +valueOf called with +0: valueOf! +1: valueOf! +2: valueOf! +3: valueOf! +4: valueOf! +5: valueOf! +6: valueOf! +7: valueOf! +8: valueOf! +9: valueOf! +10: valueOf! +11: valueOf! +12: valueOf! +13: valueOf! +14: valueOf! +15: valueOf! +16: valueOf! +17: valueOf! +18: valueOf! +19: valueOf! +20: valueOf! +21: valueOf! +21: toString! +22: valueOf! +22: toString! +23: valueOf! +23: toString! +24: valueOf! +24: toString! +25: valueOf! +25: toString! +26: valueOf! +26: toString! +Testing: (no arguments) +this: +arguments: 0: +1 +Testing: a +this: a +arguments: 0: +2 +Testing: a, [1, 2, 3] +this: a +arguments: 3: 1,2,3 +3 +Testing: a, [1, 2, 3], [4, 5] +this: a +arguments: 3: 1,2,3 +4 +Testing: a, 1, [2, 3] +this: a +arguments: 0: +5 +Testing: a, 1, 2, 3 +this: a +arguments: 0: +6 +Testing: a, fake_array +this: a +arguments: 3: 1,2,3 +7 +Testing: b, [1, 2, 3] +this: b +arguments: 3: 1,2,3 +8 +Testing: (0) (undefined), [1, 2, 3] +this: +arguments: 3: 1,2,3 +1 +Testing: (2) true (boolean), [1, 2, 3] +this: true +arguments: 3: 1,2,3 +3 +Testing: (4) 0 (number), [1, 2, 3] +this: 0 +arguments: 3: 1,2,3 +5 +Testing: (6) 0.5 (number), [1, 2, 3] +this: 0.5 +arguments: 3: 1,2,3 +7 +Testing: (8) -0.5 (number), [1, 2, 3] +this: -0.5 +arguments: 3: 1,2,3 +9 +Testing: (10) -Infinity (number), [1, 2, 3] +this: -Infinity +arguments: 3: 1,2,3 +11 +Testing: (12) (string), [1, 2, 3] +this: +arguments: 3: 1,2,3 +13 +Testing: (14) -0 (string), [1, 2, 3] +this: -0 +arguments: 3: 1,2,3 +15 +Testing: (16) 1 (string), [1, 2, 3] +this: 1 +arguments: 3: 1,2,3 +17 +Testing: (18) true (string), [1, 2, 3] +this: true +arguments: 3: 1,2,3 +19 +Testing: (20) _level0 (movieclip), [1, 2, 3] +this: _level0 +arguments: 3: 1,2,3 +21 +Testing: (22) [type Function] (function), [1, 2, 3] +this: [type Function] +arguments: 3: 1,2,3 +23 +Testing: (24) [type Object] (object), [1, 2, 3] +toString called with +this: [type Object] +arguments: 3: 1,2,3 +25 +Testing: (26) (object), [1, 2, 3] +this: +arguments: 3: 1,2,3 +27 +Testing: (28) null (object), [1, 2, 3] +1: valueOf! +this: null +arguments: 3: 1,2,3 +29 +Testing: (30) false (object), [1, 2, 3] +3: valueOf! +this: false +arguments: 3: 1,2,3 +31 +Testing: (32) 1 (object), [1, 2, 3] +5: valueOf! +this: 1 +arguments: 3: 1,2,3 +33 +Testing: (34) -1 (object), [1, 2, 3] +7: valueOf! +this: -1 +arguments: 3: 1,2,3 +35 +Testing: (36) Infinity (object), [1, 2, 3] +9: valueOf! +this: Infinity +arguments: 3: 1,2,3 +37 +Testing: (38) NaN (object), [1, 2, 3] +11: valueOf! +this: NaN +arguments: 3: 1,2,3 +39 +Testing: (40) 0 (object), [1, 2, 3] +13: valueOf! +this: 0 +arguments: 3: 1,2,3 +41 +Testing: (42) 0.0 (object), [1, 2, 3] +15: valueOf! +this: 0.0 +arguments: 3: 1,2,3 +43 +Testing: (44) Hello World! (object), [1, 2, 3] +17: valueOf! +this: Hello World! +arguments: 3: 1,2,3 +45 +Testing: (46) _level0 (object), [1, 2, 3] +19: valueOf! +this: _level0 +arguments: 3: 1,2,3 +47 +Testing: (48) [type Object] (object), [1, 2, 3] +21: valueOf! +21: toString! +this: [type Object] +arguments: 3: 1,2,3 +49 +Testing: (50) [type Object] (object), [1, 2, 3] +23: valueOf! +23: toString! +this: [type Object] +arguments: 3: 1,2,3 +51 +Testing: (52) [type Object] (object), [1, 2, 3] +25: valueOf! +25: toString! +this: [type Object] +arguments: 3: 1,2,3 +53 diff --git a/test/trace/function-apply-7.swf b/test/trace/function-apply-7.swf new file mode 100644 index 0000000..12eaa5e Binary files /dev/null and b/test/trace/function-apply-7.swf differ diff --git a/test/trace/function-apply-7.swf.trace b/test/trace/function-apply-7.swf.trace new file mode 100644 index 0000000..15ba518 --- /dev/null +++ b/test/trace/function-apply-7.swf.trace @@ -0,0 +1,194 @@ +valueOf called +toString called +toString called with +valueOf called with +0: valueOf! +1: valueOf! +2: valueOf! +3: valueOf! +4: valueOf! +5: valueOf! +6: valueOf! +7: valueOf! +8: valueOf! +9: valueOf! +10: valueOf! +11: valueOf! +12: valueOf! +13: valueOf! +14: valueOf! +15: valueOf! +16: valueOf! +17: valueOf! +18: valueOf! +19: valueOf! +20: valueOf! +21: valueOf! +21: toString! +22: valueOf! +22: toString! +23: valueOf! +23: toString! +24: valueOf! +24: toString! +25: valueOf! +25: toString! +26: valueOf! +26: toString! +Testing: (no arguments) +this: undefined +arguments: 0: +1 +Testing: a +this: a +arguments: 0: +2 +Testing: a, [1, 2, 3] +this: a +arguments: 3: 1,2,3 +3 +Testing: a, [1, 2, 3], [4, 5] +this: a +arguments: 3: 1,2,3 +4 +Testing: a, 1, [2, 3] +this: a +arguments: 0: +5 +Testing: a, 1, 2, 3 +this: a +arguments: 0: +6 +Testing: a, fake_array +this: a +arguments: 3: 1,2,3 +7 +Testing: b, [1, 2, 3] +this: b +arguments: 3: 1,2,3 +8 +Testing: (0) undefined (undefined), [1, 2, 3] +this: undefined +arguments: 3: 1,2,3 +1 +Testing: (2) true (boolean), [1, 2, 3] +this: true +arguments: 3: 1,2,3 +3 +Testing: (4) 0 (number), [1, 2, 3] +this: 0 +arguments: 3: 1,2,3 +5 +Testing: (6) 0.5 (number), [1, 2, 3] +this: 0.5 +arguments: 3: 1,2,3 +7 +Testing: (8) -0.5 (number), [1, 2, 3] +this: -0.5 +arguments: 3: 1,2,3 +9 +Testing: (10) -Infinity (number), [1, 2, 3] +this: -Infinity +arguments: 3: 1,2,3 +11 +Testing: (12) (string), [1, 2, 3] +this: +arguments: 3: 1,2,3 +13 +Testing: (14) -0 (string), [1, 2, 3] +this: -0 +arguments: 3: 1,2,3 +15 +Testing: (16) 1 (string), [1, 2, 3] +this: 1 +arguments: 3: 1,2,3 +17 +Testing: (18) true (string), [1, 2, 3] +this: true +arguments: 3: 1,2,3 +19 +Testing: (20) _level0 (movieclip), [1, 2, 3] +this: _level0 +arguments: 3: 1,2,3 +21 +Testing: (22) [type Function] (function), [1, 2, 3] +this: [type Function] +arguments: 3: 1,2,3 +23 +Testing: (24) [type Object] (object), [1, 2, 3] +toString called with +this: [type Object] +arguments: 3: 1,2,3 +25 +Testing: (26) undefined (object), [1, 2, 3] +this: undefined +arguments: 3: 1,2,3 +27 +Testing: (28) null (object), [1, 2, 3] +1: valueOf! +this: null +arguments: 3: 1,2,3 +29 +Testing: (30) false (object), [1, 2, 3] +3: valueOf! +this: false +arguments: 3: 1,2,3 +31 +Testing: (32) 1 (object), [1, 2, 3] +5: valueOf! +this: 1 +arguments: 3: 1,2,3 +33 +Testing: (34) -1 (object), [1, 2, 3] +7: valueOf! +this: -1 +arguments: 3: 1,2,3 +35 +Testing: (36) Infinity (object), [1, 2, 3] +9: valueOf! +this: Infinity +arguments: 3: 1,2,3 +37 +Testing: (38) NaN (object), [1, 2, 3] +11: valueOf! +this: NaN +arguments: 3: 1,2,3 +39 +Testing: (40) 0 (object), [1, 2, 3] +13: valueOf! +this: 0 +arguments: 3: 1,2,3 +41 +Testing: (42) 0.0 (object), [1, 2, 3] +15: valueOf! +this: 0.0 +arguments: 3: 1,2,3 +43 +Testing: (44) Hello World! (object), [1, 2, 3] +17: valueOf! +this: Hello World! +arguments: 3: 1,2,3 +45 +Testing: (46) _level0 (object), [1, 2, 3] +19: valueOf! +this: _level0 +arguments: 3: 1,2,3 +47 +Testing: (48) [type Object] (object), [1, 2, 3] +21: valueOf! +21: toString! +this: [type Object] +arguments: 3: 1,2,3 +49 +Testing: (50) [type Object] (object), [1, 2, 3] +23: valueOf! +23: toString! +this: [type Object] +arguments: 3: 1,2,3 +51 +Testing: (52) [type Object] (object), [1, 2, 3] +25: valueOf! +25: toString! +this: [type Object] +arguments: 3: 1,2,3 +53 diff --git a/test/trace/function-apply.as b/test/trace/function-apply.as new file mode 100644 index 0000000..cfc4665 --- /dev/null +++ b/test/trace/function-apply.as @@ -0,0 +1,47 @@ +// makeswf -v 7 -r 1 -o function-apply-7.swf function-apply.as + +#include "values.as" + +var i = 0; +function test_function () { + trace ("this: " + this); + trace ("arguments: " + arguments.length + ": " + arguments); + return ++i; +} + +var a = new Object (); +a.toString = function () { return "a"; }; +a.test = test_function; + +var b = new Object (); +b.toString = function () { return "b"; }; + +var fake_array = new Object (); +fake_array[0] = 1; +fake_array[1] = 2; +fake_array[2] = 3; +fake_array.length = 3; + +trace ("Testing: (no arguments)"); +trace (a.test.apply ()); +trace ("Testing: a"); +trace (a.test.apply (a)); +trace ("Testing: a, [1, 2, 3]"); +trace (a.test.apply (a, [1, 2, 3])); +trace ("Testing: a, [1, 2, 3], [4, 5]"); +trace (a.test.apply (a, [1, 2, 3], [4, 5])); +trace ("Testing: a, 1, [2, 3]"); +trace (a.test.apply (a, 1, [2, 3])); +trace ("Testing: a, 1, 2, 3"); +trace (a.test.apply (a, 1, 2, 3)); +trace ("Testing: a, fake_array"); +trace (a.test.apply (a, fake_array)); +trace ("Testing: b, [1, 2, 3]"); +trace (a.test.apply (b, [1, 2, 3])); + +for (var i = 0; i < values.length; i++) { + trace ("Testing: " + names[i] + ", [1, 2, 3]"); + trace (a.test.apply (values[i], [1, 2, 3])); +} + +loadMovie ("FSCommand:quit", ""); diff-tree 2317fb49f1f8060fabbb307e802a4a5b058b0430 (from 51400761671119fb9726de776b4db69a69dbbb9f) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 14:26:12 2007 +0300 Implement Function's apply method diff --git a/libswfdec/swfdec_as_function.c b/libswfdec/swfdec_as_function.c index f89f56c..27a0121 100644 --- a/libswfdec/swfdec_as_function.c +++ b/libswfdec/swfdec_as_function.c @@ -166,6 +166,56 @@ swfdec_as_function_do_call (SwfdecAsCont swfdec_as_context_run (context); } +static void +swfdec_as_function_apply (SwfdecAsContext *cx, SwfdecAsObject *fun, + guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret) +{ + SwfdecAsObject *thisp; + + if (argc > 0) { + thisp = swfdec_as_value_to_object (cx, &argv[0]); + } else { + thisp = NULL; + } + if (thisp == NULL) + thisp = swfdec_as_object_new_empty (cx); + + if (argc > 1 && SWFDEC_AS_VALUE_IS_OBJECT (&argv[1])) + { + int length, i; + SwfdecAsObject *array; + SwfdecAsValue val, *argv_pass; + + array = SWFDEC_AS_VALUE_GET_OBJECT (&argv[1]); + + swfdec_as_object_get_variable (array, SWFDEC_AS_STR_length, &val); + length = swfdec_as_value_to_integer (cx, &val); + + if (length > 0) { + argv_pass = g_malloc (sizeof (SwfdecAsValue) * length); + + for (i = 0; i < length; i++) { + swfdec_as_object_get_variable (array, + swfdec_as_double_to_string (cx, i), &argv_pass[i]); + } + } else { + argv_pass = NULL; + } + + swfdec_as_function_call (SWFDEC_AS_FUNCTION (fun), thisp, length, + argv_pass, ret); + + if (argv_pass != NULL) + g_free (argv_pass); + } + else + { + swfdec_as_function_call (SWFDEC_AS_FUNCTION (fun), thisp, 0, NULL, ret); + } + + swfdec_as_context_run (cx); +} + void swfdec_as_function_init_context (SwfdecAsContext *context, guint version) { @@ -200,6 +250,8 @@ swfdec_as_function_init_context (SwfdecA /* prototype functions */ swfdec_as_object_add_function (proto, SWFDEC_AS_STR_call, SWFDEC_TYPE_AS_FUNCTION, swfdec_as_function_do_call, 0); + swfdec_as_object_add_function (proto, SWFDEC_AS_STR_apply, + SWFDEC_TYPE_AS_FUNCTION, swfdec_as_function_apply, 0); } } diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c index c9f244b..ba00073 100644 --- a/libswfdec/swfdec_as_strings.c +++ b/libswfdec/swfdec_as_strings.c @@ -353,6 +353,7 @@ const char swfdec_as_strings[] = SWFDEC_AS_CONSTANT_STRING ("isPropertyEnumerable") SWFDEC_AS_CONSTANT_STRING ("watch") SWFDEC_AS_CONSTANT_STRING ("unwatch") + SWFDEC_AS_CONSTANT_STRING ("apply") /* add more here */ ; diff-tree 51400761671119fb9726de776b4db69a69dbbb9f (from 93f0e1b0eaeb04357370f7daf9ea8dbbe3786d3e) Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Tue Sep 11 14:25:37 2007 +0300 Fix trace_properties.as to name Function and Function.prototype properly diff --git a/test/trace/trace_properties.as b/test/trace/trace_properties.as index ec5b08c..7fb630c 100644 --- a/test/trace/trace_properties.as +++ b/test/trace/trace_properties.as @@ -406,8 +406,12 @@ function trace_properties (o, prefix, id { _global["mySecretId"] = "_global"; _global.Object["mySecretId"] = "_global.Object"; + _global.Function["mySecretId"] = "_global.Function"; + _global.Function.prototype["mySecretId"] = "_global.Function.prototype"; _global.XMLNode["mySecretId"] = "_global.XMLNode"; generate_names (_global.Object, "_global", "Object"); + generate_names (_global.Function, "_global", "Function"); + generate_names (_global.Function.prototype, "_global", "Function.prototype"); generate_names (_global.XMLNode, "_global", "XMLNode"); generate_names (_global, "", "_global");
Seemingly Similar Threads
- 9 commits - libswfdec/swfdec_as_function.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_object.c libswfdec/swfdec_as_strings.c libswfdec/swfdec_player_as.c test/trace
- 36 commits - libswfdec/Makefile.am libswfdec/swfdec_as_context.c libswfdec/swfdec_as_date.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_strings.c libswfdec/swfdec_flash_security.c
- 4 commits - libswfdec/swfdec_as_boolean.c libswfdec/swfdec_as_boolean.h libswfdec/swfdec_as_context.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_interpret.c test/trace
- 3 commits - libswfdec/swfdec_as_function.c libswfdec/swfdec_as_initialize.as libswfdec/swfdec_as_initialize.h libswfdec/swfdec_as_object.c
- 11 commits - libswfdec/swfdec_as_internal.h libswfdec/swfdec_as_object.c libswfdec/swfdec_html_parser.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_style_sheet.c libswfdec/swfdec_style_sheet.h