[Swfdec] 20 commits - libswfdec/Makefile.am libswfdec/swfdec_as_interpret.c libswfdec/swfdec_html_parser.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_text_field_movie.h libswfdec/swfdec_text_field_movie_html.c libswfdec/swfdec_text_format.c test/dump.c test/trace
Pekka Lampila
medar at kemper.freedesktop.org
Mon Oct 29 07:10:58 PDT 2007
libswfdec/Makefile.am | 2
libswfdec/swfdec_as_interpret.c | 19
libswfdec/swfdec_html_parser.c | 474 -----------
libswfdec/swfdec_initialize.as | 11
libswfdec/swfdec_initialize.h | 1118 +++++++++++++--------------
libswfdec/swfdec_text_field.c | 18
libswfdec/swfdec_text_field.h | 2
libswfdec/swfdec_text_field_movie.c | 585 +++-----------
libswfdec/swfdec_text_field_movie.h | 18
libswfdec/swfdec_text_field_movie_as.c | 6
libswfdec/swfdec_text_field_movie_html.c | 764 ++++++++++++++++++
libswfdec/swfdec_text_format.c | 154 +--
test/dump.c | 2
test/trace/Makefile.am | 23
test/trace/error-properties-5.swf |binary
test/trace/error-properties-5.swf.trace | 23
test/trace/error-properties-6.swf |binary
test/trace/error-properties-6.swf.trace | 23
test/trace/error-properties-7.swf |binary
test/trace/error-properties-7.swf.trace | 21
test/trace/error-properties-8.swf |binary
test/trace/error-properties-8.swf.trace | 21
test/trace/error-properties.as | 12
test/trace/text-field-html-input-6.swf |binary
test/trace/text-field-html-input-6.swf.trace | 84 ++
test/trace/text-field-html-input-7.swf |binary
test/trace/text-field-html-input-7.swf.trace | 76 +
test/trace/text-field-html-input-8.swf |binary
test/trace/text-field-html-input-8.swf.trace | 76 +
test/trace/text-field-html-input.as | 5
test/trace/try-6.swf |binary
test/trace/try-6.swf.trace | 6
test/trace/try-7.swf |binary
test/trace/try-7.swf.trace | 6
test/trace/try-8.swf |binary
test/trace/try-8.swf.trace | 6
test/trace/try-jump-6.swf |binary
test/trace/try-jump-6.swf.trace | 3
test/trace/try-jump-7.swf |binary
test/trace/try-jump-7.swf.trace | 3
test/trace/try-jump-8.swf |binary
test/trace/try-jump-8.swf.trace | 3
test/trace/try-jump.as | 43 +
test/trace/try.as | 27
44 files changed, 2056 insertions(+), 1578 deletions(-)
New commits:
commit 3d0d44ea8afd4f1d5f5d2adf21d5d57c30eb1cd0
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 16:09:17 2007 +0200
Jump in Try's end block functions, not in swfdec_as_frame_handle_exception
diff --git a/libswfdec/swfdec_as_frame.c b/libswfdec/swfdec_as_frame.c
index 5913eb1..c101b9c 100644
--- a/libswfdec/swfdec_as_frame.c
+++ b/libswfdec/swfdec_as_frame.c
@@ -805,7 +805,6 @@ swfdec_as_frame_handle_exception (SwfdecAsFrame *frame)
/* pop blocks in the hope that we are inside a Try block */
while (cx->exception && frame->blocks->len) {
- frame->pc = frame->block_end;
swfdec_as_frame_pop_block (frame);
}
/* no Try blocks caught it, exit frame */
diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index 57cf368..143f78b 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -2601,8 +2601,8 @@ swfdec_action_try_end_catch (SwfdecAsFrame *frame, gpointer data)
if (swfdec_as_context_catch (cx, &val))
{
// we got an exception while in catch block:
- // create new block for finally, passing the exception
- // clear exception from the context
+ // create new block for finally to pass on the exception
+ // jump to that block
exception_value = g_malloc (sizeof (SwfdecAsValue));
*exception_value = val;
@@ -2611,6 +2611,7 @@ swfdec_action_try_end_catch (SwfdecAsFrame *frame, gpointer data)
swfdec_as_frame_push_block (frame, try_data->finally_start,
try_data->finally_start + try_data->finally_size,
swfdec_action_try_end_finally, exception_value);
+ frame->pc = try_data->finally_start;
}
swfdec_action_try_data_free (try_data);
@@ -2639,8 +2640,8 @@ swfdec_action_try_end_try (SwfdecAsFrame *frame, gpointer data)
{
// we got an exception while in try block:
// set the exception variable
- // add new block for catch
- // clear exception from context
+ // add new block for catch and jump to it
+
if (try_data->use_register)
{
if (swfdec_action_has_register (cx, try_data->register_number)) {
@@ -2680,8 +2681,9 @@ swfdec_action_try_end_try (SwfdecAsFrame *frame, gpointer data)
swfdec_as_frame_push_block (frame, try_data->catch_start,
try_data->catch_start + try_data->catch_size,
swfdec_action_try_end_catch, try_data);
- }
- else
+ frame->pc = try_data->catch_start;
+ }
+ else
{
swfdec_action_try_data_free (try_data);
}
commit 30e92ccded4ad52b46d11192cee525b36f6bd37c
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 16:04:53 2007 +0200
Some small fixes to TextField's size handling
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 881327c..f10f529 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -37,6 +37,8 @@
G_DEFINE_TYPE (SwfdecTextFieldMovie, swfdec_text_field_movie, SWFDEC_TYPE_MOVIE)
+#define EXTRA_MARGIN 2
+
static void
swfdec_text_field_movie_update_extents (SwfdecMovie *movie,
SwfdecRect *extents)
@@ -611,8 +613,8 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
first = TRUE;
linenum = 0;
- x = movie->original_extents.x0 + text_movie->hscroll;
- y = movie->original_extents.y0 + 1;
+ x = movie->original_extents.x0 + EXTRA_MARGIN + text_movie->hscroll;
+ y = movie->original_extents.y0 + EXTRA_MARGIN;
cairo_move_to (cr, x, y);
for (i = 0; layouts[i].layout != NULL/* && y < limit.y1*/; i++)
@@ -755,7 +757,7 @@ swfdec_text_field_movie_update_scroll (SwfdecTextFieldMovie *text,
}
void
-swfdec_text_field_get_size (SwfdecTextFieldMovie *text, int *width,
+swfdec_text_field_movie_get_text_size (SwfdecTextFieldMovie *text, int *width,
int *height)
{
SwfdecLayout *layouts;
@@ -764,7 +766,7 @@ swfdec_text_field_get_size (SwfdecTextFieldMovie *text, int *width,
if (width != NULL)
*width = 0;
if (height != NULL)
- *height = 3;
+ *height = 0;
g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
g_return_if_fail (width != NULL || height != NULL);
@@ -797,7 +799,9 @@ swfdec_text_field_movie_auto_size (SwfdecTextFieldMovie *text)
if (text->text->auto_size == SWFDEC_AUTO_SIZE_NONE)
return FALSE;
- swfdec_text_field_get_size (text, &width, &height);
+ swfdec_text_field_movie_get_text_size (text, &width, &height);
+ width += 2 * EXTRA_MARGIN;
+ height += 2 * EXTRA_MARGIN;
if ((text->text->word_wrap ||
graphic->extents.x1 - graphic->extents.x0 == width) &&
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index 15af317..4a03fdd 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -120,7 +120,7 @@ GType swfdec_text_field_movie_get_type (void);
void swfdec_text_field_movie_set_text (SwfdecTextFieldMovie * movie,
const char * str,
gboolean html);
-void swfdec_text_field_get_size (SwfdecTextFieldMovie * text,
+void swfdec_text_field_movie_get_text_size (SwfdecTextFieldMovie * text,
int * width,
int * height);
gboolean swfdec_text_field_movie_auto_size (SwfdecTextFieldMovie * text);
diff --git a/libswfdec/swfdec_text_field_movie_as.c b/libswfdec/swfdec_text_field_movie_as.c
index 3436ffb..dd5203f 100644
--- a/libswfdec/swfdec_text_field_movie_as.c
+++ b/libswfdec/swfdec_text_field_movie_as.c
@@ -423,7 +423,7 @@ swfdec_text_field_movie_get_textHeight (SwfdecAsContext *cx,
SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
- swfdec_text_field_get_size (text, NULL, &height);
+ swfdec_text_field_movie_get_text_size (text, NULL, &height);
SWFDEC_AS_VALUE_SET_NUMBER (ret, height);
}
@@ -437,7 +437,7 @@ swfdec_text_field_movie_get_textWidth (SwfdecAsContext *cx,
SWFDEC_AS_CHECK (SWFDEC_TYPE_TEXT_FIELD_MOVIE, &text, "");
- swfdec_text_field_get_size (text, &width, NULL);
+ swfdec_text_field_movie_get_text_size (text, &width, NULL);
SWFDEC_AS_VALUE_SET_NUMBER (ret, width);
}
commit 47923239d370ec9bd96463bbdfcb075048dde80e
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 15:43:20 2007 +0200
Add try-jump test
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index f1c9938..6762ef1 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2100,6 +2100,13 @@ EXTRA_DIST = \
try-7.swf.trace \
try-8.swf \
try-8.swf.trace \
+ try-jump.as \
+ try-jump-6.swf \
+ try-jump-6.swf.trace \
+ try-jump-7.swf \
+ try-jump-7.swf.trace \
+ try-jump-8.swf \
+ try-jump-8.swf.trace \
try-throw-in-finally.as \
try-throw-in-finally-6.swf \
try-throw-in-finally-6.swf.trace \
diff --git a/test/trace/try-jump-6.swf b/test/trace/try-jump-6.swf
new file mode 100644
index 0000000..8463ef8
Binary files /dev/null and b/test/trace/try-jump-6.swf differ
diff --git a/test/trace/try-jump-6.swf.trace b/test/trace/try-jump-6.swf.trace
new file mode 100644
index 0000000..8350f2f
--- /dev/null
+++ b/test/trace/try-jump-6.swf.trace
@@ -0,0 +1,3 @@
+Test how Try action handles jumping out of the blocks
+outside: test
+outside: test2
diff --git a/test/trace/try-jump-7.swf b/test/trace/try-jump-7.swf
new file mode 100644
index 0000000..64c7733
Binary files /dev/null and b/test/trace/try-jump-7.swf differ
diff --git a/test/trace/try-jump-7.swf.trace b/test/trace/try-jump-7.swf.trace
new file mode 100644
index 0000000..8350f2f
--- /dev/null
+++ b/test/trace/try-jump-7.swf.trace
@@ -0,0 +1,3 @@
+Test how Try action handles jumping out of the blocks
+outside: test
+outside: test2
diff --git a/test/trace/try-jump-8.swf b/test/trace/try-jump-8.swf
new file mode 100644
index 0000000..271236b
Binary files /dev/null and b/test/trace/try-jump-8.swf differ
diff --git a/test/trace/try-jump-8.swf.trace b/test/trace/try-jump-8.swf.trace
new file mode 100644
index 0000000..8350f2f
--- /dev/null
+++ b/test/trace/try-jump-8.swf.trace
@@ -0,0 +1,3 @@
+Test how Try action handles jumping out of the blocks
+outside: test
+outside: test2
diff --git a/test/trace/try-jump.as b/test/trace/try-jump.as
new file mode 100644
index 0000000..0218750
--- /dev/null
+++ b/test/trace/try-jump.as
@@ -0,0 +1,43 @@
+// makeswf -v 7 -r 1 -o try-jump-7.swf try-jump.as
+
+trace ("Test how Try action handles jumping out of the blocks");
+
+function test() {
+ while (true) {
+ try {
+ break;
+ } catch (exception) {
+ trace ("inside: " + exception);
+ };
+ }
+ throw new Error ("test");
+}
+
+function test2() {
+ var i = 0;
+ while (true) {
+ if (i++ > 5)
+ throw new Error ("test2");
+ try {
+ throw new Error ("catch this");
+ } catch (exception) {
+ continue;
+ } finally {
+ trace ("finally");
+ };
+ }
+}
+
+try {
+ test ();
+} catch (exception) {
+ trace ("outside: " + exception);
+};
+
+try {
+ test2 ();
+} catch (exception) {
+ trace ("outside: " + exception);
+};
+
+loadMovie ("FSCommand:quit", "");
commit 00b8063d347d78784ec04ed05d37c920c858a8e9
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 15:32:09 2007 +0200
Add a test for Try action
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 77f2bb0..f1c9938 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2093,6 +2093,13 @@ EXTRA_DIST = \
transform2.swf \
transform2.swf.trace \
transform2.swf.trace.org \
+ try.as \
+ try-6.swf \
+ try-6.swf.trace \
+ try-7.swf \
+ try-7.swf.trace \
+ try-8.swf \
+ try-8.swf.trace \
try-throw-in-finally.as \
try-throw-in-finally-6.swf \
try-throw-in-finally-6.swf.trace \
diff --git a/test/trace/try-6.swf b/test/trace/try-6.swf
new file mode 100644
index 0000000..392a5a0
Binary files /dev/null and b/test/trace/try-6.swf differ
diff --git a/test/trace/try-6.swf.trace b/test/trace/try-6.swf.trace
new file mode 100644
index 0000000..25142a6
--- /dev/null
+++ b/test/trace/try-6.swf.trace
@@ -0,0 +1,6 @@
+Test Try action
+before
+try
+catch: try
+finally
+catch from test: catch
diff --git a/test/trace/try-7.swf b/test/trace/try-7.swf
new file mode 100644
index 0000000..b36faeb
Binary files /dev/null and b/test/trace/try-7.swf differ
diff --git a/test/trace/try-7.swf.trace b/test/trace/try-7.swf.trace
new file mode 100644
index 0000000..25142a6
--- /dev/null
+++ b/test/trace/try-7.swf.trace
@@ -0,0 +1,6 @@
+Test Try action
+before
+try
+catch: try
+finally
+catch from test: catch
diff --git a/test/trace/try-8.swf b/test/trace/try-8.swf
new file mode 100644
index 0000000..e4135ca
Binary files /dev/null and b/test/trace/try-8.swf differ
diff --git a/test/trace/try-8.swf.trace b/test/trace/try-8.swf.trace
new file mode 100644
index 0000000..25142a6
--- /dev/null
+++ b/test/trace/try-8.swf.trace
@@ -0,0 +1,6 @@
+Test Try action
+before
+try
+catch: try
+finally
+catch from test: catch
diff --git a/test/trace/try.as b/test/trace/try.as
new file mode 100644
index 0000000..4ef5572
--- /dev/null
+++ b/test/trace/try.as
@@ -0,0 +1,27 @@
+// makeswf -v 7 -r 1 -o try-throw-in-finally-7.swf try-throw-in-finally.as
+
+trace ("Test Try action");
+
+function test() {
+ trace ("before");
+ try {
+ trace ("try");
+ throw new Error ("try");
+ trace ("try after throw");
+ } catch (exception) {
+ trace ("catch: " + exception);
+ throw new Error ("catch");
+ trace ("catch after throw");
+ } finally {
+ trace ("finally");
+ };
+ trace ("after");
+}
+
+try {
+ test ();
+} catch (exception) {
+ trace ("catch from test: " + exception);
+};
+
+loadMovie ("FSCommand:quit", "");
commit 6c6d84700517faca875d6476b02ea4844c8942ba
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 15:30:35 2007 +0200
Jump out of popped block when handling exceptions
diff --git a/libswfdec/swfdec_as_frame.c b/libswfdec/swfdec_as_frame.c
index c101b9c..5913eb1 100644
--- a/libswfdec/swfdec_as_frame.c
+++ b/libswfdec/swfdec_as_frame.c
@@ -805,6 +805,7 @@ swfdec_as_frame_handle_exception (SwfdecAsFrame *frame)
/* pop blocks in the hope that we are inside a Try block */
while (cx->exception && frame->blocks->len) {
+ frame->pc = frame->block_end;
swfdec_as_frame_pop_block (frame);
}
/* no Try blocks caught it, exit frame */
commit 59bf5375f4f6e4491d1fa91eb8d49983fc0fdc51
Merge: 452d86f... 6bd8b72...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 15:08:31 2007 +0200
Merge branch 'master' of ssh://medar@git.freedesktop.org/git/swfdec/swfdec
commit 452d86fdc0036dfc773a7e51d6d726bb98f64f91
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 15:05:00 2007 +0200
Add error-properties test
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 2086980..ce34916 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -494,6 +494,15 @@ EXTRA_DIST = \
duplicate-names-6.swf.trace \
duplicate-names-7.swf \
duplicate-names-7.swf.trace \
+ error-properties.as \
+ error-properties-5.swf \
+ error-properties-5.swf.trace \
+ error-properties-6.swf \
+ error-properties-6.swf.trace \
+ error-properties-7.swf \
+ error-properties-7.swf.trace \
+ error-properties-8.swf \
+ error-properties-8.swf.trace \
event-order.swf \
empty-function.as \
empty-function-5.swf \
diff --git a/test/trace/error-properties-5.swf b/test/trace/error-properties-5.swf
new file mode 100644
index 0000000..18da742
Binary files /dev/null and b/test/trace/error-properties-5.swf differ
diff --git a/test/trace/error-properties-5.swf.trace b/test/trace/error-properties-5.swf.trace
new file mode 100644
index 0000000..55981f3
--- /dev/null
+++ b/test/trace/error-properties-5.swf.trace
@@ -0,0 +1,23 @@
+_global.Error = function
+ __proto__ (hpn) = _global.Object.__proto__
+ constructor (hp) = _global.Object.constructor
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error
+ message = string : "Error"
+ name = string : "Error"
+ toString = function
+ __proto__ (hpn) = _global.Object.__proto__
+ constructor (hp) = _global.Object.constructor
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error.prototype.toString
+local.a = object
+ __constructor__ (hn) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+ constructor (h) = _global.Error
+local.b = object
+ __constructor__ (hn) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+ constructor (h) = _global.Error
+ message = string : "test"
diff --git a/test/trace/error-properties-6.swf b/test/trace/error-properties-6.swf
new file mode 100644
index 0000000..99a356f
Binary files /dev/null and b/test/trace/error-properties-6.swf differ
diff --git a/test/trace/error-properties-6.swf.trace b/test/trace/error-properties-6.swf.trace
new file mode 100644
index 0000000..b92653f
--- /dev/null
+++ b/test/trace/error-properties-6.swf.trace
@@ -0,0 +1,23 @@
+_global.Error = function
+ __proto__ (hp) = _global.Function.prototype
+ constructor (hp) = _global.Function
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error
+ message = string : "Error"
+ name = string : "Error"
+ toString = function
+ __proto__ (hp) = _global.Function.prototype
+ constructor (hp) = _global.Function
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error.prototype.toString
+local.a = object
+ __constructor__ (h) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+ constructor (h) = _global.Error
+local.b = object
+ __constructor__ (h) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+ constructor (h) = _global.Error
+ message = string : "test"
diff --git a/test/trace/error-properties-7.swf b/test/trace/error-properties-7.swf
new file mode 100644
index 0000000..fee0529
Binary files /dev/null and b/test/trace/error-properties-7.swf differ
diff --git a/test/trace/error-properties-7.swf.trace b/test/trace/error-properties-7.swf.trace
new file mode 100644
index 0000000..d6cac77
--- /dev/null
+++ b/test/trace/error-properties-7.swf.trace
@@ -0,0 +1,21 @@
+_global.Error = function
+ __proto__ (hp) = _global.Function.prototype
+ constructor (hp) = _global.Function
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error
+ message = string : "Error"
+ name = string : "Error"
+ toString = function
+ __proto__ (hp) = _global.Function.prototype
+ constructor (hp) = _global.Function
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error.prototype.toString
+local.a = object
+ __constructor__ (h) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+local.b = object
+ __constructor__ (h) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+ message = string : "test"
diff --git a/test/trace/error-properties-8.swf b/test/trace/error-properties-8.swf
new file mode 100644
index 0000000..bc4b7f5
Binary files /dev/null and b/test/trace/error-properties-8.swf differ
diff --git a/test/trace/error-properties-8.swf.trace b/test/trace/error-properties-8.swf.trace
new file mode 100644
index 0000000..d6cac77
--- /dev/null
+++ b/test/trace/error-properties-8.swf.trace
@@ -0,0 +1,21 @@
+_global.Error = function
+ __proto__ (hp) = _global.Function.prototype
+ constructor (hp) = _global.Function
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error
+ message = string : "Error"
+ name = string : "Error"
+ toString = function
+ __proto__ (hp) = _global.Function.prototype
+ constructor (hp) = _global.Function
+ prototype (hp) = object
+ __proto__ (hp) = _global.Object.prototype
+ constructor (hp) = _global.Error.prototype.toString
+local.a = object
+ __constructor__ (h) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+local.b = object
+ __constructor__ (h) = _global.Error
+ __proto__ (hp) = _global.Error.prototype
+ message = string : "test"
diff --git a/test/trace/error-properties.as b/test/trace/error-properties.as
new file mode 100644
index 0000000..6908ff2
--- /dev/null
+++ b/test/trace/error-properties.as
@@ -0,0 +1,12 @@
+// makeswf -v 7 -r 1 -o error-properties-7.swf error-properties.as
+
+#include "trace_properties.as"
+
+var a = new Error ();
+var b = new Error ("test");
+
+trace_properties (_global.Error, "_global", "Error");
+trace_properties (a, "local", "a");
+trace_properties (b, "local", "b");
+
+loadMovie ("FSCommand:quit", "");
commit a26ff3c1c2c69ea12a11dc8fe0aeec1e3cfea923
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 15:04:02 2007 +0200
Implement Error class
diff --git a/libswfdec/swfdec_initialize.as b/libswfdec/swfdec_initialize.as
index 578f2e7..a27b80f 100644
--- a/libswfdec/swfdec_initialize.as
+++ b/libswfdec/swfdec_initialize.as
@@ -28,6 +28,17 @@ ASSetNativeAccessor = ASnative (4, 1);
Object.registerClass = ASnative(101, 8);
ASSetPropFlags (Object, null, 7);
+/*** Error ***/
+
+function Error (msg) {
+ if (typeof (msg) != "undefined")
+ this.message = msg;
+}
+Error.prototype.name = Error.prototype.message = "Error";
+Error.prototype.toString = function () {
+ return this.message;
+};
+
/*** ASBROADCASTER ***/
function AsBroadcaster () { };
diff --git a/libswfdec/swfdec_initialize.h b/libswfdec/swfdec_initialize.h
index d71cb7a..e70f987 100644
--- a/libswfdec/swfdec_initialize.h
+++ b/libswfdec/swfdec_initialize.h
@@ -2,563 +2,573 @@
/* compiled from swfdec_initialize.as */
const unsigned char swfdec_initialize[] = {
- 0x88, 0xBA, 0x07, 0xBC, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x4E, 0x61, 0x74, 0x69, 0x76, 0x65,
+ 0x88, 0xCC, 0x07, 0xBF, 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, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6C, 0x61,
0x73, 0x73, 0x00, 0x41, 0x53, 0x53, 0x65, 0x74, 0x50, 0x72, 0x6F, 0x70, 0x46, 0x6C, 0x61, 0x67,
- 0x73, 0x00, 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x00,
- 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
- 0x00, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x00, 0x74, 0x68, 0x69,
- 0x73, 0x00, 0x78, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E,
- 0x65, 0x72, 0x00, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x70, 0x75,
- 0x73, 0x68, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x00, 0x73, 0x70,
- 0x6C, 0x69, 0x63, 0x65, 0x00, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x00,
- 0x6F, 0x00, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61,
- 0x67, 0x65, 0x2C, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x2C, 0x72,
- 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x2C, 0x5F, 0x6C,
- 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x4B, 0x65, 0x79, 0x00, 0x41, 0x4C, 0x54,
- 0x00, 0x42, 0x41, 0x43, 0x4B, 0x53, 0x50, 0x41, 0x43, 0x45, 0x00, 0x43, 0x41, 0x50, 0x53, 0x4C,
- 0x4F, 0x43, 0x4B, 0x00, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F, 0x4C, 0x00, 0x44, 0x45, 0x4C, 0x45,
- 0x54, 0x45, 0x4B, 0x45, 0x59, 0x00, 0x44, 0x4F, 0x57, 0x4E, 0x00, 0x45, 0x4E, 0x44, 0x00, 0x45,
- 0x4E, 0x54, 0x45, 0x52, 0x00, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x00, 0x48, 0x4F, 0x4D, 0x45,
- 0x00, 0x49, 0x4E, 0x53, 0x45, 0x52, 0x54, 0x00, 0x4C, 0x45, 0x46, 0x54, 0x00, 0x50, 0x47, 0x44,
- 0x4E, 0x00, 0x50, 0x47, 0x55, 0x50, 0x00, 0x52, 0x49, 0x47, 0x48, 0x54, 0x00, 0x53, 0x48, 0x49,
- 0x46, 0x54, 0x00, 0x53, 0x50, 0x41, 0x43, 0x45, 0x00, 0x54, 0x41, 0x42, 0x00, 0x55, 0x50, 0x00,
- 0x67, 0x65, 0x74, 0x41, 0x73, 0x63, 0x69, 0x69, 0x2C, 0x67, 0x65, 0x74, 0x43, 0x6F, 0x64, 0x65,
- 0x2C, 0x69, 0x73, 0x44, 0x6F, 0x77, 0x6E, 0x00, 0x4D, 0x6F, 0x75, 0x73, 0x65, 0x00, 0x73, 0x68,
- 0x6F, 0x77, 0x00, 0x68, 0x69, 0x64, 0x65, 0x00, 0x53, 0x74, 0x61, 0x67, 0x65, 0x00, 0x73, 0x63,
- 0x61, 0x6C, 0x65, 0x4D, 0x6F, 0x64, 0x65, 0x2C, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x2C, 0x77, 0x69,
- 0x64, 0x74, 0x68, 0x2C, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x4C, 0x6F, 0x61, 0x64, 0x56,
- 0x61, 0x72, 0x73, 0x00, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x00, 0x63, 0x6F,
- 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x54, 0x79, 0x70, 0x65, 0x00, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63,
- 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x78, 0x2D, 0x77, 0x77, 0x77, 0x2D, 0x66, 0x6F, 0x72, 0x6D,
- 0x2D, 0x75, 0x72, 0x6C, 0x65, 0x6E, 0x63, 0x6F, 0x64, 0x65, 0x64, 0x00, 0x6C, 0x6F, 0x61, 0x64,
- 0x00, 0x64, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x6F, 0x6E, 0x4C, 0x6F, 0x61, 0x64, 0x00, 0x6F,
- 0x6E, 0x44, 0x61, 0x74, 0x61, 0x00, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x00, 0x73, 0x72, 0x63,
- 0x00, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x73, 0x74, 0x72, 0x00, 0x65, 0x73,
- 0x63, 0x61, 0x70, 0x65, 0x00, 0x3D, 0x00, 0x26, 0x00, 0x67, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65,
- 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x00, 0x5F, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4C, 0x6F,
- 0x61, 0x64, 0x65, 0x64, 0x00, 0x67, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6F, 0x74,
- 0x61, 0x6C, 0x00, 0x5F, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6F, 0x74, 0x61, 0x6C, 0x00, 0x53,
- 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x41, 0x53, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
- 0x6F, 0x72, 0x00, 0x73, 0x74, 0x6F, 0x70, 0x2C, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x53, 0x6F,
- 0x75, 0x6E, 0x64, 0x2C, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x58, 0x4D, 0x4C, 0x4E, 0x6F, 0x64,
- 0x65, 0x00, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x4E, 0x6F, 0x64, 0x65, 0x00, 0x72, 0x65, 0x6D, 0x6F,
- 0x76, 0x65, 0x4E, 0x6F, 0x64, 0x65, 0x00, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x42, 0x65, 0x66,
- 0x6F, 0x72, 0x65, 0x00, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x43, 0x68, 0x69, 0x6C, 0x64, 0x00,
- 0x68, 0x61, 0x73, 0x43, 0x68, 0x69, 0x6C, 0x64, 0x4E, 0x6F, 0x64, 0x65, 0x73, 0x00, 0x67, 0x65,
- 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x6F, 0x72, 0x50, 0x72, 0x65,
- 0x66, 0x69, 0x78, 0x00, 0x67, 0x65, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x46, 0x6F, 0x72,
- 0x4E, 0x61, 0x6D, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x00, 0x58, 0x4D, 0x4C, 0x00, 0x00, 0x63,
- 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x00, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x4E, 0x6F, 0x64, 0x65, 0x00, 0x70, 0x61, 0x72, 0x73,
- 0x65, 0x58, 0x4D, 0x4C, 0x00, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x00, 0x63, 0x61, 0x70, 0x61,
- 0x62, 0x69, 0x6C, 0x69, 0x74, 0x69, 0x65, 0x73, 0x00, 0x51, 0x75, 0x65, 0x72, 0x79, 0x00, 0x43,
- 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x73, 0x65, 0x74, 0x52,
- 0x47, 0x42, 0x2C, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x2C,
- 0x67, 0x65, 0x74, 0x52, 0x47, 0x42, 0x2C, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66,
- 0x6F, 0x72, 0x6D, 0x00, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70, 0x00, 0x6D, 0x65,
- 0x74, 0x68, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x74, 0x6F, 0x4C, 0x6F, 0x77, 0x65,
- 0x72, 0x43, 0x61, 0x73, 0x65, 0x00, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x00, 0x70, 0x6F, 0x73, 0x74,
- 0x00, 0x67, 0x65, 0x74, 0x00, 0x67, 0x65, 0x74, 0x55, 0x52, 0x4C, 0x00, 0x75, 0x6E, 0x64, 0x65,
- 0x66, 0x69, 0x6E, 0x65, 0x64, 0x00, 0x74, 0x79, 0x70, 0x65, 0x00, 0x75, 0x72, 0x6C, 0x00, 0x6C,
- 0x6F, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x00, 0x5F, 0x74, 0x61,
- 0x72, 0x67, 0x65, 0x74, 0x00, 0x6C, 0x6F, 0x61, 0x64, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x00, 0x61,
- 0x74, 0x74, 0x61, 0x63, 0x68, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x00, 0x73, 0x77, 0x61, 0x70, 0x44,
- 0x65, 0x70, 0x74, 0x68, 0x73, 0x00, 0x68, 0x69, 0x74, 0x54, 0x65, 0x73, 0x74, 0x00, 0x67, 0x65,
- 0x74, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x00, 0x67, 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68,
- 0x00, 0x70, 0x6C, 0x61, 0x79, 0x00, 0x73, 0x74, 0x6F, 0x70, 0x00, 0x6E, 0x65, 0x78, 0x74, 0x46,
- 0x72, 0x61, 0x6D, 0x65, 0x00, 0x70, 0x72, 0x65, 0x76, 0x46, 0x72, 0x61, 0x6D, 0x65, 0x00, 0x67,
- 0x6F, 0x74, 0x6F, 0x41, 0x6E, 0x64, 0x50, 0x6C, 0x61, 0x79, 0x00, 0x67, 0x6F, 0x74, 0x6F, 0x41,
- 0x6E, 0x64, 0x53, 0x74, 0x6F, 0x70, 0x00, 0x64, 0x75, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x65,
- 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65,
- 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70, 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44,
- 0x72, 0x61, 0x67, 0x00, 0x73, 0x74, 0x6F, 0x70, 0x44, 0x72, 0x61, 0x67, 0x00, 0x63, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x00, 0x36, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x45, 0x6D, 0x70, 0x74, 0x79, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C,
- 0x69, 0x70, 0x2C, 0x36, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x46, 0x69, 0x6C, 0x6C, 0x2C, 0x36, 0x62,
- 0x65, 0x67, 0x69, 0x6E, 0x47, 0x72, 0x61, 0x64, 0x69, 0x65, 0x6E, 0x74, 0x46, 0x69, 0x6C, 0x6C,
- 0x2C, 0x36, 0x6D, 0x6F, 0x76, 0x65, 0x54, 0x6F, 0x2C, 0x36, 0x6C, 0x69, 0x6E, 0x65, 0x54, 0x6F,
- 0x2C, 0x36, 0x63, 0x75, 0x72, 0x76, 0x65, 0x54, 0x6F, 0x2C, 0x36, 0x6C, 0x69, 0x6E, 0x65, 0x53,
- 0x74, 0x79, 0x6C, 0x65, 0x2C, 0x36, 0x65, 0x6E, 0x64, 0x46, 0x69, 0x6C, 0x6C, 0x2C, 0x36, 0x63,
- 0x6C, 0x65, 0x61, 0x72, 0x00, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x00, 0x67,
- 0x65, 0x74, 0x46, 0x6F, 0x6E, 0x74, 0x4C, 0x69, 0x73, 0x74, 0x00, 0x67, 0x65, 0x74, 0x54, 0x65,
- 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x73, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74,
- 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x54, 0x65, 0x78,
- 0x74, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x00, 0x67, 0x65, 0x74, 0x4E, 0x65, 0x77, 0x54, 0x65, 0x78,
- 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x73, 0x65, 0x74, 0x4E, 0x65, 0x77, 0x54, 0x65,
- 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65,
- 0x54, 0x65, 0x78, 0x74, 0x00, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00,
- 0x53, 0x74, 0x79, 0x6C, 0x65, 0x53, 0x68, 0x65, 0x65, 0x74, 0x00, 0x5F, 0x63, 0x6F, 0x70, 0x79,
- 0x00, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x6F, 0x5F, 0x6E, 0x65, 0x77, 0x00, 0x70, 0x72,
- 0x6F, 0x70, 0x00, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x00, 0x5F, 0x63, 0x73, 0x73, 0x00, 0x5F, 0x73,
- 0x74, 0x79, 0x6C, 0x65, 0x73, 0x00, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x00, 0x67, 0x65, 0x74,
- 0x53, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x73, 0x65, 0x74, 0x53, 0x74,
- 0x79, 0x6C, 0x65, 0x00, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x64, 0x6F, 0x54, 0x72, 0x61, 0x6E,
- 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x67, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6C, 0x65, 0x4E, 0x61,
- 0x6D, 0x65, 0x73, 0x00, 0x74, 0x6D, 0x70, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x73, 0x00, 0x74, 0x72,
- 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x74,
- 0x65, 0x78, 0x74, 0x41, 0x6C, 0x69, 0x67, 0x6E, 0x00, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x00, 0x66,
- 0x6F, 0x6E, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x62, 0x6F, 0x6C, 0x64, 0x00, 0x6E,
- 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x00, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x70, 0x61, 0x72, 0x73,
- 0x65, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x00, 0x66,
- 0x6F, 0x6E, 0x74, 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x00, 0x66, 0x6F, 0x6E, 0x74, 0x00, 0x70,
- 0x61, 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x46, 0x6F, 0x6E, 0x74, 0x46, 0x61, 0x6D, 0x69, 0x6C,
- 0x79, 0x00, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x00, 0x69, 0x6E, 0x64,
- 0x65, 0x6E, 0x74, 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6E, 0x74, 0x00, 0x66, 0x6F, 0x6E,
- 0x74, 0x53, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x69, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x00, 0x6B, 0x65,
- 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x00, 0x74, 0x72, 0x75, 0x65, 0x00, 0x66, 0x61, 0x6C, 0x73, 0x65,
- 0x00, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x00, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x4C,
- 0x65, 0x66, 0x74, 0x00, 0x6C, 0x65, 0x66, 0x74, 0x4D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x00, 0x6C,
- 0x65, 0x74, 0x74, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x00, 0x6D, 0x61, 0x72,
- 0x67, 0x69, 0x6E, 0x52, 0x69, 0x67, 0x68, 0x74, 0x00, 0x72, 0x69, 0x67, 0x68, 0x74, 0x4D, 0x61,
- 0x72, 0x67, 0x69, 0x6E, 0x00, 0x66, 0x6F, 0x6E, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x00, 0x73, 0x69,
- 0x7A, 0x65, 0x00, 0x74, 0x65, 0x78, 0x74, 0x44, 0x65, 0x63, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F,
- 0x6E, 0x00, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x65, 0x00, 0x6E, 0x6F, 0x6E, 0x65,
- 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x00, 0x63, 0x73, 0x73, 0x00, 0x70, 0x61,
- 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x00, 0x72,
- 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x6E, 0x75, 0x6C, 0x6C, 0x00, 0x70, 0x61, 0x72, 0x73, 0x65,
- 0x00, 0x37, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2C, 0x37, 0x70, 0x61, 0x72, 0x73, 0x65, 0x43,
- 0x53, 0x53, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x2C, 0x37, 0x70, 0x61, 0x72, 0x73,
- 0x65, 0x43, 0x53, 0x53, 0x46, 0x6F, 0x6E, 0x74, 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x2C, 0x37,
- 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x73, 0x65, 0x74, 0x49, 0x6E,
- 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x00, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x49, 0x6E, 0x74, 0x65,
- 0x72, 0x76, 0x61, 0x6C, 0x00, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x00,
- 0x63, 0x6C, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x00, 0x9B, 0x12, 0x00,
- 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x9B, 0x0D, 0x00, 0x4C, 0x6F, 0x61, 0x64, 0x56, 0x61, 0x72, 0x73, 0x00, 0x00, 0x00,
- 0x00, 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, 0x02, 0x00, 0x08, 0x03, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x04, 0x07, 0x08, 0x00,
- 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x03, 0x1C, 0x96, 0x07, 0x00, 0x07,
- 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x13,
- 0x00, 0x08, 0x07, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00,
- 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x08, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x0A,
- 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x0B, 0x52, 0x17, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00,
- 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0D, 0x52,
- 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x0B, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x78, 0x00, 0x8F, 0x00, 0x96, 0x04, 0x00,
- 0x08, 0x0E, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x4E, 0x3C, 0x96, 0x02, 0x00, 0x08,
- 0x0F, 0x41, 0x96, 0x07, 0x00, 0x08, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x99, 0x02, 0x00,
- 0x09, 0x00, 0x96, 0x02, 0x00, 0x08, 0x0F, 0x4C, 0x1C, 0x50, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x0F,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x10, 0x4E, 0x48, 0x12, 0x9D,
- 0x02, 0x00, 0x42, 0x00, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0F, 0x1C,
- 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x1C, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x23, 0x00, 0x96, 0x07,
- 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x0F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x02, 0x00, 0x00,
- 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x11, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01,
- 0x3E, 0x99, 0x02, 0x00, 0x9C, 0xFF, 0x96, 0x02, 0x00, 0x05, 0x00, 0x3E, 0x4F, 0x96, 0x02, 0x00,
- 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x12, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x6F, 0x00,
- 0x73, 0x00, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x07, 0x07, 0x0C, 0x00,
- 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x08, 0x08, 0x06, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x08, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x0B,
- 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C,
- 0x96, 0x07, 0x00, 0x08, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x00, 0x42, 0x4F, 0x96, 0x09, 0x00, 0x07,
- 0x83, 0x00, 0x00, 0x00, 0x08, 0x14, 0x08, 0x13, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00,
- 0x00, 0x08, 0x05, 0x3D, 0x17, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08,
- 0x06, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x8C,
- 0x00, 0x08, 0x15, 0x08, 0x16, 0x07, 0x12, 0x00, 0x00, 0x00, 0x08, 0x17, 0x07, 0x08, 0x00, 0x00,
- 0x00, 0x08, 0x18, 0x07, 0x14, 0x00, 0x00, 0x00, 0x08, 0x19, 0x07, 0x11, 0x00, 0x00, 0x00, 0x08,
- 0x1A, 0x07, 0x2E, 0x00, 0x00, 0x00, 0x08, 0x1B, 0x07, 0x28, 0x00, 0x00, 0x00, 0x08, 0x1C, 0x07,
- 0x23, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x07, 0x0D, 0x00, 0x00, 0x00, 0x08, 0x1E, 0x07, 0x1B, 0x00,
- 0x00, 0x00, 0x08, 0x1F, 0x07, 0x24, 0x00, 0x00, 0x00, 0x08, 0x20, 0x07, 0x2D, 0x00, 0x00, 0x00,
- 0x08, 0x21, 0x07, 0x25, 0x00, 0x00, 0x00, 0x08, 0x22, 0x07, 0x22, 0x00, 0x00, 0x00, 0x08, 0x23,
- 0x07, 0x21, 0x00, 0x00, 0x00, 0x08, 0x24, 0x07, 0x27, 0x00, 0x00, 0x00, 0x08, 0x25, 0x07, 0x10,
- 0x00, 0x00, 0x00, 0x08, 0x26, 0x07, 0x20, 0x00, 0x00, 0x00, 0x08, 0x27, 0x07, 0x09, 0x00, 0x00,
- 0x00, 0x08, 0x28, 0x07, 0x26, 0x00, 0x00, 0x00, 0x07, 0x13, 0x00, 0x00, 0x00, 0x43, 0x1D, 0x96,
- 0x09, 0x00, 0x08, 0x29, 0x07, 0x20, 0x03, 0x00, 0x00, 0x08, 0x15, 0x1C, 0x96, 0x07, 0x00, 0x07,
- 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x15, 0x1C, 0x96, 0x07,
- 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x12, 0x52, 0x17,
- 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x15, 0x1C, 0x96, 0x07, 0x00, 0x07,
- 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x07, 0x00, 0x08, 0x2A, 0x07, 0x00, 0x00,
- 0x00, 0x00, 0x43, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x2A, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x2B, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01,
- 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2A, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x2C, 0x07, 0x01, 0x00,
- 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x2A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x12, 0x52, 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00,
- 0x02, 0x08, 0x2A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17,
- 0x96, 0x07, 0x00, 0x08, 0x2D, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1D, 0x96, 0x02, 0x00, 0x08,
- 0x2D, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x12, 0x52, 0x17, 0x96, 0x0E, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x2E, 0x07, 0x9A,
- 0x02, 0x00, 0x00, 0x08, 0x2D, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x02,
- 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x04,
- 0x00, 0x08, 0x31, 0x08, 0x32, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00,
- 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x34, 0x07, 0x03, 0x00, 0x00, 0x00,
- 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x35, 0x9B,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x36, 0x9B, 0x09, 0x00, 0x00, 0x01, 0x00, 0x73,
- 0x72, 0x63, 0x00, 0x64, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x37,
- 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x38, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D,
- 0x02, 0x00, 0x19, 0x00, 0x96, 0x09, 0x00, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x99, 0x02, 0x00, 0x2C, 0x00, 0x96, 0x02, 0x00,
- 0x08, 0x38, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x34, 0x52, 0x17, 0x96, 0x09, 0x00, 0x05, 0x01, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08,
- 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x39, 0x9B, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0xB3, 0x00, 0x96, 0x03, 0x00, 0x08, 0x3A, 0x02, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x46,
- 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x91, 0x00, 0x96, 0x04,
- 0x00, 0x08, 0x0A, 0x04, 0x00, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x1C, 0x96, 0x01, 0x00, 0x02,
- 0x49, 0x9D, 0x02, 0x00, 0x41, 0x00, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x4C, 0x1C, 0x96, 0x04, 0x00,
- 0x08, 0x3D, 0x08, 0x0A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D,
- 0x47, 0x96, 0x02, 0x00, 0x08, 0x3C, 0x47, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x0A, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x47,
- 0x47, 0x1D, 0x99, 0x02, 0x00, 0x33, 0x00, 0x96, 0x04, 0x00, 0x08, 0x3A, 0x08, 0x0A, 0x1C, 0x96,
- 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x96, 0x02, 0x00, 0x08, 0x3C, 0x47,
- 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x1C, 0x4E, 0x96, 0x07, 0x00,
- 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x3B, 0x3D, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x61, 0xFF, 0x96,
- 0x02, 0x00, 0x08, 0x3A, 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
- 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3F, 0x4E, 0x3E, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x2F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x40, 0x9B,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x41, 0x4E, 0x3E, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x2F,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x05, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x42, 0x07, 0x10, 0x00, 0x00, 0x00, 0x07, 0xF4, 0x01,
- 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x43, 0x3D, 0x1D, 0x96, 0x0E, 0x00, 0x07, 0x06,
- 0x00, 0x00, 0x00, 0x08, 0x44, 0x07, 0xF4, 0x01, 0x00, 0x00, 0x08, 0x42, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96,
- 0x13, 0x00, 0x08, 0x45, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02,
- 0x00, 0x00, 0x00, 0x08, 0x43, 0x3D, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x45, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x46, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00,
- 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x45,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x47, 0x07, 0x02, 0x00, 0x00,
- 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x45, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x48,
- 0x07, 0x03, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
- 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x45, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96,
- 0x13, 0x00, 0x08, 0x49, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02,
- 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x45, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x4A, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00,
- 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x45,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x39, 0x07, 0x06, 0x00, 0x00,
- 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x45, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x4B,
- 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
- 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x45, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96,
- 0x13, 0x00, 0x08, 0x4C, 0x07, 0x08, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02,
- 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x13, 0x00, 0x08, 0x4D, 0x07, 0x09, 0x00, 0x00,
- 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x43, 0x3D, 0x1D, 0x96,
- 0x02, 0x00, 0x08, 0x4D, 0x1C, 0x96, 0x10, 0x00, 0x08, 0x30, 0x08, 0x4E, 0x07, 0x01, 0x00, 0x00,
- 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x45, 0x40, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x03, 0x00,
- 0x00, 0x00, 0x08, 0x30, 0x08, 0x4D, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x05, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96,
- 0x13, 0x00, 0x08, 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02,
- 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x4F, 0x07, 0x0A, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00,
- 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4D,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x50, 0x07, 0x0B, 0x00, 0x00,
- 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x51,
- 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
- 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96,
- 0x02, 0x00, 0x08, 0x35, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00,
- 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x36, 0x9B, 0x09,
- 0x00, 0x00, 0x01, 0x00, 0x73, 0x72, 0x63, 0x00, 0x72, 0x00, 0x96, 0x02, 0x00, 0x08, 0x38, 0x1C,
- 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x27, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09,
- 0x1C, 0x96, 0x04, 0x00, 0x08, 0x37, 0x05, 0x00, 0x4F, 0x96, 0x09, 0x00, 0x05, 0x00, 0x07, 0x01,
- 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x99, 0x02, 0x00,
- 0x3A, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x37, 0x05, 0x01, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x38, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x51, 0x52, 0x17, 0x96, 0x09, 0x00, 0x05, 0x01, 0x07, 0x01, 0x00,
- 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00,
- 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x9B, 0x05,
- 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x3F, 0x4E, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E,
- 0x96, 0x02, 0x00, 0x08, 0x40, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00,
- 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x41, 0x4E, 0x3E, 0x4F, 0x96, 0x07, 0x00, 0x08, 0x52,
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x07, 0x00,
- 0x08, 0x53, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x53, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x54, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x0B, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x07, 0x00,
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x53, 0x4E, 0x96, 0x02,
- 0x00, 0x08, 0x54, 0x52, 0x17, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x53,
- 0x4E, 0x96, 0x02, 0x00, 0x08, 0x54, 0x3A, 0x17, 0x96, 0x02, 0x00, 0x08, 0x55, 0x9B, 0x0C, 0x00,
- 0x00, 0x01, 0x00, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x27, 0x00, 0x96, 0x02, 0x00, 0x08,
- 0x09, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x56, 0x08, 0x56, 0x1C, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x07,
- 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x05, 0x3D, 0x17, 0x1D, 0x96, 0x09, 0x00, 0x08, 0x57, 0x07, 0xBC, 0x02, 0x00, 0x00, 0x08, 0x55,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x55, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D,
- 0x17, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00,
- 0x08, 0x59, 0x9B, 0x0C, 0x00, 0x00, 0x01, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x5B,
- 0x00, 0x96, 0x09, 0x00, 0x08, 0x5C, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x5A, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x5B, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x5C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x5D,
- 0x49, 0x9D, 0x02, 0x00, 0x2D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x5C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x5E, 0x49, 0x9D, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3E,
- 0x99, 0x02, 0x00, 0x09, 0x00, 0x96, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x3E, 0x99, 0x02,
- 0x00, 0x09, 0x00, 0x96, 0x05, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x4F, 0x96, 0x02, 0x00,
- 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x5F, 0x9B, 0x17,
- 0x00, 0x00, 0x03, 0x00, 0x75, 0x72, 0x6C, 0x00, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x6D,
- 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x97, 0x00, 0x96, 0x02, 0x00, 0x08, 0x56, 0x1C, 0x44, 0x96,
- 0x02, 0x00, 0x08, 0x60, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x08, 0x00, 0x96, 0x04, 0x00, 0x08, 0x56,
- 0x08, 0x4E, 0x1D, 0x96, 0x04, 0x00, 0x08, 0x61, 0x08, 0x5A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01,
- 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x59, 0x52, 0x3C, 0x96, 0x02, 0x00,
- 0x08, 0x61, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x3E,
- 0x00, 0x96, 0x02, 0x00, 0x08, 0x61, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x49,
- 0x9D, 0x02, 0x00, 0x15, 0x00, 0x96, 0x02, 0x00, 0x08, 0x62, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x56,
- 0x1C, 0x9A, 0x01, 0x00, 0x02, 0x99, 0x02, 0x00, 0x10, 0x00, 0x96, 0x02, 0x00, 0x08, 0x62, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x56, 0x1C, 0x9A, 0x01, 0x00, 0x01, 0x99, 0x02, 0x00, 0x10, 0x00, 0x96,
- 0x02, 0x00, 0x08, 0x62, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x56, 0x1C, 0x9A, 0x01, 0x00, 0x00, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08,
- 0x63, 0x9B, 0x10, 0x00, 0x00, 0x02, 0x00, 0x75, 0x72, 0x6C, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F,
- 0x64, 0x00, 0x99, 0x00, 0x96, 0x04, 0x00, 0x08, 0x61, 0x08, 0x5A, 0x1C, 0x96, 0x07, 0x00, 0x07,
- 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x59, 0x52, 0x3C, 0x96, 0x02,
- 0x00, 0x08, 0x09, 0x1C, 0x20, 0x96, 0x02, 0x00, 0x08, 0x61, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x00,
- 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x4A, 0x00, 0x96, 0x02, 0x00, 0x08, 0x61, 0x1C, 0x96,
- 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96, 0x02, 0x00,
- 0x08, 0x62, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x64, 0x4E, 0x9A,
- 0x01, 0x00, 0xC2, 0x99, 0x02, 0x00, 0x16, 0x00, 0x96, 0x02, 0x00, 0x08, 0x62, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x64, 0x4E, 0x9A, 0x01, 0x00, 0xC1, 0x99, 0x02,
- 0x00, 0x16, 0x00, 0x96, 0x02, 0x00, 0x08, 0x62, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x64, 0x4E, 0x9A, 0x01, 0x00, 0xC0, 0x8B, 0x01, 0x00, 0x00, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x65, 0x9B,
- 0x10, 0x00, 0x00, 0x02, 0x00, 0x75, 0x72, 0x6C, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00,
- 0x99, 0x00, 0x96, 0x04, 0x00, 0x08, 0x61, 0x08, 0x5A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00,
- 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x59, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08,
- 0x09, 0x1C, 0x20, 0x96, 0x02, 0x00, 0x08, 0x61, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
- 0x00, 0x49, 0x9D, 0x02, 0x00, 0x4A, 0x00, 0x96, 0x02, 0x00, 0x08, 0x61, 0x1C, 0x96, 0x05, 0x00,
- 0x07, 0x01, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x62,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x64, 0x4E, 0x9A, 0x01, 0x00,
- 0x42, 0x99, 0x02, 0x00, 0x16, 0x00, 0x96, 0x02, 0x00, 0x08, 0x62, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x64, 0x4E, 0x9A, 0x01, 0x00, 0x41, 0x99, 0x02, 0x00, 0x16,
- 0x00, 0x96, 0x02, 0x00, 0x08, 0x62, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x64, 0x4E, 0x9A, 0x01, 0x00, 0x40, 0x8B, 0x01, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x66, 0x07, 0x00, 0x00,
- 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08,
- 0x67, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
- 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E,
- 0x96, 0x13, 0x00, 0x08, 0x68, 0x07, 0x04, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07,
- 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x69, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x84,
- 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x40, 0x07, 0x06, 0x00,
- 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08,
- 0x3E, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
- 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E,
- 0x96, 0x13, 0x00, 0x08, 0x6A, 0x07, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07,
- 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6B, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x84,
- 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6C, 0x07, 0x0D, 0x00,
- 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08,
- 0x6D, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
- 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E,
- 0x96, 0x13, 0x00, 0x08, 0x6E, 0x07, 0x0F, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07,
- 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6F, 0x07, 0x10, 0x00, 0x00, 0x00, 0x07, 0x84,
- 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x70, 0x07, 0x11, 0x00,
- 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08,
- 0x71, 0x07, 0x12, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
- 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E,
- 0x96, 0x13, 0x00, 0x08, 0x72, 0x07, 0x13, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07,
- 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x73, 0x07, 0x14, 0x00, 0x00, 0x00, 0x07, 0x84,
- 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x74, 0x07, 0x15, 0x00,
- 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x58, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08,
- 0x75, 0x07, 0xC8, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
- 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x08, 0x6A, 0x08, 0x58,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08,
- 0x05, 0x3D, 0x17, 0x96, 0x09, 0x00, 0x08, 0x76, 0x07, 0x85, 0x03, 0x00, 0x00, 0x08, 0x58, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00,
- 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x02, 0x08, 0x58, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17,
- 0x96, 0x13, 0x00, 0x08, 0x77, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07,
- 0x02, 0x00, 0x00, 0x00, 0x08, 0x43, 0x3D, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x13,
- 0x00, 0x08, 0x78, 0x07, 0xC9, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00,
- 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x79, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00,
- 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x7A, 0x07, 0x66, 0x00, 0x00, 0x00,
- 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x7B, 0x07,
- 0x67, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01,
- 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13,
- 0x00, 0x08, 0x7C, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00,
- 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x7D, 0x07, 0x69, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00,
- 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6A, 0x07, 0x6A, 0x00, 0x00, 0x00,
- 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x7E, 0x07,
- 0x6B, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01,
- 0x3D, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x08, 0x7E, 0x08, 0x77, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D,
- 0x17, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00,
- 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x06, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x12, 0x52, 0x17, 0x96,
- 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x30,
- 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x08, 0x00,
- 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x77, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00,
- 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x7F, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07,
- 0x6E, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x43, 0x3D, 0x1D, 0x96, 0x02, 0x00,
- 0x08, 0x77, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x71, 0x00,
- 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x43, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00,
- 0x08, 0x81, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x6F, 0x00, 0x67, 0x00, 0x96, 0x02, 0x00, 0x08,
- 0x13, 0x1C, 0x44, 0x96, 0x02, 0x00, 0x08, 0x82, 0x49, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x05, 0x00,
- 0x96, 0x01, 0x00, 0x02, 0x3E, 0x96, 0x07, 0x00, 0x08, 0x83, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43,
- 0x3C, 0x96, 0x02, 0x00, 0x08, 0x13, 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02, 0x49,
- 0x9D, 0x02, 0x00, 0x27, 0x00, 0x96, 0x04, 0x00, 0x08, 0x84, 0x04, 0x00, 0x3C, 0x96, 0x02, 0x00,
- 0x08, 0x83, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x13, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x84, 0x1C, 0x4E, 0x4F, 0x99, 0x02, 0x00, 0xCB, 0xFF, 0x96, 0x02, 0x00, 0x08,
- 0x83, 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x85, 0x9B, 0x05, 0x00, 0x00, 0x00,
- 0x00, 0x36, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x86, 0x07, 0x00,
- 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x87,
- 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08,
- 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x88, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08,
- 0x89, 0x9B, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x25, 0x00, 0x96, 0x02,
- 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x86, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8A, 0x1C,
- 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x81, 0x52, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8B, 0x9B, 0x10, 0x00, 0x00, 0x02,
- 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x79, 0x00, 0x96, 0x02,
- 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x86, 0x4E, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x12,
- 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x86, 0x07, 0x00, 0x00, 0x00,
- 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x86, 0x4E, 0x96,
- 0x02, 0x00, 0x08, 0x8A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01,
- 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x81, 0x52, 0x4F, 0x96, 0x02, 0x00,
- 0x08, 0x8A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x8D, 0x52, 0x17, 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x88, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8E, 0x9B,
- 0x05, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x96, 0x04, 0x00, 0x08, 0x8F, 0x08, 0x09, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x86, 0x4E, 0x3C, 0x96, 0x07, 0x00, 0x08, 0x90, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x42, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02,
- 0x49, 0x9D, 0x02, 0x00, 0x25, 0x00, 0x96, 0x04, 0x00, 0x08, 0x84, 0x04, 0x00, 0x3C, 0x96, 0x02,
- 0x00, 0x08, 0x84, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x90, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x0D, 0x52, 0x17, 0x99, 0x02, 0x00, 0xCD, 0xFF, 0x96, 0x02, 0x00, 0x08, 0x90,
- 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96,
- 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8D, 0x9B, 0x0A, 0x00, 0x00, 0x01, 0x00,
- 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x5C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x87, 0x4E, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x12, 0x00, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C,
- 0x96, 0x07, 0x00, 0x08, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x87, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8A, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x86, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8A, 0x1C,
- 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x91, 0x52, 0x4F, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E,
- 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x91, 0x9B, 0x0B, 0x00, 0x00, 0x01,
- 0x00, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x9D, 0x03, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96,
- 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x05, 0x00, 0x96, 0x01, 0x00, 0x02, 0x3E, 0x96,
- 0x09, 0x00, 0x08, 0x92, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x7F, 0x40, 0x3C, 0x96, 0x02, 0x00,
- 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x93, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x15, 0x00, 0x96,
- 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x94, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x93, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x95, 0x4E,
- 0x96, 0x02, 0x00, 0x08, 0x96, 0x49, 0x9D, 0x02, 0x00, 0x2B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x8C,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x95, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x97, 0x49, 0x12, 0x9D, 0x02,
- 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x96, 0x05, 0x00,
- 0x4F, 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08,
- 0x96, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x98, 0x4E,
- 0x12, 0x9D, 0x02, 0x00, 0x41, 0x00, 0x96, 0x04, 0x00, 0x08, 0x8F, 0x08, 0x8C, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0x98, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x99, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x01, 0x00, 0x02,
- 0x49, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x0F, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04,
- 0x00, 0x08, 0x98, 0x08, 0x8F, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00,
- 0x08, 0x9A, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9A, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9B, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x26, 0x00, 0x96, 0x02,
- 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x9C, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0x9B, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x9D, 0x52, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9E, 0x4E,
- 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08,
- 0x9F, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9E, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00,
- 0x00, 0x00, 0x08, 0xA0, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0xA1, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xA2, 0x49, 0x9D, 0x02, 0x00, 0x2B, 0x00, 0x96, 0x02, 0x00,
- 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA1, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x97, 0x49, 0x12,
- 0x9D, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA2,
- 0x05, 0x00, 0x4F, 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04,
- 0x00, 0x08, 0xA2, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0xA3, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xA4, 0x49, 0x9D, 0x02, 0x00, 0x4F, 0x00, 0x96, 0x02, 0x00,
- 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA3, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xA5, 0x49, 0x9D,
- 0x02, 0x00, 0x25, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA3, 0x08,
- 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA3, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00,
- 0x08, 0xA0, 0x3D, 0x4F, 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96,
- 0x04, 0x00, 0x08, 0xA3, 0x05, 0x00, 0x4F, 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08,
- 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA3, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0xA6, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02, 0x00, 0x08,
- 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA6, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA6, 0x4E,
- 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA0, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA7, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02,
- 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA8, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0xA7, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA0, 0x3D, 0x4F, 0x96, 0x02,
- 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA9, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00,
- 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA9, 0x08, 0x8C, 0x1C, 0x96, 0x02,
- 0x00, 0x08, 0xA9, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA0, 0x3D, 0x4F,
- 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAA, 0x4E, 0x12, 0x9D, 0x02, 0x00,
- 0x20, 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xAB, 0x08, 0x8C, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0xAA, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA0,
- 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAC, 0x4E, 0x12, 0x9D,
- 0x02, 0x00, 0x3B, 0x00, 0x96, 0x04, 0x00, 0x08, 0x8F, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0xAC, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA0, 0x3D, 0x3C, 0x96, 0x07,
- 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x8F, 0x1C, 0x48, 0x12, 0x9D, 0x02, 0x00, 0x0F, 0x00,
- 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xAD, 0x08, 0x8F, 0x1C, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAE, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xAF,
- 0x49, 0x9D, 0x02, 0x00, 0x2B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0xAE, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB0, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02,
- 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xAF, 0x05, 0x00, 0x4F, 0x99, 0x02, 0x00, 0x0E,
- 0x00, 0x96, 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xAF, 0x05, 0x01, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x92, 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB1, 0x9B, 0x09,
- 0x00, 0x00, 0x01, 0x00, 0x63, 0x73, 0x73, 0x00, 0xDA, 0x00, 0x96, 0x04, 0x00, 0x08, 0xB4, 0x08,
- 0xB2, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0xB3, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0xB4, 0x1C, 0x44, 0x96, 0x02, 0x00, 0x08, 0xB5,
- 0x49, 0x12, 0x9D, 0x02, 0x00, 0x06, 0x00, 0x96, 0x02, 0x00, 0x05, 0x00, 0x3E, 0x96, 0x02, 0x00,
- 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x86, 0x4E, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x12, 0x00,
- 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x86, 0x07, 0x00, 0x00, 0x00, 0x00,
- 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0xB4, 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02,
- 0x49, 0x9D, 0x02, 0x00, 0x56, 0x00, 0x96, 0x04, 0x00, 0x08, 0x84, 0x04, 0x00, 0x3C, 0x96, 0x02,
- 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x86, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x84, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0xB4, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x1C, 0x4E, 0x96, 0x07, 0x00,
- 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x81, 0x52, 0x4F, 0x96,
- 0x02, 0x00, 0x08, 0x84, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C,
- 0x96, 0x02, 0x00, 0x08, 0x8D, 0x52, 0x17, 0x99, 0x02, 0x00, 0x9C, 0xFF, 0x96, 0x07, 0x00, 0x07,
- 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x88, 0x52, 0x17, 0x96, 0x02,
- 0x00, 0x05, 0x01, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80,
- 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x04, 0x00, 0x08, 0xB6, 0x08, 0x77, 0x1C, 0x96,
- 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB1,
- 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02,
- 0x00, 0x08, 0x30, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x33, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D,
- 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02,
- 0x00, 0x08, 0x35, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08,
- 0x77, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x02,
- 0x00, 0x08, 0x36, 0x9B, 0x09, 0x00, 0x00, 0x01, 0x00, 0x73, 0x72, 0x63, 0x00, 0x6B, 0x00, 0x96,
- 0x02, 0x00, 0x08, 0x38, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x19, 0x00,
- 0x96, 0x09, 0x00, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x35, 0x52, 0x17, 0x99, 0x02, 0x00, 0x41, 0x00, 0x96, 0x04, 0x00, 0x08, 0xB4, 0x08, 0x38,
- 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08,
- 0xB6, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x37, 0x08, 0xB4,
- 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0xB4, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00,
- 0x08, 0x09, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x35, 0x52, 0x17, 0x4F, 0x96, 0x0E, 0x00, 0x07, 0x64,
- 0x00, 0x00, 0x00, 0x08, 0xB7, 0x07, 0x71, 0x00, 0x00, 0x00, 0x08, 0x77, 0x1C, 0x96, 0x02, 0x00,
- 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00,
- 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03, 0x04, 0x00, 0x00, 0x02, 0x08, 0x77,
- 0x1C, 0x96, 0x02, 0x00, 0x08, 0x80, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x30, 0x4E, 0x96, 0x07, 0x00,
- 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x09, 0x00, 0x07, 0x03, 0x04, 0x00,
- 0x00, 0x08, 0x80, 0x08, 0x77, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05,
- 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0xB8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFA, 0x00, 0x00,
- 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0xB9, 0x07,
- 0x01, 0x00, 0x00, 0x00, 0x07, 0xFA, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01,
- 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0xBA, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0xFA, 0x00, 0x00,
- 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x04, 0x00, 0x08, 0xBB, 0x08,
- 0xB9, 0x1C, 0x1D, 0x96, 0x03, 0x00, 0x08, 0x13, 0x02, 0x1D, 0x96, 0x0D, 0x00, 0x07, 0x06, 0x00,
- 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x02, 0x08, 0x09, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x04,
- 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x00
+ 0x73, 0x00, 0x6D, 0x73, 0x67, 0x00, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x00,
+ 0x74, 0x68, 0x69, 0x73, 0x00, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00, 0x45, 0x72, 0x72,
+ 0x6F, 0x72, 0x00, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x00, 0x6E, 0x61, 0x6D,
+ 0x65, 0x00, 0x74, 0x6F, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x41, 0x73, 0x42, 0x72, 0x6F,
+ 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x00, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61,
+ 0x73, 0x74, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73,
+ 0x74, 0x65, 0x6E, 0x65, 0x72, 0x00, 0x78, 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69,
+ 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x00, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72,
+ 0x73, 0x00, 0x70, 0x75, 0x73, 0x68, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6C, 0x65, 0x6E, 0x67, 0x74,
+ 0x68, 0x00, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0x00, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C,
+ 0x69, 0x7A, 0x65, 0x00, 0x6F, 0x00, 0x62, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x4D,
+ 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2C, 0x61, 0x64, 0x64, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E,
+ 0x65, 0x72, 0x2C, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65,
+ 0x72, 0x2C, 0x5F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x65, 0x72, 0x73, 0x00, 0x4B, 0x65, 0x79,
+ 0x00, 0x41, 0x4C, 0x54, 0x00, 0x42, 0x41, 0x43, 0x4B, 0x53, 0x50, 0x41, 0x43, 0x45, 0x00, 0x43,
+ 0x41, 0x50, 0x53, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x43, 0x4F, 0x4E, 0x54, 0x52, 0x4F, 0x4C, 0x00,
+ 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x4B, 0x45, 0x59, 0x00, 0x44, 0x4F, 0x57, 0x4E, 0x00, 0x45,
+ 0x4E, 0x44, 0x00, 0x45, 0x4E, 0x54, 0x45, 0x52, 0x00, 0x45, 0x53, 0x43, 0x41, 0x50, 0x45, 0x00,
+ 0x48, 0x4F, 0x4D, 0x45, 0x00, 0x49, 0x4E, 0x53, 0x45, 0x52, 0x54, 0x00, 0x4C, 0x45, 0x46, 0x54,
+ 0x00, 0x50, 0x47, 0x44, 0x4E, 0x00, 0x50, 0x47, 0x55, 0x50, 0x00, 0x52, 0x49, 0x47, 0x48, 0x54,
+ 0x00, 0x53, 0x48, 0x49, 0x46, 0x54, 0x00, 0x53, 0x50, 0x41, 0x43, 0x45, 0x00, 0x54, 0x41, 0x42,
+ 0x00, 0x55, 0x50, 0x00, 0x67, 0x65, 0x74, 0x41, 0x73, 0x63, 0x69, 0x69, 0x2C, 0x67, 0x65, 0x74,
+ 0x43, 0x6F, 0x64, 0x65, 0x2C, 0x69, 0x73, 0x44, 0x6F, 0x77, 0x6E, 0x00, 0x4D, 0x6F, 0x75, 0x73,
+ 0x65, 0x00, 0x73, 0x68, 0x6F, 0x77, 0x00, 0x68, 0x69, 0x64, 0x65, 0x00, 0x53, 0x74, 0x61, 0x67,
+ 0x65, 0x00, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x4D, 0x6F, 0x64, 0x65, 0x2C, 0x61, 0x6C, 0x69, 0x67,
+ 0x6E, 0x2C, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x4C,
+ 0x6F, 0x61, 0x64, 0x56, 0x61, 0x72, 0x73, 0x00, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x54,
+ 0x79, 0x70, 0x65, 0x00, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2F,
+ 0x78, 0x2D, 0x77, 0x77, 0x77, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x75, 0x72, 0x6C, 0x65, 0x6E,
+ 0x63, 0x6F, 0x64, 0x65, 0x64, 0x00, 0x6C, 0x6F, 0x61, 0x64, 0x00, 0x64, 0x65, 0x63, 0x6F, 0x64,
+ 0x65, 0x00, 0x6F, 0x6E, 0x4C, 0x6F, 0x61, 0x64, 0x00, 0x6F, 0x6E, 0x44, 0x61, 0x74, 0x61, 0x00,
+ 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x00, 0x73, 0x72, 0x63, 0x00, 0x73, 0x74, 0x72, 0x00, 0x65,
+ 0x73, 0x63, 0x61, 0x70, 0x65, 0x00, 0x3D, 0x00, 0x26, 0x00, 0x67, 0x65, 0x74, 0x42, 0x79, 0x74,
+ 0x65, 0x73, 0x4C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x00, 0x5F, 0x62, 0x79, 0x74, 0x65, 0x73, 0x4C,
+ 0x6F, 0x61, 0x64, 0x65, 0x64, 0x00, 0x67, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6F,
+ 0x74, 0x61, 0x6C, 0x00, 0x5F, 0x62, 0x79, 0x74, 0x65, 0x73, 0x54, 0x6F, 0x74, 0x61, 0x6C, 0x00,
+ 0x53, 0x6F, 0x75, 0x6E, 0x64, 0x00, 0x41, 0x53, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63,
+ 0x74, 0x6F, 0x72, 0x00, 0x73, 0x74, 0x6F, 0x70, 0x2C, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x53,
+ 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x73, 0x74, 0x61, 0x72, 0x74, 0x00, 0x58, 0x4D, 0x4C, 0x4E, 0x6F,
+ 0x64, 0x65, 0x00, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x4E, 0x6F, 0x64, 0x65, 0x00, 0x72, 0x65, 0x6D,
+ 0x6F, 0x76, 0x65, 0x4E, 0x6F, 0x64, 0x65, 0x00, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x42, 0x65,
+ 0x66, 0x6F, 0x72, 0x65, 0x00, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x43, 0x68, 0x69, 0x6C, 0x64,
+ 0x00, 0x68, 0x61, 0x73, 0x43, 0x68, 0x69, 0x6C, 0x64, 0x4E, 0x6F, 0x64, 0x65, 0x73, 0x00, 0x67,
+ 0x65, 0x74, 0x4E, 0x61, 0x6D, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x6F, 0x72, 0x50, 0x72,
+ 0x65, 0x66, 0x69, 0x78, 0x00, 0x67, 0x65, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x46, 0x6F,
+ 0x72, 0x4E, 0x61, 0x6D, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x00, 0x58, 0x4D, 0x4C, 0x00, 0x00,
+ 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x00, 0x63, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x4E, 0x6F, 0x64, 0x65, 0x00, 0x70, 0x61, 0x72,
+ 0x73, 0x65, 0x58, 0x4D, 0x4C, 0x00, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x00, 0x63, 0x61, 0x70,
+ 0x61, 0x62, 0x69, 0x6C, 0x69, 0x74, 0x69, 0x65, 0x73, 0x00, 0x51, 0x75, 0x65, 0x72, 0x79, 0x00,
+ 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x73, 0x65, 0x74,
+ 0x52, 0x47, 0x42, 0x2C, 0x73, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D,
+ 0x2C, 0x67, 0x65, 0x74, 0x52, 0x47, 0x42, 0x2C, 0x67, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6E, 0x73,
+ 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70, 0x00, 0x6D,
+ 0x65, 0x74, 0x68, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x74, 0x6F, 0x4C, 0x6F, 0x77,
+ 0x65, 0x72, 0x43, 0x61, 0x73, 0x65, 0x00, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x00, 0x70, 0x6F, 0x73,
+ 0x74, 0x00, 0x67, 0x65, 0x74, 0x00, 0x67, 0x65, 0x74, 0x55, 0x52, 0x4C, 0x00, 0x74, 0x79, 0x70,
+ 0x65, 0x00, 0x75, 0x72, 0x6C, 0x00, 0x6C, 0x6F, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62,
+ 0x6C, 0x65, 0x73, 0x00, 0x5F, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x6C, 0x6F, 0x61, 0x64,
+ 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x00, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4D, 0x6F, 0x76, 0x69,
+ 0x65, 0x00, 0x73, 0x77, 0x61, 0x70, 0x44, 0x65, 0x70, 0x74, 0x68, 0x73, 0x00, 0x68, 0x69, 0x74,
+ 0x54, 0x65, 0x73, 0x74, 0x00, 0x67, 0x65, 0x74, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x00, 0x67,
+ 0x65, 0x74, 0x44, 0x65, 0x70, 0x74, 0x68, 0x00, 0x70, 0x6C, 0x61, 0x79, 0x00, 0x73, 0x74, 0x6F,
+ 0x70, 0x00, 0x6E, 0x65, 0x78, 0x74, 0x46, 0x72, 0x61, 0x6D, 0x65, 0x00, 0x70, 0x72, 0x65, 0x76,
+ 0x46, 0x72, 0x61, 0x6D, 0x65, 0x00, 0x67, 0x6F, 0x74, 0x6F, 0x41, 0x6E, 0x64, 0x50, 0x6C, 0x61,
+ 0x79, 0x00, 0x67, 0x6F, 0x74, 0x6F, 0x41, 0x6E, 0x64, 0x53, 0x74, 0x6F, 0x70, 0x00, 0x64, 0x75,
+ 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x65, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70,
+ 0x00, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70,
+ 0x00, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, 0x72, 0x61, 0x67, 0x00, 0x73, 0x74, 0x6F, 0x70, 0x44,
+ 0x72, 0x61, 0x67, 0x00, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69,
+ 0x65, 0x6C, 0x64, 0x00, 0x36, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6D, 0x70, 0x74, 0x79,
+ 0x4D, 0x6F, 0x76, 0x69, 0x65, 0x43, 0x6C, 0x69, 0x70, 0x2C, 0x36, 0x62, 0x65, 0x67, 0x69, 0x6E,
+ 0x46, 0x69, 0x6C, 0x6C, 0x2C, 0x36, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x47, 0x72, 0x61, 0x64, 0x69,
+ 0x65, 0x6E, 0x74, 0x46, 0x69, 0x6C, 0x6C, 0x2C, 0x36, 0x6D, 0x6F, 0x76, 0x65, 0x54, 0x6F, 0x2C,
+ 0x36, 0x6C, 0x69, 0x6E, 0x65, 0x54, 0x6F, 0x2C, 0x36, 0x63, 0x75, 0x72, 0x76, 0x65, 0x54, 0x6F,
+ 0x2C, 0x36, 0x6C, 0x69, 0x6E, 0x65, 0x53, 0x74, 0x79, 0x6C, 0x65, 0x2C, 0x36, 0x65, 0x6E, 0x64,
+ 0x46, 0x69, 0x6C, 0x6C, 0x2C, 0x36, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x00, 0x54, 0x65, 0x78, 0x74,
+ 0x46, 0x69, 0x65, 0x6C, 0x64, 0x00, 0x67, 0x65, 0x74, 0x46, 0x6F, 0x6E, 0x74, 0x4C, 0x69, 0x73,
+ 0x74, 0x00, 0x67, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00,
+ 0x73, 0x65, 0x74, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x72, 0x65,
+ 0x6D, 0x6F, 0x76, 0x65, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x00, 0x67, 0x65,
+ 0x74, 0x4E, 0x65, 0x77, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x73,
+ 0x65, 0x74, 0x4E, 0x65, 0x77, 0x54, 0x65, 0x78, 0x74, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00,
+ 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x54, 0x65, 0x78, 0x74, 0x00, 0x54, 0x65, 0x78, 0x74,
+ 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x00, 0x53, 0x74, 0x79, 0x6C, 0x65, 0x53, 0x68, 0x65, 0x65,
+ 0x74, 0x00, 0x5F, 0x63, 0x6F, 0x70, 0x79, 0x00, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x6F,
+ 0x5F, 0x6E, 0x65, 0x77, 0x00, 0x70, 0x72, 0x6F, 0x70, 0x00, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x00,
+ 0x5F, 0x63, 0x73, 0x73, 0x00, 0x5F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x73, 0x00, 0x75, 0x70, 0x64,
+ 0x61, 0x74, 0x65, 0x00, 0x67, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x73, 0x65, 0x74,
+ 0x53, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x64, 0x6F, 0x54, 0x72,
+ 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x67, 0x65, 0x74, 0x53, 0x74, 0x79, 0x6C, 0x65,
+ 0x4E, 0x61, 0x6D, 0x65, 0x73, 0x00, 0x74, 0x6D, 0x70, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x73, 0x00,
+ 0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74,
+ 0x00, 0x74, 0x65, 0x78, 0x74, 0x41, 0x6C, 0x69, 0x67, 0x6E, 0x00, 0x61, 0x6C, 0x69, 0x67, 0x6E,
+ 0x00, 0x66, 0x6F, 0x6E, 0x74, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x00, 0x62, 0x6F, 0x6C, 0x64,
+ 0x00, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x00, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x70, 0x61,
+ 0x72, 0x73, 0x65, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79,
+ 0x00, 0x66, 0x6F, 0x6E, 0x74, 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x00, 0x66, 0x6F, 0x6E, 0x74,
+ 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x46, 0x6F, 0x6E, 0x74, 0x46, 0x61, 0x6D,
+ 0x69, 0x6C, 0x79, 0x00, 0x74, 0x65, 0x78, 0x74, 0x49, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x00, 0x69,
+ 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x49, 0x6E, 0x74, 0x00, 0x66,
+ 0x6F, 0x6E, 0x74, 0x53, 0x74, 0x79, 0x6C, 0x65, 0x00, 0x69, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x00,
+ 0x6B, 0x65, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x00, 0x74, 0x72, 0x75, 0x65, 0x00, 0x66, 0x61, 0x6C,
+ 0x73, 0x65, 0x00, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x00, 0x6D, 0x61, 0x72, 0x67, 0x69,
+ 0x6E, 0x4C, 0x65, 0x66, 0x74, 0x00, 0x6C, 0x65, 0x66, 0x74, 0x4D, 0x61, 0x72, 0x67, 0x69, 0x6E,
+ 0x00, 0x6C, 0x65, 0x74, 0x74, 0x65, 0x72, 0x53, 0x70, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x00, 0x6D,
+ 0x61, 0x72, 0x67, 0x69, 0x6E, 0x52, 0x69, 0x67, 0x68, 0x74, 0x00, 0x72, 0x69, 0x67, 0x68, 0x74,
+ 0x4D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x00, 0x66, 0x6F, 0x6E, 0x74, 0x53, 0x69, 0x7A, 0x65, 0x00,
+ 0x73, 0x69, 0x7A, 0x65, 0x00, 0x74, 0x65, 0x78, 0x74, 0x44, 0x65, 0x63, 0x6F, 0x72, 0x61, 0x74,
+ 0x69, 0x6F, 0x6E, 0x00, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x69, 0x6E, 0x65, 0x00, 0x6E, 0x6F,
+ 0x6E, 0x65, 0x00, 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x00, 0x63, 0x73, 0x73, 0x00,
+ 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C,
+ 0x00, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x00, 0x6E, 0x75, 0x6C, 0x6C, 0x00, 0x70, 0x61, 0x72,
+ 0x73, 0x65, 0x00, 0x37, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2C, 0x37, 0x70, 0x61, 0x72, 0x73,
+ 0x65, 0x43, 0x53, 0x53, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x2C, 0x37, 0x70, 0x61,
+ 0x72, 0x73, 0x65, 0x43, 0x53, 0x53, 0x46, 0x6F, 0x6E, 0x74, 0x46, 0x61, 0x6D, 0x69, 0x6C, 0x79,
+ 0x2C, 0x37, 0x70, 0x61, 0x72, 0x73, 0x65, 0x43, 0x6F, 0x6C, 0x6F, 0x72, 0x00, 0x73, 0x65, 0x74,
+ 0x49, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x00, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x49, 0x6E,
+ 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x00, 0x73, 0x65, 0x74, 0x54, 0x69, 0x6D, 0x65, 0x6F, 0x75,
+ 0x74, 0x00, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x54, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x00, 0x9B,
+ 0x0E, 0x00, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x00, 0x01, 0x00, 0x6D, 0x73, 0x67, 0x00, 0x23, 0x00,
+ 0x96, 0x02, 0x00, 0x08, 0x06, 0x1C, 0x44, 0x96, 0x02, 0x00, 0x08, 0x07, 0x49, 0x12, 0x12, 0x9D,
+ 0x02, 0x00, 0x0F, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x09, 0x08,
+ 0x06, 0x1C, 0x4F, 0x9B, 0x12, 0x00, 0x41, 0x73, 0x42, 0x72, 0x6F, 0x61, 0x64, 0x63, 0x61, 0x73,
+ 0x74, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0x0D, 0x00, 0x4C, 0x6F, 0x61, 0x64, 0x56,
+ 0x61, 0x72, 0x73, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x00, 0x08, 0x03, 0x1C, 0x96, 0x13,
+ 0x00, 0x08, 0x04, 0x07, 0x08, 0x00, 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00,
+ 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08,
+ 0x03, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x02,
+ 0x00, 0x08, 0x0A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x0C, 0x08,
+ 0x0A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x09, 0x08, 0x0A, 0x87,
+ 0x01, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x04, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0A, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0D, 0x9B, 0x05, 0x00, 0x00, 0x00,
+ 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x09, 0x4E, 0x3E,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x0F, 0x07, 0x0C, 0x00, 0x00,
+ 0x00, 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x10, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00,
+ 0x78, 0x00, 0x3C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x11, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x12, 0x52, 0x17, 0x96, 0x02, 0x00, 0x08,
+ 0x11, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x13, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x14, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, 0x3E,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x12, 0x9B, 0x07, 0x00, 0x00,
+ 0x01, 0x00, 0x78, 0x00, 0x8F, 0x00, 0x96, 0x04, 0x00, 0x08, 0x15, 0x08, 0x08, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x13, 0x4E, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x16, 0x41, 0x96, 0x07, 0x00, 0x08, 0x16,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x99, 0x02, 0x00, 0x09, 0x00, 0x96, 0x02, 0x00, 0x08, 0x16,
+ 0x4C, 0x1C, 0x50, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x16, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x15, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x17, 0x4E, 0x48, 0x12, 0x9D, 0x02, 0x00, 0x42, 0x00, 0x96, 0x02, 0x00,
+ 0x08, 0x15, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x16, 0x1C, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x11, 0x1C,
+ 0x49, 0x12, 0x9D, 0x02, 0x00, 0x23, 0x00, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08,
+ 0x16, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x15, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x18, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, 0x3E, 0x99, 0x02, 0x00, 0x9C, 0xFF, 0x96,
+ 0x02, 0x00, 0x05, 0x00, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x19, 0x9B, 0x07, 0x00, 0x00, 0x01, 0x00, 0x6F, 0x00, 0x73, 0x00, 0x96, 0x02, 0x00, 0x08, 0x1A,
+ 0x1C, 0x96, 0x13, 0x00, 0x08, 0x0F, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x65, 0x00, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x1A, 0x1C, 0x96,
+ 0x04, 0x00, 0x08, 0x10, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x10, 0x4E, 0x4F, 0x96, 0x02,
+ 0x00, 0x08, 0x1A, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x12, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x12, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x1A, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x13, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x42, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x08, 0x1B, 0x08,
+ 0x1A, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x4F, 0x96,
+ 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x0E, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03,
+ 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x8C, 0x00, 0x08, 0x1C, 0x08, 0x1D, 0x07, 0x12,
+ 0x00, 0x00, 0x00, 0x08, 0x1E, 0x07, 0x08, 0x00, 0x00, 0x00, 0x08, 0x1F, 0x07, 0x14, 0x00, 0x00,
+ 0x00, 0x08, 0x20, 0x07, 0x11, 0x00, 0x00, 0x00, 0x08, 0x21, 0x07, 0x2E, 0x00, 0x00, 0x00, 0x08,
+ 0x22, 0x07, 0x28, 0x00, 0x00, 0x00, 0x08, 0x23, 0x07, 0x23, 0x00, 0x00, 0x00, 0x08, 0x24, 0x07,
+ 0x0D, 0x00, 0x00, 0x00, 0x08, 0x25, 0x07, 0x1B, 0x00, 0x00, 0x00, 0x08, 0x26, 0x07, 0x24, 0x00,
+ 0x00, 0x00, 0x08, 0x27, 0x07, 0x2D, 0x00, 0x00, 0x00, 0x08, 0x28, 0x07, 0x25, 0x00, 0x00, 0x00,
+ 0x08, 0x29, 0x07, 0x22, 0x00, 0x00, 0x00, 0x08, 0x2A, 0x07, 0x21, 0x00, 0x00, 0x00, 0x08, 0x2B,
+ 0x07, 0x27, 0x00, 0x00, 0x00, 0x08, 0x2C, 0x07, 0x10, 0x00, 0x00, 0x00, 0x08, 0x2D, 0x07, 0x20,
+ 0x00, 0x00, 0x00, 0x08, 0x2E, 0x07, 0x09, 0x00, 0x00, 0x00, 0x08, 0x2F, 0x07, 0x26, 0x00, 0x00,
+ 0x00, 0x07, 0x13, 0x00, 0x00, 0x00, 0x43, 0x1D, 0x96, 0x09, 0x00, 0x08, 0x30, 0x07, 0x20, 0x03,
+ 0x00, 0x00, 0x08, 0x1C, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D,
+ 0x17, 0x96, 0x02, 0x00, 0x08, 0x1C, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08,
+ 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x19, 0x52, 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00,
+ 0x00, 0x02, 0x08, 0x1C, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D,
+ 0x17, 0x96, 0x07, 0x00, 0x08, 0x31, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1D, 0x96, 0x02, 0x00,
+ 0x08, 0x31, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x32, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00,
+ 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31,
+ 0x1C, 0x96, 0x13, 0x00, 0x08, 0x33, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x05, 0x00, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x31, 0x1C, 0x96,
+ 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x19, 0x52,
+ 0x17, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x31, 0x1C, 0x96, 0x07, 0x00,
+ 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x07, 0x00, 0x08, 0x34, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x43, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x34, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x08, 0x0E, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x19, 0x52, 0x17, 0x96, 0x0E, 0x00,
+ 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x35, 0x07, 0x9A, 0x02, 0x00, 0x00, 0x08, 0x34, 0x1C, 0x96,
+ 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x02, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x36,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x04, 0x00, 0x08, 0x37, 0x08, 0x38, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x39,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
+ 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x13, 0x00, 0x08, 0x3A, 0x07, 0x03, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02,
+ 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3B, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00,
+ 0x08, 0x3C, 0x9B, 0x09, 0x00, 0x00, 0x01, 0x00, 0x73, 0x72, 0x63, 0x00, 0x64, 0x00, 0x96, 0x02,
+ 0x00, 0x08, 0x08, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x3D, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x3E, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x19, 0x00, 0x96, 0x09, 0x00,
+ 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3B, 0x52,
+ 0x17, 0x99, 0x02, 0x00, 0x2C, 0x00, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x1C, 0x96, 0x07, 0x00, 0x07,
+ 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3A, 0x52, 0x17, 0x96, 0x09,
+ 0x00, 0x05, 0x01, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3B,
+ 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x02, 0x00, 0x08, 0x0D, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0xB3, 0x00, 0x96, 0x03, 0x00, 0x08,
+ 0x3F, 0x02, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00,
+ 0x02, 0x49, 0x9D, 0x02, 0x00, 0x91, 0x00, 0x96, 0x04, 0x00, 0x08, 0x11, 0x04, 0x00, 0x3C, 0x96,
+ 0x02, 0x00, 0x08, 0x3F, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x41, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x3F, 0x4C, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x42, 0x08, 0x11, 0x1C, 0x96, 0x07,
+ 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x40, 0x3D, 0x47, 0x96, 0x02, 0x00, 0x08, 0x41, 0x47,
+ 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x11, 0x1C, 0x4E, 0x96, 0x07, 0x00,
+ 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x40, 0x3D, 0x47, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x33, 0x00,
+ 0x96, 0x04, 0x00, 0x08, 0x3F, 0x08, 0x11, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00,
+ 0x08, 0x40, 0x3D, 0x96, 0x02, 0x00, 0x08, 0x41, 0x47, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x11, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x40,
+ 0x3D, 0x47, 0x1D, 0x99, 0x02, 0x00, 0x61, 0xFF, 0x96, 0x02, 0x00, 0x08, 0x3F, 0x1C, 0x3E, 0x4F,
+ 0x96, 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08,
+ 0x43, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x44, 0x4E, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x45, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00,
+ 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x46, 0x4E, 0x3E, 0x4F, 0x96, 0x08,
+ 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08, 0x36, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08,
+ 0x47, 0x07, 0x10, 0x00, 0x00, 0x00, 0x07, 0xF4, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x08, 0x48, 0x3D, 0x1D, 0x96, 0x0E, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x08, 0x49, 0x07, 0xF4,
+ 0x01, 0x00, 0x00, 0x08, 0x47, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07, 0x00, 0x07,
+ 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x4A, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x48, 0x3D, 0x1D,
+ 0x96, 0x02, 0x00, 0x08, 0x4A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08,
+ 0x4B, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x13, 0x00, 0x08, 0x4C, 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07,
+ 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4A, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x4D, 0x07, 0x03, 0x00, 0x00, 0x00, 0x07, 0xFD,
+ 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x4A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x4E, 0x07, 0x04, 0x00,
+ 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
+ 0x96, 0x02, 0x00, 0x08, 0x4A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08,
+ 0x4F, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x13, 0x00, 0x08, 0x0D, 0x07, 0x06, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07,
+ 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x4A, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x50, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0xFD,
+ 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x4A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x51, 0x07, 0x08, 0x00,
+ 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
+ 0x96, 0x13, 0x00, 0x08, 0x52, 0x07, 0x09, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07,
+ 0x02, 0x00, 0x00, 0x00, 0x08, 0x48, 0x3D, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x10,
+ 0x00, 0x08, 0x0B, 0x08, 0x53, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
+ 0x4A, 0x40, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x0B, 0x08, 0x52, 0x1C,
+ 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08,
+ 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x39, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F,
+ 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08,
+ 0x54, 0x07, 0x0A, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x13, 0x00, 0x08, 0x55, 0x07, 0x0B, 0x00, 0x00, 0x00, 0x07, 0xFD, 0x00, 0x00, 0x00, 0x07,
+ 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x56, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0xFD,
+ 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3B, 0x9B, 0x05, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3C, 0x9B, 0x09, 0x00, 0x00, 0x01, 0x00, 0x73, 0x72, 0x63,
+ 0x00, 0x72, 0x00, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D,
+ 0x02, 0x00, 0x27, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x3D, 0x05,
+ 0x00, 0x4F, 0x96, 0x09, 0x00, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x3B, 0x52, 0x17, 0x99, 0x02, 0x00, 0x3A, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08,
+ 0x1C, 0x96, 0x04, 0x00, 0x08, 0x3D, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x1C, 0x96,
+ 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x56, 0x52,
+ 0x17, 0x96, 0x09, 0x00, 0x05, 0x01, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x3B, 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x43, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x44, 0x4E, 0x3E, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x52, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x45, 0x9B, 0x05,
+ 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x46, 0x4E, 0x3E, 0x4F, 0x96, 0x07, 0x00, 0x08, 0x57, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1D,
+ 0x96, 0x02, 0x00, 0x08, 0x57, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x58, 0x07, 0x00, 0x00, 0x00, 0x00,
+ 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x57, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x58, 0x4E, 0x96, 0x13,
+ 0x00, 0x08, 0x59, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0B, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00,
+ 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x57,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x58, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x59, 0x52, 0x17, 0x96, 0x02,
+ 0x00, 0x08, 0x57, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x58, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x59, 0x3A,
+ 0x17, 0x96, 0x02, 0x00, 0x08, 0x5A, 0x9B, 0x0C, 0x00, 0x00, 0x01, 0x00, 0x74, 0x61, 0x72, 0x67,
+ 0x65, 0x74, 0x00, 0x27, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x5B,
+ 0x08, 0x5B, 0x1C, 0x4F, 0x96, 0x08, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x08, 0x1C,
+ 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x1D, 0x96, 0x09, 0x00,
+ 0x08, 0x5C, 0x07, 0xBC, 0x02, 0x00, 0x00, 0x08, 0x5A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07,
+ 0x07, 0x00, 0x00, 0x00, 0x02, 0x08, 0x5A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07,
+ 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x5E, 0x9B, 0x0C, 0x00, 0x00, 0x01,
+ 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x5B, 0x00, 0x96, 0x09, 0x00, 0x08, 0x61, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x08, 0x5F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x60, 0x52, 0x3C, 0x96, 0x02,
+ 0x00, 0x08, 0x61, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x62, 0x49, 0x9D, 0x02, 0x00, 0x2D, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x61, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x63, 0x49, 0x9D, 0x02, 0x00, 0x0E, 0x00,
+ 0x96, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x99, 0x02, 0x00, 0x09, 0x00, 0x96, 0x05,
+ 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x3E, 0x99, 0x02, 0x00, 0x09, 0x00, 0x96, 0x05, 0x00, 0x07,
+ 0x02, 0x00, 0x00, 0x00, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x64, 0x9B, 0x17, 0x00, 0x00, 0x03, 0x00, 0x75, 0x72, 0x6C,
+ 0x00, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x97,
+ 0x00, 0x96, 0x02, 0x00, 0x08, 0x5B, 0x1C, 0x44, 0x96, 0x02, 0x00, 0x08, 0x07, 0x49, 0x12, 0x9D,
+ 0x02, 0x00, 0x08, 0x00, 0x96, 0x04, 0x00, 0x08, 0x5B, 0x08, 0x53, 0x1D, 0x96, 0x04, 0x00, 0x08,
+ 0x65, 0x08, 0x5F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x5E, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x65, 0x1C, 0x96, 0x05, 0x00, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x3E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x65, 0x1C,
+ 0x96, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x15, 0x00, 0x96, 0x02,
+ 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x5B, 0x1C, 0x9A, 0x01, 0x00, 0x02, 0x99, 0x02,
+ 0x00, 0x10, 0x00, 0x96, 0x02, 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x5B, 0x1C, 0x9A,
+ 0x01, 0x00, 0x01, 0x99, 0x02, 0x00, 0x10, 0x00, 0x96, 0x02, 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x5B, 0x1C, 0x9A, 0x01, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x67, 0x9B, 0x10, 0x00, 0x00, 0x02, 0x00,
+ 0x75, 0x72, 0x6C, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x99, 0x00, 0x96, 0x04, 0x00,
+ 0x08, 0x65, 0x08, 0x5F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x5E, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x20, 0x96, 0x02,
+ 0x00, 0x08, 0x65, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00,
+ 0x4A, 0x00, 0x96, 0x02, 0x00, 0x08, 0x65, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00,
+ 0x49, 0x9D, 0x02, 0x00, 0x1B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x68, 0x4E, 0x9A, 0x01, 0x00, 0xC2, 0x99, 0x02, 0x00, 0x16,
+ 0x00, 0x96, 0x02, 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x68, 0x4E, 0x9A, 0x01, 0x00, 0xC1, 0x99, 0x02, 0x00, 0x16, 0x00, 0x96, 0x02, 0x00, 0x08,
+ 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x68, 0x4E, 0x9A, 0x01,
+ 0x00, 0xC0, 0x8B, 0x01, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x69, 0x9B, 0x10, 0x00, 0x00, 0x02, 0x00, 0x75, 0x72,
+ 0x6C, 0x00, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x00, 0x99, 0x00, 0x96, 0x04, 0x00, 0x08, 0x65,
+ 0x08, 0x5F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x5E, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x20, 0x96, 0x02, 0x00, 0x08,
+ 0x65, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x49, 0x9D, 0x02, 0x00, 0x4A, 0x00,
+ 0x96, 0x02, 0x00, 0x08, 0x65, 0x1C, 0x96, 0x05, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x49, 0x9D,
+ 0x02, 0x00, 0x1B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x68, 0x4E, 0x9A, 0x01, 0x00, 0x42, 0x99, 0x02, 0x00, 0x16, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x66, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x68,
+ 0x4E, 0x9A, 0x01, 0x00, 0x41, 0x99, 0x02, 0x00, 0x16, 0x00, 0x96, 0x02, 0x00, 0x08, 0x66, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x68, 0x4E, 0x9A, 0x01, 0x00, 0x40,
+ 0x8B, 0x01, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B,
+ 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6B, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07,
+ 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6C, 0x07, 0x04,
+ 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00,
+ 0x08, 0x6D, 0x07, 0x05, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00,
+ 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B,
+ 0x4E, 0x96, 0x13, 0x00, 0x08, 0x45, 0x07, 0x06, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x43, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07,
+ 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x6E, 0x07, 0x0A,
+ 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00,
+ 0x08, 0x6F, 0x07, 0x0C, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00,
+ 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B,
+ 0x4E, 0x96, 0x13, 0x00, 0x08, 0x70, 0x07, 0x0D, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x71, 0x07, 0x0E, 0x00, 0x00, 0x00, 0x07,
+ 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x72, 0x07, 0x0F,
+ 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00,
+ 0x08, 0x73, 0x07, 0x10, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00,
+ 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B,
+ 0x4E, 0x96, 0x13, 0x00, 0x08, 0x74, 0x07, 0x11, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x75, 0x07, 0x12, 0x00, 0x00, 0x00, 0x07,
+ 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x76, 0x07, 0x13,
+ 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00,
+ 0x08, 0x77, 0x07, 0x14, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00,
+ 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B,
+ 0x4E, 0x96, 0x13, 0x00, 0x08, 0x78, 0x07, 0x15, 0x00, 0x00, 0x00, 0x07, 0x84, 0x03, 0x00, 0x00,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x5D, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x79, 0x07, 0xC8, 0x00, 0x00, 0x00, 0x07,
+ 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x09, 0x00,
+ 0x07, 0x80, 0x00, 0x00, 0x00, 0x08, 0x6E, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x09, 0x00, 0x08,
+ 0x7A, 0x07, 0x85, 0x03, 0x00, 0x00, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x03,
+ 0x00, 0x00, 0x00, 0x02, 0x08, 0x5D, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07, 0x00,
+ 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0x7B, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x48, 0x3D,
+ 0x1D, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x13, 0x00, 0x08, 0x7C, 0x07, 0xC9, 0x00, 0x00,
+ 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x7D,
+ 0x07, 0x65, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
+ 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x13, 0x00, 0x08, 0x7E, 0x07, 0x66, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02,
+ 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x7F, 0x07, 0x67, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00,
+ 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x80, 0x07, 0x68, 0x00, 0x00,
+ 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x81,
+ 0x07, 0x69, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
+ 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x13, 0x00, 0x08, 0x6E, 0x07, 0x6A, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x00, 0x07, 0x02,
+ 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00, 0x08, 0x82, 0x07, 0x6B, 0x00, 0x00, 0x00, 0x07, 0x68, 0x00,
+ 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x09, 0x00, 0x07, 0x00,
+ 0x04, 0x00, 0x00, 0x08, 0x82, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07,
+ 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x0E,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x19, 0x52, 0x17, 0x96, 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00,
+ 0x02, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00,
+ 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x08, 0x00, 0x07, 0x83, 0x00, 0x00, 0x00, 0x02, 0x08,
+ 0x7B, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x13,
+ 0x00, 0x08, 0x83, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x6E, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00,
+ 0x00, 0x00, 0x08, 0x48, 0x3D, 0x1D, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x13, 0x00, 0x08,
+ 0x84, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x71, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00,
+ 0x08, 0x48, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E,
+ 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x85, 0x9B, 0x07, 0x00, 0x00, 0x01,
+ 0x00, 0x6F, 0x00, 0x67, 0x00, 0x96, 0x02, 0x00, 0x08, 0x1A, 0x1C, 0x44, 0x96, 0x02, 0x00, 0x08,
+ 0x86, 0x49, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x05, 0x00, 0x96, 0x01, 0x00, 0x02, 0x3E, 0x96, 0x07,
+ 0x00, 0x08, 0x87, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x1A, 0x46,
+ 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x27, 0x00, 0x96, 0x04,
+ 0x00, 0x08, 0x88, 0x04, 0x00, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x87, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x88, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x1A, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x88, 0x1C, 0x4E, 0x4F,
+ 0x99, 0x02, 0x00, 0xCB, 0xFF, 0x96, 0x02, 0x00, 0x08, 0x87, 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x02, 0x00, 0x08, 0x89, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x96, 0x02, 0x00, 0x08,
+ 0x08, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x8A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02,
+ 0x00, 0x08, 0x08, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x8B, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F,
+ 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8C,
+ 0x52, 0x17, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96,
+ 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x8D, 0x9B, 0x0A, 0x00, 0x00, 0x01, 0x00,
+ 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x25, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x8A, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x85, 0x52, 0x3E, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x02, 0x00, 0x08, 0x8E, 0x9B, 0x10, 0x00, 0x00, 0x02, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x73,
+ 0x74, 0x79, 0x6C, 0x65, 0x00, 0x79, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x8A, 0x4E, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x12, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C,
+ 0x96, 0x07, 0x00, 0x08, 0x8A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8A, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x85, 0x52, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x07, 0x00, 0x07,
+ 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x90, 0x52, 0x17, 0x96, 0x07,
+ 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8C, 0x52, 0x17,
+ 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00,
+ 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x91, 0x9B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x00,
+ 0x96, 0x04, 0x00, 0x08, 0x92, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8A, 0x4E, 0x3C, 0x96,
+ 0x07, 0x00, 0x08, 0x93, 0x07, 0x00, 0x00, 0x00, 0x00, 0x42, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x92,
+ 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x25, 0x00, 0x96,
+ 0x04, 0x00, 0x08, 0x88, 0x04, 0x00, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x88, 0x1C, 0x96, 0x07, 0x00,
+ 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x93, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x14, 0x52, 0x17, 0x99,
+ 0x02, 0x00, 0xCD, 0xFF, 0x96, 0x02, 0x00, 0x08, 0x93, 0x1C, 0x3E, 0x4F, 0x96, 0x02, 0x00, 0x08,
+ 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02,
+ 0x00, 0x08, 0x90, 0x9B, 0x0A, 0x00, 0x00, 0x01, 0x00, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x5C, 0x00,
+ 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8B, 0x4E, 0x12, 0x12, 0x9D, 0x02,
+ 0x00, 0x12, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x07, 0x00, 0x08, 0x8B, 0x07, 0x00,
+ 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x8B,
+ 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x8A, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0C, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x94, 0x52, 0x4F, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96,
+ 0x02, 0x00, 0x08, 0x94, 0x9B, 0x0B, 0x00, 0x00, 0x01, 0x00, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x00,
+ 0x9D, 0x03, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02,
+ 0x00, 0x05, 0x00, 0x96, 0x01, 0x00, 0x02, 0x3E, 0x96, 0x09, 0x00, 0x08, 0x95, 0x07, 0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x83, 0x40, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x96, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x15, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04,
+ 0x00, 0x08, 0x97, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x96, 0x4E, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x98, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x99, 0x49, 0x9D,
+ 0x02, 0x00, 0x2B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x98, 0x4E,
+ 0x96, 0x02, 0x00, 0x08, 0x9A, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08,
+ 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x99, 0x05, 0x00, 0x4F, 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x99, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9B, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x41, 0x00, 0x96,
+ 0x04, 0x00, 0x08, 0x92, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9B, 0x4E, 0x96, 0x07, 0x00,
+ 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9C, 0x52, 0x3C, 0x96,
+ 0x02, 0x00, 0x08, 0x92, 0x1C, 0x96, 0x01, 0x00, 0x02, 0x49, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x0F,
+ 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x9B, 0x08, 0x92, 0x1C, 0x4F,
+ 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x9D, 0x08, 0x8F, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0x9D, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9E,
+ 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x26, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00,
+ 0x08, 0x9F, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x9E, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA0, 0x52, 0x4F, 0x96, 0x02, 0x00,
+ 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA1, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA2, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0xA1, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA3, 0x3D, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA4, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xA5,
+ 0x49, 0x9D, 0x02, 0x00, 0x2B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0xA4, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x9A, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02,
+ 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA5, 0x05, 0x00, 0x4F, 0x99, 0x02, 0x00, 0x0E,
+ 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA5, 0x05, 0x01, 0x4F, 0x96,
+ 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA6, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xA7,
+ 0x49, 0x9D, 0x02, 0x00, 0x4F, 0x00, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0xA6, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xA8, 0x49, 0x9D, 0x02, 0x00, 0x25, 0x00, 0x96, 0x02, 0x00,
+ 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA6, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA6,
+ 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA3, 0x3D, 0x4F, 0x99, 0x02, 0x00,
+ 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA6, 0x05, 0x00, 0x4F,
+ 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA6,
+ 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA9, 0x4E, 0x12,
+ 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00, 0x08, 0xA9,
+ 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xA9, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00,
+ 0x00, 0x08, 0xA3, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAA,
+ 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00,
+ 0x08, 0xAB, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAA, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x08, 0xA3, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0xAC, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96,
+ 0x04, 0x00, 0x08, 0xAC, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAC, 0x4E, 0x96, 0x07, 0x00,
+ 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA3, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0xAD, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x20, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95,
+ 0x1C, 0x96, 0x04, 0x00, 0x08, 0xAE, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAD, 0x4E, 0x96,
+ 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0xA3, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAF, 0x4E, 0x12, 0x9D, 0x02, 0x00, 0x3B, 0x00, 0x96, 0x04, 0x00,
+ 0x08, 0x92, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xAF, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x08, 0xA3, 0x3D, 0x3C, 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08,
+ 0x92, 0x1C, 0x48, 0x12, 0x9D, 0x02, 0x00, 0x0F, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96,
+ 0x04, 0x00, 0x08, 0xB0, 0x08, 0x92, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02,
+ 0x00, 0x08, 0xB1, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB2, 0x49, 0x9D, 0x02, 0x00, 0x2B, 0x00, 0x96,
+ 0x02, 0x00, 0x08, 0x8F, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xB1, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB3,
+ 0x49, 0x12, 0x9D, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x96, 0x04, 0x00,
+ 0x08, 0xB2, 0x05, 0x00, 0x4F, 0x99, 0x02, 0x00, 0x0E, 0x00, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C,
+ 0x96, 0x04, 0x00, 0x08, 0xB2, 0x05, 0x01, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x95, 0x1C, 0x3E, 0x4F,
+ 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08,
+ 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB4, 0x9B, 0x09, 0x00, 0x00, 0x01, 0x00, 0x63, 0x73, 0x73,
+ 0x00, 0xDA, 0x00, 0x96, 0x04, 0x00, 0x08, 0xB7, 0x08, 0xB5, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xB6, 0x52, 0x3C, 0x96, 0x02, 0x00,
+ 0x08, 0xB7, 0x1C, 0x44, 0x96, 0x02, 0x00, 0x08, 0xB8, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x06, 0x00,
+ 0x96, 0x02, 0x00, 0x05, 0x00, 0x3E, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x8A, 0x4E, 0x12, 0x12, 0x9D, 0x02, 0x00, 0x12, 0x00, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96,
+ 0x07, 0x00, 0x08, 0x8A, 0x07, 0x00, 0x00, 0x00, 0x00, 0x43, 0x4F, 0x96, 0x02, 0x00, 0x08, 0xB7,
+ 0x46, 0x87, 0x01, 0x00, 0x00, 0x96, 0x01, 0x00, 0x02, 0x49, 0x9D, 0x02, 0x00, 0x56, 0x00, 0x96,
+ 0x04, 0x00, 0x08, 0x88, 0x04, 0x00, 0x3C, 0x96, 0x02, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00,
+ 0x08, 0x8A, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x88, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xB7, 0x1C, 0x96,
+ 0x02, 0x00, 0x08, 0x88, 0x1C, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x85, 0x52, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x88, 0x1C, 0x96, 0x07,
+ 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x90, 0x52, 0x17,
+ 0x99, 0x02, 0x00, 0x9C, 0xFF, 0x96, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C,
+ 0x96, 0x02, 0x00, 0x08, 0x8C, 0x52, 0x17, 0x96, 0x02, 0x00, 0x05, 0x01, 0x3E, 0x4F, 0x96, 0x02,
+ 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E,
+ 0x96, 0x04, 0x00, 0x08, 0xB9, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02,
+ 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0xB4, 0x4E, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B,
+ 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x13, 0x00,
+ 0x08, 0x39, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x2D, 0x01, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00,
+ 0x00, 0x08, 0x01, 0x3D, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84,
+ 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3B, 0x9B, 0x05, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x4F, 0x96, 0x02, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84,
+ 0x4E, 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x02, 0x00, 0x08, 0x3C, 0x9B, 0x09, 0x00, 0x00,
+ 0x01, 0x00, 0x73, 0x72, 0x63, 0x00, 0x6B, 0x00, 0x96, 0x02, 0x00, 0x08, 0x3E, 0x1C, 0x96, 0x01,
+ 0x00, 0x02, 0x49, 0x12, 0x9D, 0x02, 0x00, 0x19, 0x00, 0x96, 0x09, 0x00, 0x05, 0x00, 0x07, 0x01,
+ 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x3B, 0x52, 0x17, 0x99, 0x02, 0x00,
+ 0x41, 0x00, 0x96, 0x04, 0x00, 0x08, 0xB7, 0x08, 0x3E, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00,
+ 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08, 0xB9, 0x52, 0x3C, 0x96, 0x02, 0x00, 0x08,
+ 0x08, 0x1C, 0x96, 0x04, 0x00, 0x08, 0x3D, 0x08, 0xB7, 0x1C, 0x4F, 0x96, 0x02, 0x00, 0x08, 0xB7,
+ 0x1C, 0x96, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 0x08, 0x08, 0x1C, 0x96, 0x02, 0x00, 0x08,
+ 0x3B, 0x52, 0x17, 0x4F, 0x96, 0x0E, 0x00, 0x07, 0x64, 0x00, 0x00, 0x00, 0x08, 0xBA, 0x07, 0x71,
+ 0x00, 0x00, 0x00, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E, 0x96, 0x02, 0x00, 0x08,
+ 0x0B, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x3D, 0x17, 0x96, 0x08,
+ 0x00, 0x07, 0x03, 0x04, 0x00, 0x00, 0x02, 0x08, 0x7B, 0x1C, 0x96, 0x02, 0x00, 0x08, 0x84, 0x4E,
+ 0x96, 0x02, 0x00, 0x08, 0x0B, 0x4E, 0x96, 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05,
+ 0x3D, 0x17, 0x96, 0x09, 0x00, 0x07, 0x03, 0x04, 0x00, 0x00, 0x08, 0x84, 0x08, 0x7B, 0x1C, 0x96,
+ 0x07, 0x00, 0x07, 0x03, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17, 0x96, 0x13, 0x00, 0x08, 0xBB,
+ 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFA, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
+ 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0xBC, 0x07, 0x01, 0x00, 0x00, 0x00, 0x07, 0xFA, 0x00,
+ 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08, 0x01, 0x3D, 0x1D, 0x96, 0x13, 0x00, 0x08, 0xBD,
+ 0x07, 0x02, 0x00, 0x00, 0x00, 0x07, 0xFA, 0x00, 0x00, 0x00, 0x07, 0x02, 0x00, 0x00, 0x00, 0x08,
+ 0x01, 0x3D, 0x1D, 0x96, 0x04, 0x00, 0x08, 0xBE, 0x08, 0xBC, 0x1C, 0x1D, 0x96, 0x03, 0x00, 0x08,
+ 0x1A, 0x02, 0x1D, 0x96, 0x0D, 0x00, 0x07, 0x06, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x08, 0x08, 0x1C, 0x96, 0x07, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x08, 0x05, 0x3D, 0x17,
+ 0x00
};
commit e22fa8ee92bc8da3bdd7fe0dcf9e54b98e321dcf
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 14:21:28 2007 +0200
Make TextField's SwfdecParagraph save index to the string, not pointer
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index d50bdb9..881327c 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -102,7 +102,7 @@ swfdec_text_paragraph_add_block (SwfdecParagraph *paragraph, int index_,
static void
swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
- SwfdecParagraph *paragraph, guint start_index, guint end_index)
+ SwfdecParagraph *paragraph, guint start_index, guint length)
{
SwfdecTextFormat *format, *format_prev;
guint index_;
@@ -113,18 +113,14 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
g_assert (paragraph != NULL);
- g_assert (start_index <= end_index);
- g_assert (end_index <= text->input->len);
+ g_assert (start_index + length <= text->input->len);
- paragraph->text = text->input->str + start_index;
- paragraph->text_length = end_index - start_index;
+ paragraph->index_ = start_index;
+ paragraph->length = length;
paragraph->blocks = NULL;
paragraph->attrs = NULL;
- if (paragraph->text_length == 0)
- return;
-
g_assert (text->formats != NULL);
for (iter = text->formats; iter->next != NULL &&
((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
@@ -171,7 +167,8 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
attr_underline->start_index = 0;
for (iter = iter->next;
- iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index_ < end_index;
+ iter != NULL &&
+ ((SwfdecFormatIndex *)(iter->data))->index_ < start_index + length;
iter = iter->next)
{
format_prev = format;
@@ -258,31 +255,31 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
}
// Close attributes
- attr_bold->end_index = end_index - start_index;
+ attr_bold->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_bold);
attr_bold = NULL;
- attr_color->end_index = end_index - start_index;
+ attr_color->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_color);
attr_color = NULL;
- attr_font->end_index = end_index - start_index;
+ attr_font->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_font);
attr_font = NULL;
- attr_italic->end_index = end_index - start_index;
+ attr_italic->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_italic);
attr_italic = NULL;
- attr_letter_spacing->end_index = end_index - start_index;
+ attr_letter_spacing->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_letter_spacing);
attr_letter_spacing = NULL;
- attr_size->end_index = end_index - start_index;
+ attr_size->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_size);
attr_size = NULL;
- attr_underline->end_index = end_index - start_index;
+ attr_underline->end_index = length;
swfdec_text_paragraph_add_attribute (paragraph, attr_underline);
attr_underline = NULL;
@@ -330,7 +327,7 @@ swfdec_text_field_movie_free_paragraphs (SwfdecParagraph *paragraphs)
g_return_if_fail (paragraphs != NULL);
- for (i = 0; paragraphs[i].text != NULL; i++)
+ for (i = 0; paragraphs[i].blocks != NULL; i++)
{
for (iter = paragraphs[i].blocks; iter != NULL; iter = iter->next) {
pango_tab_array_free (((SwfdecBlock *)(iter->data))->tab_stops);
@@ -417,7 +414,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
layouts = g_array_new (TRUE, TRUE, sizeof (SwfdecLayout));
- for (i = 0; paragraphs[i].text != NULL; i++)
+ for (i = 0; paragraphs[i].blocks != NULL; i++)
{
GSList *iter;
guint skip;
@@ -437,7 +434,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
length =
((SwfdecBlock *)(iter->next->data))->index_ - block->index_;
} else {
- length = paragraphs[i].text_length - block->index_;
+ length = paragraphs[i].length - block->index_;
}
if (skip > length) {
@@ -490,8 +487,8 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_attr_list_unref (attr_list);
pango_layout_set_text (playout,
- paragraphs[i].text + block->index_ + skip,
- paragraphs[i].text_length - block->index_ - skip);
+ text->input->str + paragraphs[i].index_ + block->index_ + skip,
+ paragraphs[i].length - block->index_ - skip);
if (iter->next != NULL && text->text->word_wrap)
{
@@ -504,7 +501,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
line = pango_layout_get_line_readonly (playout, line_num);
skip_new = line->start_index + line->length - (length - skip);
pango_layout_set_text (playout,
- paragraphs[i].text + block->index_ + skip,
+ text->input->str + paragraphs[i].index_ + block->index_ + skip,
length - skip + skip_new);
skip = skip_new;
}
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index 7a055b2..15af317 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -58,8 +58,8 @@ typedef struct {
} SwfdecBlock;
typedef struct {
- const char *text;
- guint text_length;
+ guint index_;
+ guint length;
gboolean bullet;
int indent;
commit 4723a6c17eeec403b01cce07af4925c0361b3aeb
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 13:57:30 2007 +0200
Add a test for LI, P and BR tags to text-field-html-input
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index 918e2ba..c08f64c 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 7c0beaa..3093e99 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -182,3 +182,51 @@ a
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: false condenseWhite: false
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: true condenseWhite: false
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: false condenseWhite: true
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: true condenseWhite: true
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index 9d00d29..787d500 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index 7b8cbf4..acd8f59 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -178,3 +178,43 @@ a
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: true condenseWhite: false
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: true condenseWhite: true
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index ad7541b..dc640a1 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index 19ef364..4e97379 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -178,3 +178,43 @@ a
a
<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: false condenseWhite: false
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: true condenseWhite: false
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: false condenseWhite: true
+abcde
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">abcde</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8: multiline: true condenseWhite: true
+a
b
cd
e
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P><LI><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">b</FONT></LI><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">cd</FONT></P><P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">e</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+2/b: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+3/
: align=left blockIndent=0 bold=false bullet=true color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+4/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+5/d: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7/e: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+8/
: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index fb0641a..fc0754c 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -40,7 +40,8 @@ var texts = [
"a<p align='right'>b</p>c",
"a<p align='right'>ä</p>c",
"a<!-- b -->c",
- "a<!--->b"
+ "a<!--->b",
+ "a<br><li>b</li>c<p>d</p>e<br>"
];
t.html = true;
commit 14e539d812ba007cb9e2fa7784aa905e66087766
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 13:56:57 2007 +0200
Fix some error in HTML input with multiline enabled and version > 6
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index b3976e7..3352bd6 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -318,19 +318,19 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
}
else
{
- if (data->cx->version < 7 &&
- (name_length == 2 && !g_strncasecmp (name, "br", 2))) {
- data->text = g_string_append_c (data->text, '\n');
- tag = NULL;
- } else {
- SwfdecAsObject *object;
- SwfdecAsValue val;
+ SwfdecAsObject *object;
+ SwfdecAsValue val;
- if (data->cx->version < 7 &&
- ((name_length == 1 && !g_strncasecmp (name, "p", 1)) ||
- (name_length == 2 && !g_strncasecmp (name, "li", 2))))
+ if (data->multiline) {
+ if (name_length == 2 && !g_strncasecmp (name, "br", 2))
+ {
+ data->text = g_string_append_c (data->text, '\n');
+ }
+ else if ((name_length == 1 && !g_strncasecmp (name, "p", 1)) ||
+ (name_length == 2 && !g_strncasecmp (name, "li", 2)) ||
+ (name_length == 2 && !g_strncasecmp (name, "br", 2)))
{
- GSList *iter;
+ GSList *iter;
for (iter = data->tags_open; iter != NULL; iter = iter->next) {
ParserTag *f = iter->data;
@@ -341,41 +341,40 @@ swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
}
}
}
+ }
- tag = g_new0 (ParserTag, 1);
- tag->name = name;
- tag->name_length = name_length;
- tag->format = SWFDEC_TEXT_FORMAT (swfdec_text_format_new (data->cx));
- tag->index = g_utf8_strlen (data->text->str, -1);
-
- data->tags_open = g_slist_prepend (data->tags_open, tag);
-
- // set format based on tag
- object = SWFDEC_AS_OBJECT (tag->format);
- SWFDEC_AS_VALUE_SET_BOOLEAN (&val, TRUE);
-
- if (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bullet, &val);
- } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "b", 1)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bold, &val);
- } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "i", 1)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_italic, &val);
- } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "u", 1)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_underline, &val);
- } else if (tag->name_length == 3 && !g_strncasecmp (tag->name, "img", 3))
- {
- SWFDEC_FIXME ("IMG tag support for TextField's HTML input missing");
- }
+ tag = g_new0 (ParserTag, 1);
+ tag->name = name;
+ tag->name_length = name_length;
+ tag->format = SWFDEC_TEXT_FORMAT (swfdec_text_format_new (data->cx));
+ tag->index = g_utf8_strlen (data->text->str, -1);
+
+ data->tags_open = g_slist_prepend (data->tags_open, tag);
+
+ // set format based on tag
+ object = SWFDEC_AS_OBJECT (tag->format);
+ SWFDEC_AS_VALUE_SET_BOOLEAN (&val, TRUE);
+
+ if (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bullet, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "b", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bold, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "i", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_italic, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "u", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_underline, &val);
+ } else if (tag->name_length == 3 && !g_strncasecmp (tag->name, "img", 3)) {
+ SWFDEC_FIXME ("IMG tag support for TextField's HTML input missing");
+ }
- if (data->style_sheet &&
- ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
- (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)))) {
- SwfdecTextFormat *format = swfdec_style_sheet_get_tag_format (
- data->style_sheet, swfdec_as_context_give_string (data->cx,
- g_strndup (tag->name, tag->name_length)));
- if (format != NULL)
- swfdec_text_format_add (tag->format, format);
- }
+ if (data->style_sheet &&
+ ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
+ (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)))) {
+ SwfdecTextFormat *format = swfdec_style_sheet_get_tag_format (
+ data->style_sheet, swfdec_as_context_give_string (data->cx,
+ g_strndup (tag->name, tag->name_length)));
+ if (format != NULL)
+ swfdec_text_format_add (tag->format, format);
}
// parse attributes
commit 1fe0cfbd5ca20e0e62ed212657265104bab81947
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 13:44:45 2007 +0200
Add testing for comment parsing to text-field-html-input test
diff --git a/test/trace/text-field-html-input-6.swf b/test/trace/text-field-html-input-6.swf
index 9640b1f..918e2ba 100644
Binary files a/test/trace/text-field-html-input-6.swf and b/test/trace/text-field-html-input-6.swf differ
diff --git a/test/trace/text-field-html-input-6.swf.trace b/test/trace/text-field-html-input-6.swf.trace
index 43479bd..7c0beaa 100644
--- a/test/trace/text-field-html-input-6.swf.trace
+++ b/test/trace/text-field-html-input-6.swf.trace
@@ -146,3 +146,39 @@ aä
c
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: false condenseWhite: false
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: true condenseWhite: false
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: false condenseWhite: true
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: true condenseWhite: true
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: false condenseWhite: false
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: true condenseWhite: false
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: false condenseWhite: true
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: true condenseWhite: true
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning= leading=0 leftMargin=0 letterSpacing= rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-7.swf b/test/trace/text-field-html-input-7.swf
index f7e2285..9d00d29 100644
Binary files a/test/trace/text-field-html-input-7.swf and b/test/trace/text-field-html-input-7.swf differ
diff --git a/test/trace/text-field-html-input-7.swf.trace b/test/trace/text-field-html-input-7.swf.trace
index 08c64de..7b8cbf4 100644
--- a/test/trace/text-field-html-input-7.swf.trace
+++ b/test/trace/text-field-html-input-7.swf.trace
@@ -142,3 +142,39 @@ aä
c
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: false condenseWhite: false
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: true condenseWhite: false
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: false condenseWhite: true
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: true condenseWhite: true
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: false condenseWhite: false
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: true condenseWhite: false
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: false condenseWhite: true
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: true condenseWhite: true
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=undefined leading=0 leftMargin=0 letterSpacing=undefined rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input-8.swf b/test/trace/text-field-html-input-8.swf
index b84be18..ad7541b 100644
Binary files a/test/trace/text-field-html-input-8.swf and b/test/trace/text-field-html-input-8.swf differ
diff --git a/test/trace/text-field-html-input-8.swf.trace b/test/trace/text-field-html-input-8.swf.trace
index d5f60d6..19ef364 100644
--- a/test/trace/text-field-html-input-8.swf.trace
+++ b/test/trace/text-field-html-input-8.swf.trace
@@ -142,3 +142,39 @@ aä
c
1/ä: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
2/
: align=right blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
3/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: false condenseWhite: false
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: true condenseWhite: false
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: false condenseWhite: true
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+6: multiline: true condenseWhite: true
+ac
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">ac</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+1/c: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: false condenseWhite: false
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: true condenseWhite: false
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: false condenseWhite: true
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
+7: multiline: true condenseWhite: true
+a
+<P ALIGN="LEFT"><FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0">a</FONT></P>
+0/a: align=left blockIndent=0 bold=false bullet=false color=0 display=block font=Times New Roman indent=0 italic=false kerning=false leading=0 leftMargin=0 letterSpacing=0 rightMargin=0 size=12 tabStops= target= underline=false url=
diff --git a/test/trace/text-field-html-input.as b/test/trace/text-field-html-input.as
index a6f0558..fb0641a 100644
--- a/test/trace/text-field-html-input.as
+++ b/test/trace/text-field-html-input.as
@@ -38,7 +38,9 @@ var texts = [
"a\r\nb",
"a\r\rb",
"a<p align='right'>b</p>c",
- "a<p align='right'>ä</p>c"
+ "a<p align='right'>ä</p>c",
+ "a<!-- b -->c",
+ "a<!--->b"
];
t.html = true;
commit e880c38b84a0de3c47931bc12d12dbebdd9117b1
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 13:43:07 2007 +0200
Fix an error in parsing of HTML comments. Added some asserts
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
index 1a61972..b3976e7 100644
--- a/libswfdec/swfdec_text_field_movie_html.c
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -54,6 +54,9 @@ typedef struct {
static void
swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag)
{
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (tag != NULL);
+
if (data->multiline &&
((tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)) ||
(tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2))))
@@ -93,7 +96,7 @@ swfdec_text_field_movie_html_parse_comment (ParserData *data, const char *p)
g_return_val_if_fail (p != NULL, NULL);
g_return_val_if_fail (strncmp (p, "<!--", strlen ("<!--")) == 0, NULL);
- end = strstr (p, "-->");
+ end = strstr (p + strlen ("<!--"), "-->");
if (end != NULL)
end += strlen("-->");
@@ -109,6 +112,13 @@ swfdec_text_field_movie_html_tag_set_attribute (ParserData *data,
SwfdecAsValue val;
SwfdecAsObject *object;
+ g_return_if_fail (data != NULL);
+ g_return_if_fail (tag != NULL);
+ g_return_if_fail (name != NULL);
+ g_return_if_fail (name_length >= 0);
+ g_return_if_fail (value != NULL);
+ g_return_if_fail (value_length >= 0);
+
object = SWFDEC_AS_OBJECT (tag->format);
SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_give_string (
object->context, g_strndup (value, value_length)));
@@ -213,7 +223,9 @@ swfdec_text_field_movie_html_parse_attribute (ParserData *data, ParserTag *tag,
const char *end, *name, *value;
int name_length, value_length;
- g_return_val_if_fail ((*p != '>' && *p != '\0'), p);
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (tag != NULL, NULL);
+ g_return_val_if_fail ((*p != '>' && *p != '\0'), NULL);
end = p + strcspn (p, "=> \r\n\t");
if (end - p <= 0)
@@ -720,6 +732,7 @@ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text,
return string;
}
+
const char *
swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie *text)
{
commit 1d982b25e49b32a094d95b68307449d77f9a21a4
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 13:36:38 2007 +0200
Rename swfdec_html_parser.c to swfdec_text_field_movie_html.c, move some code
The HTML generating code is now also part of swfdec_text_field_movie_html.c
diff --git a/libswfdec/Makefile.am b/libswfdec/Makefile.am
index c67f132..0cf8b71 100644
--- a/libswfdec/Makefile.am
+++ b/libswfdec/Makefile.am
@@ -60,6 +60,7 @@ libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES = \
swfdec_text_field.c \
swfdec_text_field_movie.c \
swfdec_text_field_movie_as.c \
+ swfdec_text_field_movie_html.c \
swfdec_enums.c \
swfdec_event.c \
swfdec_file_loader.c \
@@ -70,7 +71,6 @@ libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES = \
swfdec_font.c \
swfdec_graphic.c \
swfdec_graphic_movie.c \
- swfdec_html_parser.c \
swfdec_image.c \
swfdec_interval.c \
swfdec_key_as.c \
diff --git a/libswfdec/swfdec_html_parser.c b/libswfdec/swfdec_html_parser.c
deleted file mode 100644
index fbeb00e..0000000
--- a/libswfdec/swfdec_html_parser.c
+++ /dev/null
@@ -1,474 +0,0 @@
-/* Swfdec
- * Copyright (C) 2007 Pekka Lampila <pekka.lampila at iki.fi>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "swfdec_text_field_movie.h"
-#include "swfdec_as_strings.h"
-#include "swfdec_style_sheet.h"
-#include "swfdec_xml.h"
-#include "swfdec_debug.h"
-
-typedef struct {
- const char * name;
- int name_length;
- guint index;
- guint end_index;
- SwfdecTextFormat *format;
-} ParserTag;
-
-typedef struct {
- SwfdecAsContext *cx;
- gboolean multiline;
- gboolean condense_white;
- SwfdecStyleSheet *style_sheet;
- GString * text;
- GSList * tags_open;
- GSList * tags_closed;
-} ParserData;
-
-static void
-swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag)
-{
- if (data->multiline &&
- ((tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)) ||
- (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2))))
- {
- GSList *iter;
-
- for (iter = data->tags_closed; iter != NULL; iter = iter->next) {
- ParserTag *f = iter->data;
- if (f->end_index < tag->index)
- break;
- if (f->name_length == 4 && !g_strncasecmp (f->name, "font", 4)) {
- ParserTag *n = g_new0 (ParserTag, 1);
- n->name = f->name;
- n->name_length = f->name_length;
- n->index = g_utf8_strlen (data->text->str, -1);
- n->end_index = n->index + 1;
- n->format = swfdec_text_format_copy (f->format);
- data->tags_closed = g_slist_prepend (data->tags_closed, n);
- break;
- }
- }
- data->text = g_string_append_c (data->text, '\n');
- }
-
- tag->end_index = g_utf8_strlen (data->text->str, -1);
-
- data->tags_open = g_slist_remove (data->tags_open, tag);
- data->tags_closed = g_slist_prepend (data->tags_closed, tag);
-}
-
-static const char *
-swfdec_text_field_movie_html_parse_comment (ParserData *data, const char *p)
-{
- const char *end;
-
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (p != NULL, NULL);
- g_return_val_if_fail (strncmp (p, "<!--", strlen ("<!--")) == 0, NULL);
-
- end = strstr (p, "-->");
- if (end != NULL)
- end += strlen("-->");
-
- // return NULL if no end found
- return end;
-}
-
-static void
-swfdec_text_field_movie_html_tag_set_attribute (ParserData *data,
- ParserTag *tag, const char *name, int name_length, const char *value,
- int value_length)
-{
- SwfdecAsValue val;
- SwfdecAsObject *object;
-
- object = SWFDEC_AS_OBJECT (tag->format);
- SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_give_string (
- object->context, g_strndup (value, value_length)));
-
- if (tag->name_length == 10 && !g_strncasecmp (tag->name, "textformat", 10))
- {
- if (name_length == 10 && !g_strncasecmp (name, "leftmargin", 10))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_leftMargin, &val);
- }
- else if (name_length == 11 && !g_strncasecmp (name, "rightmargin", 11))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_rightMargin, &val);
- }
- else if (name_length == 6 && !g_strncasecmp (name, "indent", 6))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_indent, &val);
- }
- else if (name_length == 11 && !g_strncasecmp (name, "blockindent", 11))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_blockIndent, &val);
- }
- else if (name_length == 8 && !g_strncasecmp (name, "tabstops", 8))
- {
- // FIXME
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_tabStops, &val);
- }
- }
- else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))
- {
- if (name_length == 5 && !g_strncasecmp (name, "align", 5))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_align, &val);
- }
- }
- else if (tag->name_length == 4 && !g_strncasecmp (tag->name, "font", 4))
- {
- if (name_length == 4 && !g_strncasecmp (name, "face", 4))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_font, &val);
- }
- else if (name_length == 4 && !g_strncasecmp (name, "size", 4))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_size, &val);
- }
- else if (name_length == 5 && !g_strncasecmp (name, "color", 5))
- {
- SwfdecAsValue val_number;
-
- if (value_length != 7 || *value != '#') {
- SWFDEC_AS_VALUE_SET_NUMBER (&val_number, 0);
- } else {
- int number;
- char *tail;
-
- number = g_ascii_strtoll (value + 1, &tail, 16);
- if (tail != value + 7)
- number = 0;
- SWFDEC_AS_VALUE_SET_NUMBER (&val_number, number);
- }
-
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_color, &val_number);
- }
- else if (name_length == 13 && !g_strncasecmp (name, "letterspacing", 13))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_letterSpacing,
- &val);
- }
- // special case: Don't parse kerning
- }
- else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "a", 1))
- {
- if (name_length == 4 && !g_strncasecmp (name, "href", 4))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_url, &val);
- }
- else if (name_length == 6 && !g_strncasecmp (name, "target", 6))
- {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_target, &val);
- }
- }
-
- if (data->style_sheet &&
- ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
- (tag->name_length == 4 && !g_strncasecmp (tag->name, "span", 4)) ||
- (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))))
- {
- if (name_length == 5 && !g_strncasecmp (name, "class", 5)) {
- SwfdecTextFormat *format = swfdec_style_sheet_get_class_format (
- data->style_sheet, swfdec_as_context_give_string (data->cx,
- g_strndup (value, value_length)));
- if (format != NULL)
- swfdec_text_format_add (tag->format, format);
- }
- }
-}
-
-static const char *
-swfdec_text_field_movie_html_parse_attribute (ParserData *data, ParserTag *tag,
- const char *p)
-{
- const char *end, *name, *value;
- int name_length, value_length;
-
- g_return_val_if_fail ((*p != '>' && *p != '\0'), p);
-
- end = p + strcspn (p, "=> \r\n\t");
- if (end - p <= 0)
- return NULL; // Correct?
-
- name = p;
- name_length = end - p;
-
- p = end + strspn (end, " \r\n\t");
- if (*p != '=')
- return NULL; // FIXME: Correct?
- p = p + 1;
- p = p + strspn (p, " \r\n\t");
-
- if (*p != '"' && *p != '\'')
- return NULL; // FIXME: Correct?
-
- end = p + 1;
- do {
- end = strchr (end, *p);
- } while (end != NULL && *(end - 1) == '\\');
-
- if (end == NULL)
- return NULL; // FIXME: Correct?
-
- value = p + 1;
- value_length = end - (p + 1);
-
- if (tag != NULL) {
- swfdec_text_field_movie_html_tag_set_attribute (data, tag, name,
- name_length, value, value_length);
- }
-
- g_return_val_if_fail (end + 1 > p, NULL);
-
- return end + 1;
-}
-
-static const char *
-swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
-{
- ParserTag *tag;
- const char *name, *end;
- int name_length;
- gboolean close;
-
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (p != NULL, NULL);
- g_return_val_if_fail (*p == '<', NULL);
-
- p++;
-
- // closing tag or opening tag?
- if (*p == '/') {
- close = TRUE;
- p++;
- } else {
- close = FALSE;
- }
-
- // find the end of the name
- end = p + strcspn (p, "> \r\n\t");
-
- if (*end == '\0')
- return NULL;
-
- // don't count trailing / as part of the name if it's followed by >
- // we still act like it's a normal opening tag even if it has /
- if (*end == '>' && *(end - 1) == '/')
- end = end - 1;
-
- if (end == p) // empty name
- return NULL;
-
- name = p;
- name_length = end - p;
-
- if (close)
- {
- if (data->tags_open != NULL) {
- tag = data->tags_open->data;
- if (name_length == tag->name_length &&
- !g_strncasecmp (name, tag->name, name_length))
- swfdec_text_field_movie_html_parse_close_tag (data, tag);
- }
-
- end = strchr (end, '>');
- if (end != NULL)
- end += 1;
- }
- else
- {
- if (data->cx->version < 7 &&
- (name_length == 2 && !g_strncasecmp (name, "br", 2))) {
- data->text = g_string_append_c (data->text, '\n');
- tag = NULL;
- } else {
- SwfdecAsObject *object;
- SwfdecAsValue val;
-
- if (data->cx->version < 7 &&
- ((name_length == 1 && !g_strncasecmp (name, "p", 1)) ||
- (name_length == 2 && !g_strncasecmp (name, "li", 2))))
- {
- GSList *iter;
-
- for (iter = data->tags_open; iter != NULL; iter = iter->next) {
- ParserTag *f = iter->data;
- if ((f->name_length == 1 && !g_strncasecmp (f->name, "p", 1)) ||
- (f->name_length == 2 && !g_strncasecmp (f->name, "li", 2))) {
- data->text = g_string_append_c (data->text, '\n');
- break;
- }
- }
- }
-
- tag = g_new0 (ParserTag, 1);
- tag->name = name;
- tag->name_length = name_length;
- tag->format = SWFDEC_TEXT_FORMAT (swfdec_text_format_new (data->cx));
- tag->index = g_utf8_strlen (data->text->str, -1);
-
- data->tags_open = g_slist_prepend (data->tags_open, tag);
-
- // set format based on tag
- object = SWFDEC_AS_OBJECT (tag->format);
- SWFDEC_AS_VALUE_SET_BOOLEAN (&val, TRUE);
-
- if (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bullet, &val);
- } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "b", 1)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bold, &val);
- } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "i", 1)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_italic, &val);
- } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "u", 1)) {
- swfdec_as_object_set_variable (object, SWFDEC_AS_STR_underline, &val);
- } else if (tag->name_length == 3 && !g_strncasecmp (tag->name, "img", 3))
- {
- SWFDEC_FIXME ("IMG tag support for TextField's HTML input missing");
- }
-
- if (data->style_sheet &&
- ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
- (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)))) {
- SwfdecTextFormat *format = swfdec_style_sheet_get_tag_format (
- data->style_sheet, swfdec_as_context_give_string (data->cx,
- g_strndup (tag->name, tag->name_length)));
- if (format != NULL)
- swfdec_text_format_add (tag->format, format);
- }
- }
-
- // parse attributes
- end = end + strspn (end, " \r\n\t");
- while (*end != '\0' && *end != '>' && (*end != '/' || *(end + 1) != '>')) {
- end = swfdec_text_field_movie_html_parse_attribute (data, tag, end);
- if (end == NULL)
- break;
- end = end + strspn (end, " \r\n\t");
- }
- if (end != NULL) {
- if (*end == '/')
- end += 1;
- if (*end == '>')
- end += 1;
- }
- }
-
- return end;
-}
-
-static const char *
-swfdec_text_field_movie_html_parse_text (ParserData *data, const char *p)
-{
- const char *end;
- char *unescaped;
-
- g_return_val_if_fail (data != NULL, NULL);
- g_return_val_if_fail (p != NULL, NULL);
- g_return_val_if_fail (*p != '\0' && *p != '<', NULL);
-
- // get the text
- // if condense_white: all whitespace blocks are converted to a single space
- while (*p != '\0' && *p != '<') {
- if (data->condense_white) {
- end = p + strcspn (p, "< \n\r\t");
- } else {
- end = strchr (p, '<');
- if (end == NULL)
- end = strchr (p, '\0');
- }
-
- unescaped = swfdec_xml_unescape_len (data->cx, p, end - p);
- data->text = g_string_append (data->text, unescaped);
- g_free (unescaped);
-
- if (data->condense_white && g_ascii_isspace (*end)) {
- data->text = g_string_append_c (data->text, ' ');
- p = end + strspn (end, " \n\r\t");
- } else {
- p = end;
- }
- }
-
- return p;
-}
-
-void
-swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie *text, const char *str)
-{
- ParserData data;
- const char *p;
-
- g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
- g_return_if_fail (str != NULL);
-
- text->input = g_string_assign (text->input, "");
-
- data.cx = SWFDEC_AS_OBJECT (text)->context;
- data.multiline = (data.cx->version < 7 || text->text->multiline);
- data.condense_white = text->condense_white;
- if (text->style_sheet != NULL && SWFDEC_IS_STYLESHEET (text->style_sheet)) {
- data.style_sheet = SWFDEC_STYLESHEET (text->style_sheet);
- } else {
- data.style_sheet = NULL;
- }
- data.text = text->input;
- data.tags_open = NULL;
- data.tags_closed = NULL;
-
- p = str;
- while (p != NULL && *p != '\0') {
- if (*p == '<') {
- if (strncmp (p + 1, "!--", strlen ("!--")) == 0) {
- p = swfdec_text_field_movie_html_parse_comment (&data, p);
- } else {
- p = swfdec_text_field_movie_html_parse_tag (&data, p);
- }
- } else {
- p = swfdec_text_field_movie_html_parse_text (&data, p);
- }
- }
-
- // close remaining tags
- while (data.tags_open != NULL) {
- swfdec_text_field_movie_html_parse_close_tag (&data,
- (ParserTag *)data.tags_open->data);
- }
-
- // add parsed styles
- while (data.tags_closed != NULL) {
- ParserTag *tag = (ParserTag *)data.tags_closed->data;
-
- if (tag->index != tag->end_index) {
- swfdec_text_field_movie_set_text_format (text, tag->format, tag->index,
- tag->end_index);
- }
-
- data.tags_closed = g_slist_remove (data.tags_closed, tag);
- }
-}
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 0305799..d50bdb9 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -1248,248 +1248,6 @@ swfdec_text_field_movie_set_listen_variable (SwfdecTextFieldMovie *text,
}
}
-static const char *
-align_to_string (SwfdecTextAlign align)
-{
- switch (align) {
- case SWFDEC_TEXT_ALIGN_LEFT:
- return "LEFT";
- case SWFDEC_TEXT_ALIGN_RIGHT:
- return "RIGHT";
- case SWFDEC_TEXT_ALIGN_CENTER:
- return "CENTER";
- case SWFDEC_TEXT_ALIGN_JUSTIFY:
- return "JUSTIFY";
- default:
- g_assert_not_reached ();
- }
-}
-
-/*
- * Order of tags:
- * TEXTFORMAT / P or LI / FONT / A / B / I / U
- *
- * Order of attributes:
- * TEXTFORMAT:
- * LEFTMARGIN / RIGHTMARGIN / INDENT / LEADING / BLOCKINDENT / TABSTOPS
- * P: ALIGN
- * LI: none
- * FONT: FACE / SIZE / COLOR / LETTERSPACING / KERNING
- * A: HREF / TARGET
- * B: none
- * I: none
- * U: none
- */
-static GString *
-swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text,
- GString *string, guint start_index, guint end_index)
-{
- SwfdecTextFormat *format, *format_prev, *format_font;
- GSList *iter, *fonts, *iter_font;
- guint index_, index_prev;
- gboolean textformat, bullet, font;
- char *escaped;
-
- g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), string);
- g_return_val_if_fail (string != NULL, string);
- g_return_val_if_fail (start_index <= end_index, string);
-
- g_return_val_if_fail (text->formats != NULL, string);
- for (iter = text->formats; iter->next != NULL &&
- ((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
- iter = iter->next);
-
- index_ = start_index;
- format = ((SwfdecFormatIndex *)(iter->data))->format;
-
- if (format->left_margin != 0 || format->right_margin != 0 ||
- format->indent != 0 || format->leading != 0 ||
- format->block_indent != 0 ||
- swfdec_as_array_get_length (format->tab_stops) > 0)
- {
- string = g_string_append (string, "<TEXTFORMAT");
- if (format->left_margin) {
- g_string_append_printf (string, " LEFTMARGIN=\"%i\"",
- format->left_margin);
- }
- if (format->right_margin) {
- g_string_append_printf (string, " RIGHTMARGIN=\"%i\"",
- format->right_margin);
- }
- if (format->indent)
- g_string_append_printf (string, " INDENT=\"%i\"", format->indent);
- if (format->leading)
- g_string_append_printf (string, " LEADING=\"%i\"", format->leading);
- if (format->block_indent) {
- g_string_append_printf (string, " BLOCKINDENT=\"%i\"",
- format->block_indent);
- }
- if (swfdec_as_array_get_length (format->tab_stops) > 0) {
- SwfdecAsValue val;
- SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (format->tab_stops));
- g_string_append_printf (string, " TABSTOPS=\"%s\"",
- swfdec_as_value_to_string (SWFDEC_AS_OBJECT
- (format->tab_stops)->context, &val));
- }
- string = g_string_append (string, ">");
-
- textformat = TRUE;
- }
- else
- {
- textformat = FALSE;
- }
-
- if (format->bullet) {
- string = g_string_append (string, "<LI>");
- bullet = TRUE;
- } else {
- g_string_append_printf (string, "<P ALIGN=\"%s\">",
- align_to_string (format->align));
- bullet = FALSE;
- }
-
- // note we don't escape format->font, even thought it can have evil chars
- g_string_append_printf (string, "<FONT FACE=\"%s\" SIZE=\"%i\" COLOR=\"#%06X\" LETTERSPACING=\"%i\" KERNING=\"%i\">",
- format->font, format->size, format->color, (int)format->letter_spacing,
- (format->kerning ? 1 : 0));
- fonts = g_slist_prepend (NULL, format);
-
- if (format->url != SWFDEC_AS_STR_EMPTY)
- g_string_append_printf (string, "<A HREF=\"%s\" TARGET=\"%s\">",
- format->url, format->target);
- if (format->bold)
- string = g_string_append (string, "<B>");
- if (format->italic)
- string = g_string_append (string, "<I>");
- if (format->underline)
- string = g_string_append (string, "<U>");
-
- // special case: use <= instead of < to add some extra markup
- for (iter = iter->next;
- iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index_ <= end_index;
- iter = iter->next)
- {
- index_prev = index_;
- format_prev = format;
- index_ = ((SwfdecFormatIndex *)(iter->data))->index_;
- format = ((SwfdecFormatIndex *)(iter->data))->format;
-
- escaped = swfdec_xml_escape_len (text->input->str + index_prev,
- index_ - index_prev);
- string = g_string_append (string, escaped);
- g_free (escaped);
- escaped = NULL;
-
- // Figure out what tags need to be rewritten
- if (format->font != format_prev->font ||
- format->size != format_prev->size ||
- format->color != format_prev->color ||
- (int)format->letter_spacing != (int)format_prev->letter_spacing ||
- format->kerning != format_prev->kerning) {
- font = TRUE;
- } else if (format->url == format_prev->url &&
- format->target == format_prev->target &&
- format->bold == format_prev->bold &&
- format->italic == format_prev->italic &&
- format->underline == format_prev->underline) {
- continue;
- }
-
- // Close tags
- for (iter_font = fonts; iter_font != NULL; iter_font = iter_font->next)
- {
- format_font = (SwfdecTextFormat *)iter_font->data;
- if (format->font == format_font->font &&
- format->size == format_font->size &&
- format->color == format_font->color &&
- (int)format->letter_spacing == (int)format_font->letter_spacing &&
- format->kerning == format_font->kerning) {
- break;
- }
- }
- if (format_prev->underline)
- string = g_string_append (string, "</U>");
- if (format_prev->italic)
- string = g_string_append (string, "</I>");
- if (format_prev->bold)
- string = g_string_append (string, "</B>");
- if (format_prev->url != SWFDEC_AS_STR_EMPTY)
- string = g_string_append (string, "</A>");
- if (iter_font != NULL) {
- while (fonts != iter_font) {
- string = g_string_append (string, "</FONT>");
- fonts = g_slist_remove (fonts, fonts->data);
- }
- }
-
- // Open tags
- format_font = (SwfdecTextFormat *)fonts->data;
- if (font && (format->font != format_font->font ||
- format->size != format_font->size ||
- format->color != format_font->color ||
- (int)format->letter_spacing != (int)format_font->letter_spacing ||
- format->kerning != format_font->kerning))
- {
- fonts = g_slist_prepend (fonts, format);
-
- string = g_string_append (string, "<FONT");
- // note we don't escape format->font, even thought it can have evil chars
- if (format->font != format_font->font)
- g_string_append_printf (string, " FACE=\"%s\"", format->font);
- if (format->size != format_font->size)
- g_string_append_printf (string, " SIZE=\"%i\"", format->size);
- if (format->color != format_font->color)
- g_string_append_printf (string, " COLOR=\"#%06X\"", format->color);
- if ((int)format->letter_spacing != (int)format_font->letter_spacing) {
- g_string_append_printf (string, " LETTERSPACING=\"%i\"",
- (int)format->letter_spacing);
- }
- if (format->kerning != format_font->kerning) {
- g_string_append_printf (string, " KERNING=\"%i\"",
- (format->kerning ? 1 : 0));
- }
- string = g_string_append (string, ">");
- }
- if (format->url != SWFDEC_AS_STR_EMPTY) {
- g_string_append_printf (string, "<A HREF=\"%s\" TARGET=\"%s\">",
- format->url, format->target);
- }
- if (format->bold)
- string = g_string_append (string, "<B>");
- if (format->italic)
- string = g_string_append (string, "<I>");
- if (format->underline)
- string = g_string_append (string, "<U>");
- }
-
- escaped = swfdec_xml_escape_len (text->input->str + index_,
- end_index - index_);
- string = g_string_append (string, escaped);
- g_free (escaped);
-
- if (format->underline)
- string = g_string_append (string, "</U>");
- if (format->italic)
- string = g_string_append (string, "</I>");
- if (format->bold)
- string = g_string_append (string, "</B>");
- if (format->url != SWFDEC_AS_STR_EMPTY)
- string = g_string_append (string, "</A>");
- for (iter = fonts; iter != NULL; iter = iter->next)
- string = g_string_append (string, "</FONT>");
- g_slist_free (fonts);
- if (bullet) {
- string = g_string_append (string, "</LI>");
- } else {
- string = g_string_append (string, "</P>");
- }
- if (textformat)
- string = g_string_append (string, "</TEXTFORMAT>");
-
- return string;
-}
-
const char *
swfdec_text_field_movie_get_text (SwfdecTextFieldMovie *text)
{
@@ -1514,37 +1272,6 @@ swfdec_text_field_movie_get_text (SwfdecTextFieldMovie *text)
return swfdec_as_context_give_string (SWFDEC_AS_OBJECT (text)->context, str);
}
-const char *
-swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie *text)
-{
- const char *p, *end;
- GString *string;
-
- g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text),
- SWFDEC_AS_STR_EMPTY);
-
- if (text->input == NULL)
- return SWFDEC_AS_STR_EMPTY;
-
- string = g_string_new ("");
-
- p = text->input->str;
- while (*p != '\0') {
- end = strpbrk (p, "\r\n");
- if (end == NULL)
- end = strchr (p, '\0');
-
- string = swfdec_text_field_movie_html_text_append_paragraph (text, string,
- p - text->input->str, end - text->input->str);
-
- p = end;
- if (*p != '\0') p++;
- }
-
- return swfdec_as_context_give_string (SWFDEC_AS_OBJECT (text)->context,
- g_string_free (string, FALSE));
-}
-
void
swfdec_text_field_movie_replace_text (SwfdecTextFieldMovie *text,
guint start_index, guint end_index, const char *str)
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index d72b419..7a055b2 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -134,7 +134,6 @@ SwfdecTextFormat *swfdec_text_field_movie_get_text_format (SwfdecTextFieldMovie
guint start_index,
guint end_index);
const char * swfdec_text_field_movie_get_text (SwfdecTextFieldMovie * text);
-const char * swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie * text);
void swfdec_text_field_movie_set_listen_variable (SwfdecTextFieldMovie * text,
const char * value);
void swfdec_text_field_movie_set_listen_variable_text (SwfdecTextFieldMovie *text,
@@ -150,6 +149,7 @@ void swfdec_text_field_movie_init_properties (SwfdecAsContext * cx);
/* implemented in swfdec_html_parser.c */
void swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie * text,
const char * str);
+const char * swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie * text);
G_END_DECLS
#endif
diff --git a/libswfdec/swfdec_text_field_movie_html.c b/libswfdec/swfdec_text_field_movie_html.c
new file mode 100644
index 0000000..1a61972
--- /dev/null
+++ b/libswfdec/swfdec_text_field_movie_html.c
@@ -0,0 +1,752 @@
+/* Swfdec
+ * Copyright (C) 2007 Pekka Lampila <pekka.lampila at iki.fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "swfdec_text_field_movie.h"
+#include "swfdec_as_strings.h"
+#include "swfdec_style_sheet.h"
+#include "swfdec_xml.h"
+#include "swfdec_debug.h"
+
+/*
+ * Parsing
+ */
+typedef struct {
+ const char * name;
+ int name_length;
+ guint index;
+ guint end_index;
+ SwfdecTextFormat *format;
+} ParserTag;
+
+typedef struct {
+ SwfdecAsContext *cx;
+ gboolean multiline;
+ gboolean condense_white;
+ SwfdecStyleSheet *style_sheet;
+ GString * text;
+ GSList * tags_open;
+ GSList * tags_closed;
+} ParserData;
+
+static void
+swfdec_text_field_movie_html_parse_close_tag (ParserData *data, ParserTag *tag)
+{
+ if (data->multiline &&
+ ((tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)) ||
+ (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2))))
+ {
+ GSList *iter;
+
+ for (iter = data->tags_closed; iter != NULL; iter = iter->next) {
+ ParserTag *f = iter->data;
+ if (f->end_index < tag->index)
+ break;
+ if (f->name_length == 4 && !g_strncasecmp (f->name, "font", 4)) {
+ ParserTag *n = g_new0 (ParserTag, 1);
+ n->name = f->name;
+ n->name_length = f->name_length;
+ n->index = g_utf8_strlen (data->text->str, -1);
+ n->end_index = n->index + 1;
+ n->format = swfdec_text_format_copy (f->format);
+ data->tags_closed = g_slist_prepend (data->tags_closed, n);
+ break;
+ }
+ }
+ data->text = g_string_append_c (data->text, '\n');
+ }
+
+ tag->end_index = g_utf8_strlen (data->text->str, -1);
+
+ data->tags_open = g_slist_remove (data->tags_open, tag);
+ data->tags_closed = g_slist_prepend (data->tags_closed, tag);
+}
+
+static const char *
+swfdec_text_field_movie_html_parse_comment (ParserData *data, const char *p)
+{
+ const char *end;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (p != NULL, NULL);
+ g_return_val_if_fail (strncmp (p, "<!--", strlen ("<!--")) == 0, NULL);
+
+ end = strstr (p, "-->");
+ if (end != NULL)
+ end += strlen("-->");
+
+ // return NULL if no end found
+ return end;
+}
+
+static void
+swfdec_text_field_movie_html_tag_set_attribute (ParserData *data,
+ ParserTag *tag, const char *name, int name_length, const char *value,
+ int value_length)
+{
+ SwfdecAsValue val;
+ SwfdecAsObject *object;
+
+ object = SWFDEC_AS_OBJECT (tag->format);
+ SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_give_string (
+ object->context, g_strndup (value, value_length)));
+
+ if (tag->name_length == 10 && !g_strncasecmp (tag->name, "textformat", 10))
+ {
+ if (name_length == 10 && !g_strncasecmp (name, "leftmargin", 10))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_leftMargin, &val);
+ }
+ else if (name_length == 11 && !g_strncasecmp (name, "rightmargin", 11))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_rightMargin, &val);
+ }
+ else if (name_length == 6 && !g_strncasecmp (name, "indent", 6))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_indent, &val);
+ }
+ else if (name_length == 11 && !g_strncasecmp (name, "blockindent", 11))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_blockIndent, &val);
+ }
+ else if (name_length == 8 && !g_strncasecmp (name, "tabstops", 8))
+ {
+ // FIXME
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_tabStops, &val);
+ }
+ }
+ else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))
+ {
+ if (name_length == 5 && !g_strncasecmp (name, "align", 5))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_align, &val);
+ }
+ }
+ else if (tag->name_length == 4 && !g_strncasecmp (tag->name, "font", 4))
+ {
+ if (name_length == 4 && !g_strncasecmp (name, "face", 4))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_font, &val);
+ }
+ else if (name_length == 4 && !g_strncasecmp (name, "size", 4))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_size, &val);
+ }
+ else if (name_length == 5 && !g_strncasecmp (name, "color", 5))
+ {
+ SwfdecAsValue val_number;
+
+ if (value_length != 7 || *value != '#') {
+ SWFDEC_AS_VALUE_SET_NUMBER (&val_number, 0);
+ } else {
+ int number;
+ char *tail;
+
+ number = g_ascii_strtoll (value + 1, &tail, 16);
+ if (tail != value + 7)
+ number = 0;
+ SWFDEC_AS_VALUE_SET_NUMBER (&val_number, number);
+ }
+
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_color, &val_number);
+ }
+ else if (name_length == 13 && !g_strncasecmp (name, "letterspacing", 13))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_letterSpacing,
+ &val);
+ }
+ // special case: Don't parse kerning
+ }
+ else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "a", 1))
+ {
+ if (name_length == 4 && !g_strncasecmp (name, "href", 4))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_url, &val);
+ }
+ else if (name_length == 6 && !g_strncasecmp (name, "target", 6))
+ {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_target, &val);
+ }
+ }
+
+ if (data->style_sheet &&
+ ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
+ (tag->name_length == 4 && !g_strncasecmp (tag->name, "span", 4)) ||
+ (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1))))
+ {
+ if (name_length == 5 && !g_strncasecmp (name, "class", 5)) {
+ SwfdecTextFormat *format = swfdec_style_sheet_get_class_format (
+ data->style_sheet, swfdec_as_context_give_string (data->cx,
+ g_strndup (value, value_length)));
+ if (format != NULL)
+ swfdec_text_format_add (tag->format, format);
+ }
+ }
+}
+
+static const char *
+swfdec_text_field_movie_html_parse_attribute (ParserData *data, ParserTag *tag,
+ const char *p)
+{
+ const char *end, *name, *value;
+ int name_length, value_length;
+
+ g_return_val_if_fail ((*p != '>' && *p != '\0'), p);
+
+ end = p + strcspn (p, "=> \r\n\t");
+ if (end - p <= 0)
+ return NULL; // Correct?
+
+ name = p;
+ name_length = end - p;
+
+ p = end + strspn (end, " \r\n\t");
+ if (*p != '=')
+ return NULL; // FIXME: Correct?
+ p = p + 1;
+ p = p + strspn (p, " \r\n\t");
+
+ if (*p != '"' && *p != '\'')
+ return NULL; // FIXME: Correct?
+
+ end = p + 1;
+ do {
+ end = strchr (end, *p);
+ } while (end != NULL && *(end - 1) == '\\');
+
+ if (end == NULL)
+ return NULL; // FIXME: Correct?
+
+ value = p + 1;
+ value_length = end - (p + 1);
+
+ if (tag != NULL) {
+ swfdec_text_field_movie_html_tag_set_attribute (data, tag, name,
+ name_length, value, value_length);
+ }
+
+ g_return_val_if_fail (end + 1 > p, NULL);
+
+ return end + 1;
+}
+
+static const char *
+swfdec_text_field_movie_html_parse_tag (ParserData *data, const char *p)
+{
+ ParserTag *tag;
+ const char *name, *end;
+ int name_length;
+ gboolean close;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (p != NULL, NULL);
+ g_return_val_if_fail (*p == '<', NULL);
+
+ p++;
+
+ // closing tag or opening tag?
+ if (*p == '/') {
+ close = TRUE;
+ p++;
+ } else {
+ close = FALSE;
+ }
+
+ // find the end of the name
+ end = p + strcspn (p, "> \r\n\t");
+
+ if (*end == '\0')
+ return NULL;
+
+ // don't count trailing / as part of the name if it's followed by >
+ // we still act like it's a normal opening tag even if it has /
+ if (*end == '>' && *(end - 1) == '/')
+ end = end - 1;
+
+ if (end == p) // empty name
+ return NULL;
+
+ name = p;
+ name_length = end - p;
+
+ if (close)
+ {
+ if (data->tags_open != NULL) {
+ tag = data->tags_open->data;
+ if (name_length == tag->name_length &&
+ !g_strncasecmp (name, tag->name, name_length))
+ swfdec_text_field_movie_html_parse_close_tag (data, tag);
+ }
+
+ end = strchr (end, '>');
+ if (end != NULL)
+ end += 1;
+ }
+ else
+ {
+ if (data->cx->version < 7 &&
+ (name_length == 2 && !g_strncasecmp (name, "br", 2))) {
+ data->text = g_string_append_c (data->text, '\n');
+ tag = NULL;
+ } else {
+ SwfdecAsObject *object;
+ SwfdecAsValue val;
+
+ if (data->cx->version < 7 &&
+ ((name_length == 1 && !g_strncasecmp (name, "p", 1)) ||
+ (name_length == 2 && !g_strncasecmp (name, "li", 2))))
+ {
+ GSList *iter;
+
+ for (iter = data->tags_open; iter != NULL; iter = iter->next) {
+ ParserTag *f = iter->data;
+ if ((f->name_length == 1 && !g_strncasecmp (f->name, "p", 1)) ||
+ (f->name_length == 2 && !g_strncasecmp (f->name, "li", 2))) {
+ data->text = g_string_append_c (data->text, '\n');
+ break;
+ }
+ }
+ }
+
+ tag = g_new0 (ParserTag, 1);
+ tag->name = name;
+ tag->name_length = name_length;
+ tag->format = SWFDEC_TEXT_FORMAT (swfdec_text_format_new (data->cx));
+ tag->index = g_utf8_strlen (data->text->str, -1);
+
+ data->tags_open = g_slist_prepend (data->tags_open, tag);
+
+ // set format based on tag
+ object = SWFDEC_AS_OBJECT (tag->format);
+ SWFDEC_AS_VALUE_SET_BOOLEAN (&val, TRUE);
+
+ if (tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bullet, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "b", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_bold, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "i", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_italic, &val);
+ } else if (tag->name_length == 1 && !g_strncasecmp (tag->name, "u", 1)) {
+ swfdec_as_object_set_variable (object, SWFDEC_AS_STR_underline, &val);
+ } else if (tag->name_length == 3 && !g_strncasecmp (tag->name, "img", 3))
+ {
+ SWFDEC_FIXME ("IMG tag support for TextField's HTML input missing");
+ }
+
+ if (data->style_sheet &&
+ ((tag->name_length == 2 && !g_strncasecmp (tag->name, "li", 2)) ||
+ (tag->name_length == 1 && !g_strncasecmp (tag->name, "p", 1)))) {
+ SwfdecTextFormat *format = swfdec_style_sheet_get_tag_format (
+ data->style_sheet, swfdec_as_context_give_string (data->cx,
+ g_strndup (tag->name, tag->name_length)));
+ if (format != NULL)
+ swfdec_text_format_add (tag->format, format);
+ }
+ }
+
+ // parse attributes
+ end = end + strspn (end, " \r\n\t");
+ while (*end != '\0' && *end != '>' && (*end != '/' || *(end + 1) != '>')) {
+ end = swfdec_text_field_movie_html_parse_attribute (data, tag, end);
+ if (end == NULL)
+ break;
+ end = end + strspn (end, " \r\n\t");
+ }
+ if (end != NULL) {
+ if (*end == '/')
+ end += 1;
+ if (*end == '>')
+ end += 1;
+ }
+ }
+
+ return end;
+}
+
+static const char *
+swfdec_text_field_movie_html_parse_text (ParserData *data, const char *p)
+{
+ const char *end;
+ char *unescaped;
+
+ g_return_val_if_fail (data != NULL, NULL);
+ g_return_val_if_fail (p != NULL, NULL);
+ g_return_val_if_fail (*p != '\0' && *p != '<', NULL);
+
+ // get the text
+ // if condense_white: all whitespace blocks are converted to a single space
+ while (*p != '\0' && *p != '<') {
+ if (data->condense_white) {
+ end = p + strcspn (p, "< \n\r\t");
+ } else {
+ end = strchr (p, '<');
+ if (end == NULL)
+ end = strchr (p, '\0');
+ }
+
+ unescaped = swfdec_xml_unescape_len (data->cx, p, end - p);
+ data->text = g_string_append (data->text, unescaped);
+ g_free (unescaped);
+
+ if (data->condense_white && g_ascii_isspace (*end)) {
+ data->text = g_string_append_c (data->text, ' ');
+ p = end + strspn (end, " \n\r\t");
+ } else {
+ p = end;
+ }
+ }
+
+ return p;
+}
+
+void
+swfdec_text_field_movie_html_parse (SwfdecTextFieldMovie *text, const char *str)
+{
+ ParserData data;
+ const char *p;
+
+ g_return_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
+ g_return_if_fail (str != NULL);
+
+ text->input = g_string_assign (text->input, "");
+
+ data.cx = SWFDEC_AS_OBJECT (text)->context;
+ data.multiline = (data.cx->version < 7 || text->text->multiline);
+ data.condense_white = text->condense_white;
+ if (text->style_sheet != NULL && SWFDEC_IS_STYLESHEET (text->style_sheet)) {
+ data.style_sheet = SWFDEC_STYLESHEET (text->style_sheet);
+ } else {
+ data.style_sheet = NULL;
+ }
+ data.text = text->input;
+ data.tags_open = NULL;
+ data.tags_closed = NULL;
+
+ p = str;
+ while (p != NULL && *p != '\0') {
+ if (*p == '<') {
+ if (strncmp (p + 1, "!--", strlen ("!--")) == 0) {
+ p = swfdec_text_field_movie_html_parse_comment (&data, p);
+ } else {
+ p = swfdec_text_field_movie_html_parse_tag (&data, p);
+ }
+ } else {
+ p = swfdec_text_field_movie_html_parse_text (&data, p);
+ }
+ }
+
+ // close remaining tags
+ while (data.tags_open != NULL) {
+ swfdec_text_field_movie_html_parse_close_tag (&data,
+ (ParserTag *)data.tags_open->data);
+ }
+
+ // add parsed styles
+ while (data.tags_closed != NULL) {
+ ParserTag *tag = (ParserTag *)data.tags_closed->data;
+
+ if (tag->index != tag->end_index) {
+ swfdec_text_field_movie_set_text_format (text, tag->format, tag->index,
+ tag->end_index);
+ }
+
+ data.tags_closed = g_slist_remove (data.tags_closed, tag);
+ }
+}
+
+/*
+ * Generating
+ */
+static const char *
+swfdec_text_field_movie_html_text_align_to_string (SwfdecTextAlign align)
+{
+ switch (align) {
+ case SWFDEC_TEXT_ALIGN_LEFT:
+ return "LEFT";
+ case SWFDEC_TEXT_ALIGN_RIGHT:
+ return "RIGHT";
+ case SWFDEC_TEXT_ALIGN_CENTER:
+ return "CENTER";
+ case SWFDEC_TEXT_ALIGN_JUSTIFY:
+ return "JUSTIFY";
+ default:
+ g_assert_not_reached ();
+ }
+}
+
+/*
+ * Order of tags:
+ * TEXTFORMAT / P or LI / FONT / A / B / I / U
+ *
+ * Order of attributes:
+ * TEXTFORMAT:
+ * LEFTMARGIN / RIGHTMARGIN / INDENT / LEADING / BLOCKINDENT / TABSTOPS
+ * P: ALIGN
+ * LI: none
+ * FONT: FACE / SIZE / COLOR / LETTERSPACING / KERNING
+ * A: HREF / TARGET
+ * B: none
+ * I: none
+ * U: none
+ */
+static GString *
+swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text,
+ GString *string, guint start_index, guint end_index)
+{
+ SwfdecTextFormat *format, *format_prev, *format_font;
+ GSList *iter, *fonts, *iter_font;
+ guint index_, index_prev;
+ gboolean textformat, bullet, font;
+ char *escaped;
+
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), string);
+ g_return_val_if_fail (string != NULL, string);
+ g_return_val_if_fail (start_index <= end_index, string);
+
+ g_return_val_if_fail (text->formats != NULL, string);
+ for (iter = text->formats; iter->next != NULL &&
+ ((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
+ iter = iter->next);
+
+ index_ = start_index;
+ format = ((SwfdecFormatIndex *)(iter->data))->format;
+
+ if (format->left_margin != 0 || format->right_margin != 0 ||
+ format->indent != 0 || format->leading != 0 ||
+ format->block_indent != 0 ||
+ swfdec_as_array_get_length (format->tab_stops) > 0)
+ {
+ string = g_string_append (string, "<TEXTFORMAT");
+ if (format->left_margin) {
+ g_string_append_printf (string, " LEFTMARGIN=\"%i\"",
+ format->left_margin);
+ }
+ if (format->right_margin) {
+ g_string_append_printf (string, " RIGHTMARGIN=\"%i\"",
+ format->right_margin);
+ }
+ if (format->indent)
+ g_string_append_printf (string, " INDENT=\"%i\"", format->indent);
+ if (format->leading)
+ g_string_append_printf (string, " LEADING=\"%i\"", format->leading);
+ if (format->block_indent) {
+ g_string_append_printf (string, " BLOCKINDENT=\"%i\"",
+ format->block_indent);
+ }
+ if (swfdec_as_array_get_length (format->tab_stops) > 0) {
+ SwfdecAsValue val;
+ SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (format->tab_stops));
+ g_string_append_printf (string, " TABSTOPS=\"%s\"",
+ swfdec_as_value_to_string (SWFDEC_AS_OBJECT
+ (format->tab_stops)->context, &val));
+ }
+ string = g_string_append (string, ">");
+
+ textformat = TRUE;
+ }
+ else
+ {
+ textformat = FALSE;
+ }
+
+ if (format->bullet) {
+ string = g_string_append (string, "<LI>");
+ bullet = TRUE;
+ } else {
+ g_string_append_printf (string, "<P ALIGN=\"%s\">",
+ swfdec_text_field_movie_html_text_align_to_string (format->align));
+ bullet = FALSE;
+ }
+
+ // note we don't escape format->font, even thought it can have evil chars
+ g_string_append_printf (string, "<FONT FACE=\"%s\" SIZE=\"%i\" COLOR=\"#%06X\" LETTERSPACING=\"%i\" KERNING=\"%i\">",
+ format->font, format->size, format->color, (int)format->letter_spacing,
+ (format->kerning ? 1 : 0));
+ fonts = g_slist_prepend (NULL, format);
+
+ if (format->url != SWFDEC_AS_STR_EMPTY)
+ g_string_append_printf (string, "<A HREF=\"%s\" TARGET=\"%s\">",
+ format->url, format->target);
+ if (format->bold)
+ string = g_string_append (string, "<B>");
+ if (format->italic)
+ string = g_string_append (string, "<I>");
+ if (format->underline)
+ string = g_string_append (string, "<U>");
+
+ // special case: use <= instead of < to add some extra markup
+ for (iter = iter->next;
+ iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index_ <= end_index;
+ iter = iter->next)
+ {
+ index_prev = index_;
+ format_prev = format;
+ index_ = ((SwfdecFormatIndex *)(iter->data))->index_;
+ format = ((SwfdecFormatIndex *)(iter->data))->format;
+
+ escaped = swfdec_xml_escape_len (text->input->str + index_prev,
+ index_ - index_prev);
+ string = g_string_append (string, escaped);
+ g_free (escaped);
+ escaped = NULL;
+
+ // Figure out what tags need to be rewritten
+ if (format->font != format_prev->font ||
+ format->size != format_prev->size ||
+ format->color != format_prev->color ||
+ (int)format->letter_spacing != (int)format_prev->letter_spacing ||
+ format->kerning != format_prev->kerning) {
+ font = TRUE;
+ } else if (format->url == format_prev->url &&
+ format->target == format_prev->target &&
+ format->bold == format_prev->bold &&
+ format->italic == format_prev->italic &&
+ format->underline == format_prev->underline) {
+ continue;
+ }
+
+ // Close tags
+ for (iter_font = fonts; iter_font != NULL; iter_font = iter_font->next)
+ {
+ format_font = (SwfdecTextFormat *)iter_font->data;
+ if (format->font == format_font->font &&
+ format->size == format_font->size &&
+ format->color == format_font->color &&
+ (int)format->letter_spacing == (int)format_font->letter_spacing &&
+ format->kerning == format_font->kerning) {
+ break;
+ }
+ }
+ if (format_prev->underline)
+ string = g_string_append (string, "</U>");
+ if (format_prev->italic)
+ string = g_string_append (string, "</I>");
+ if (format_prev->bold)
+ string = g_string_append (string, "</B>");
+ if (format_prev->url != SWFDEC_AS_STR_EMPTY)
+ string = g_string_append (string, "</A>");
+ if (iter_font != NULL) {
+ while (fonts != iter_font) {
+ string = g_string_append (string, "</FONT>");
+ fonts = g_slist_remove (fonts, fonts->data);
+ }
+ }
+
+ // Open tags
+ format_font = (SwfdecTextFormat *)fonts->data;
+ if (font && (format->font != format_font->font ||
+ format->size != format_font->size ||
+ format->color != format_font->color ||
+ (int)format->letter_spacing != (int)format_font->letter_spacing ||
+ format->kerning != format_font->kerning))
+ {
+ fonts = g_slist_prepend (fonts, format);
+
+ string = g_string_append (string, "<FONT");
+ // note we don't escape format->font, even thought it can have evil chars
+ if (format->font != format_font->font)
+ g_string_append_printf (string, " FACE=\"%s\"", format->font);
+ if (format->size != format_font->size)
+ g_string_append_printf (string, " SIZE=\"%i\"", format->size);
+ if (format->color != format_font->color)
+ g_string_append_printf (string, " COLOR=\"#%06X\"", format->color);
+ if ((int)format->letter_spacing != (int)format_font->letter_spacing) {
+ g_string_append_printf (string, " LETTERSPACING=\"%i\"",
+ (int)format->letter_spacing);
+ }
+ if (format->kerning != format_font->kerning) {
+ g_string_append_printf (string, " KERNING=\"%i\"",
+ (format->kerning ? 1 : 0));
+ }
+ string = g_string_append (string, ">");
+ }
+ if (format->url != SWFDEC_AS_STR_EMPTY) {
+ g_string_append_printf (string, "<A HREF=\"%s\" TARGET=\"%s\">",
+ format->url, format->target);
+ }
+ if (format->bold)
+ string = g_string_append (string, "<B>");
+ if (format->italic)
+ string = g_string_append (string, "<I>");
+ if (format->underline)
+ string = g_string_append (string, "<U>");
+ }
+
+ escaped = swfdec_xml_escape_len (text->input->str + index_,
+ end_index - index_);
+ string = g_string_append (string, escaped);
+ g_free (escaped);
+
+ if (format->underline)
+ string = g_string_append (string, "</U>");
+ if (format->italic)
+ string = g_string_append (string, "</I>");
+ if (format->bold)
+ string = g_string_append (string, "</B>");
+ if (format->url != SWFDEC_AS_STR_EMPTY)
+ string = g_string_append (string, "</A>");
+ for (iter = fonts; iter != NULL; iter = iter->next)
+ string = g_string_append (string, "</FONT>");
+ g_slist_free (fonts);
+ if (bullet) {
+ string = g_string_append (string, "</LI>");
+ } else {
+ string = g_string_append (string, "</P>");
+ }
+ if (textformat)
+ string = g_string_append (string, "</TEXTFORMAT>");
+
+ return string;
+}
+const char *
+swfdec_text_field_movie_get_html_text (SwfdecTextFieldMovie *text)
+{
+ const char *p, *end;
+ GString *string;
+
+ g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text),
+ SWFDEC_AS_STR_EMPTY);
+
+ if (text->input == NULL)
+ return SWFDEC_AS_STR_EMPTY;
+
+ string = g_string_new ("");
+
+ p = text->input->str;
+ while (*p != '\0') {
+ end = strpbrk (p, "\r\n");
+ if (end == NULL)
+ end = strchr (p, '\0');
+
+ string = swfdec_text_field_movie_html_text_append_paragraph (text, string,
+ p - text->input->str, end - text->input->str);
+
+ p = end;
+ if (*p != '\0') p++;
+ }
+
+ return swfdec_as_context_give_string (SWFDEC_AS_OBJECT (text)->context,
+ g_string_free (string, FALSE));
+}
commit 66b35c8602f7f634bf6df0b79c4fa54594c1aa95
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 12:32:27 2007 +0200
Reorganize swfdec_text_field_movie_get_layouts code a little
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 0d3e9cd..0305799 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -349,6 +349,51 @@ swfdec_text_field_movie_free_paragraphs (SwfdecParagraph *paragraphs)
/*
* Rendering
*/
+static PangoAttrList *
+swfdec_text_field_movie_paragraph_get_attr_list (
+ const SwfdecParagraph *paragraph, guint index_,
+ const SwfdecColorTransform *trans)
+{
+ PangoAttrList *attr_list;
+ GSList *iter;
+
+ attr_list = pango_attr_list_new ();
+
+ for (iter = paragraph->attrs; iter != NULL; iter = iter->next)
+ {
+ PangoAttribute *attr;
+
+ if (((PangoAttribute *)iter->data)->end_index <= index_)
+ continue;
+
+ attr = pango_attribute_copy ((PangoAttribute *)iter->data);
+
+ if (attr->klass->type == PANGO_ATTR_FOREGROUND && trans != NULL &&
+ !swfdec_color_transform_is_identity (trans))
+ {
+ SwfdecColor color;
+ PangoColor color_p;
+
+ color_p = ((PangoAttrColor *)attr)->color;
+
+ color = SWFDEC_COLOR_COMBINE (color_p.red >> 8, color_p.green >> 8,
+ color_p.blue >> 8, 255);
+ color = swfdec_color_apply_transform (color, trans);
+
+ color_p.red = SWFDEC_COLOR_R (color) << 8;
+ color_p.green = SWFDEC_COLOR_G (color) << 8;
+ color_p.blue = SWFDEC_COLOR_B (color) << 8;
+ }
+
+ attr->start_index =
+ (attr->start_index > index_ ? attr->start_index - index_ : 0);
+ attr->end_index = attr->end_index - index_;
+ pango_attr_list_insert (attr_list, attr);
+ }
+
+ return attr_list;
+}
+
static SwfdecLayout *
swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
cairo_t *cr, const SwfdecParagraph *paragraphs,
@@ -383,7 +428,6 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
SwfdecLayout layout;
PangoLayout *playout;
PangoAttrList *attr_list;
- GSList *iter_attrs;
SwfdecBlock *block;
int width;
guint length;
@@ -440,39 +484,8 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_layout_set_tabs (playout, block->tab_stops);
// set text attributes
- attr_list = pango_attr_list_new ();
-
- for (iter_attrs = paragraphs[i].attrs; iter_attrs != NULL;
- iter_attrs = iter_attrs->next)
- {
- PangoAttribute *attr;
-
- attr = (PangoAttribute *)iter_attrs->data;
-
- if (attr->end_index <= block->index_ + skip)
- continue;
-
- attr = pango_attribute_copy (attr);
- if (attr->klass->type == PANGO_ATTR_FOREGROUND && trans != NULL &&
- !swfdec_color_transform_is_identity (trans))
- {
- SwfdecColor color;
- PangoColor pcolor;
-
- pcolor = ((PangoAttrColor *)attr)->color;
- color = SWFDEC_COLOR_COMBINE (pcolor.red >> 8, pcolor.green >> 8,
- pcolor.blue >> 8, 255);
- color = swfdec_color_apply_transform (color, trans);
- pcolor.red = SWFDEC_COLOR_R (color) << 8;
- pcolor.green = SWFDEC_COLOR_G (color) << 8;
- pcolor.blue = SWFDEC_COLOR_B (color) << 8;
- ((PangoAttrColor *)attr)->color = pcolor;
- }
- attr->start_index = (attr->start_index > block->index_ + skip ?
- attr->start_index - (block->index_ + skip) : 0);
- attr->end_index = attr->end_index - (block->index_ + skip);
- pango_attr_list_insert (attr_list, attr);
- }
+ attr_list = swfdec_text_field_movie_paragraph_get_attr_list (
+ ¶graphs[i], block->index_ + skip, trans);
pango_layout_set_attributes (playout, attr_list);
pango_attr_list_unref (attr_list);
commit ca2169b64aa732c7698b192e30e46ffc875a3937
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 12:08:06 2007 +0200
Some code formatting fixes in swfdec_text_format.c
diff --git a/libswfdec/swfdec_text_format.c b/libswfdec/swfdec_text_format.c
index 7006980..ea1c675 100644
--- a/libswfdec/swfdec_text_format.c
+++ b/libswfdec/swfdec_text_format.c
@@ -378,51 +378,48 @@ swfdec_text_format_do_set_align (SwfdecAsContext *cx, SwfdecAsObject *object,
}
static void
-swfdec_text_format_do_get_block_indent (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_get_block_indent (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object,
- PROP_BLOCK_INDENT, ret);
+ swfdec_text_format_get_integer (object, PROP_BLOCK_INDENT, ret);
}
static void
-swfdec_text_format_do_set_block_indent (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_set_block_indent (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object,
- PROP_BLOCK_INDENT, argc, argv, cx->version >= 8);
+ swfdec_text_format_set_integer (object, PROP_BLOCK_INDENT, argc, argv,
+ cx->version >= 8);
}
static void
swfdec_text_format_do_get_bold (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_BOLD,
- ret);
+ swfdec_text_format_get_boolean (object, PROP_BOLD, ret);
}
static void
swfdec_text_format_do_set_bold (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_BOLD,
- argc, argv);
+ swfdec_text_format_set_boolean (object, PROP_BOLD, argc, argv);
}
static void
swfdec_text_format_do_get_bullet (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_BULLET,
- ret);
+ swfdec_text_format_get_boolean (object, PROP_BULLET, ret);
}
static void
swfdec_text_format_do_set_bullet (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_BULLET,
- argc, argv);
+ swfdec_text_format_set_boolean (object, PROP_BULLET, argc, argv);
}
static void
@@ -456,7 +453,6 @@ swfdec_text_format_do_set_color (SwfdecAsContext *cx, SwfdecAsObject *object,
if (argc < 1)
return;
-
if (SWFDEC_AS_VALUE_IS_UNDEFINED (&argv[0]) ||
SWFDEC_AS_VALUE_IS_NULL (&argv[0])) {
swfdec_text_format_mark_unset (format, PROP_COLOR);
@@ -540,32 +536,29 @@ static void
swfdec_text_format_do_get_font (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_string (object, PROP_FONT,
- ret);
+ swfdec_text_format_get_string (object, PROP_FONT, ret);
}
static void
swfdec_text_format_do_set_font (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_string (object, PROP_FONT,
- argc, argv);
+ swfdec_text_format_set_string (object, PROP_FONT, argc, argv);
}
static void
swfdec_text_format_do_get_indent (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_INDENT,
- ret);
+ swfdec_text_format_get_integer (object, PROP_INDENT, ret);
}
static void
swfdec_text_format_do_set_indent (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_INDENT,
- argc, argv, cx->version >= 8);
+ swfdec_text_format_set_integer (object, PROP_INDENT, argc, argv,
+ cx->version >= 8);
}
static void
@@ -579,56 +572,52 @@ static void
swfdec_text_format_do_set_italic (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_ITALIC,
- argc, argv);
+ swfdec_text_format_set_boolean (object, PROP_ITALIC, argc, argv);
}
static void
swfdec_text_format_do_get_kerning (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object, PROP_KERNING,
- ret);
+ swfdec_text_format_get_boolean (object, PROP_KERNING, ret);
}
static void
swfdec_text_format_do_set_kerning (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object, PROP_KERNING,
- argc, argv);
+ swfdec_text_format_set_boolean (object, PROP_KERNING, argc, argv);
}
static void
swfdec_text_format_do_get_leading (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_LEADING,
- ret);
+ swfdec_text_format_get_integer (object, PROP_LEADING, ret);
}
static void
swfdec_text_format_do_set_leading (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_LEADING,
- argc, argv, cx->version >= 8);
+ swfdec_text_format_set_integer (object, PROP_LEADING, argc, argv,
+ cx->version >= 8);
}
static void
-swfdec_text_format_do_get_left_margin (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_get_left_margin (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object,
- PROP_LEFT_MARGIN, ret);
+ swfdec_text_format_get_integer (object, PROP_LEFT_MARGIN, ret);
}
static void
-swfdec_text_format_do_set_left_margin (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_set_left_margin (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object,
- PROP_LEFT_MARGIN, argc, argv, FALSE);
+ swfdec_text_format_set_integer (object, PROP_LEFT_MARGIN, argc, argv, FALSE);
}
static void
@@ -642,9 +631,7 @@ swfdec_text_format_do_get_letter_spacing (SwfdecAsContext *cx,
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format,
- PROP_LETTER_SPACING))
- {
+ if (!swfdec_text_format_is_set (format, PROP_LETTER_SPACING)) {
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
}
@@ -686,40 +673,40 @@ swfdec_text_format_do_set_letter_spacing (SwfdecAsContext *cx,
}
static void
-swfdec_text_format_do_get_right_margin (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_get_right_margin (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object,
- PROP_RIGHT_MARGIN, ret);
+ swfdec_text_format_get_integer (object, PROP_RIGHT_MARGIN, ret);
}
static void
-swfdec_text_format_do_set_right_margin (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_set_right_margin (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object,
- PROP_RIGHT_MARGIN, argc, argv, FALSE);
+ swfdec_text_format_set_integer (object, PROP_RIGHT_MARGIN, argc, argv,
+ FALSE);
}
static void
swfdec_text_format_do_get_size (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_integer (object, PROP_SIZE,
- ret);
+ swfdec_text_format_get_integer (object, PROP_SIZE, ret);
}
static void
swfdec_text_format_do_set_size (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_integer (object, PROP_SIZE,
- argc, argv, TRUE);
+ swfdec_text_format_set_integer (object, PROP_SIZE, argc, argv, TRUE);
}
static void
-swfdec_text_format_do_get_tab_stops (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_get_tab_stops (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
SwfdecTextFormat *format;
@@ -727,9 +714,7 @@ swfdec_text_format_do_get_tab_stops (SwfdecAsContext *cx, SwfdecAsObject *object
return;
format = SWFDEC_TEXT_FORMAT (object);
- if (!swfdec_text_format_is_set (format,
- PROP_TAB_STOPS))
- {
+ if (!swfdec_text_format_is_set (format, PROP_TAB_STOPS)) {
SWFDEC_AS_VALUE_SET_NULL (ret);
return;
}
@@ -739,8 +724,9 @@ swfdec_text_format_do_get_tab_stops (SwfdecAsContext *cx, SwfdecAsObject *object
}
static void
-swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
SwfdecTextFormat *format;
@@ -773,9 +759,7 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx, SwfdecAsObject *object
array = SWFDEC_AS_ARRAY (SWFDEC_AS_VALUE_GET_OBJECT (&argv[0]));
len = swfdec_as_array_get_length (array);
- if (!swfdec_text_format_is_set (format,
- PROP_TAB_STOPS))
- {
+ if (!swfdec_text_format_is_set (format, PROP_TAB_STOPS)) {
// special case, if we have null and array is empty, keep it at null
if (len == 0)
return;
@@ -818,8 +802,7 @@ swfdec_text_format_do_set_tab_stops (SwfdecAsContext *cx, SwfdecAsObject *object
}
}
}
- else if (swfdec_text_format_is_set (format,
- PROP_TAB_STOPS))
+ else if (swfdec_text_format_is_set (format, PROP_TAB_STOPS))
{
swfdec_as_array_set_length (format->tab_stops, 0);
swfdec_text_format_mark_set (format,
@@ -831,32 +814,30 @@ static void
swfdec_text_format_do_get_target (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_get_string (object, PROP_TARGET,
- ret);
+ swfdec_text_format_get_string (object, PROP_TARGET, ret);
}
static void
swfdec_text_format_do_set_target (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_string (object, PROP_TARGET,
- argc, argv);
+ swfdec_text_format_set_string (object, PROP_TARGET, argc, argv);
}
static void
-swfdec_text_format_do_get_underline (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_get_underline (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_get_boolean (object,
- PROP_UNDERLINE, ret);
+ swfdec_text_format_get_boolean (object, PROP_UNDERLINE, ret);
}
static void
-swfdec_text_format_do_set_underline (SwfdecAsContext *cx, SwfdecAsObject *object,
- guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
+swfdec_text_format_do_set_underline (SwfdecAsContext *cx,
+ SwfdecAsObject *object, guint argc, SwfdecAsValue *argv,
+ SwfdecAsValue *ret)
{
- swfdec_text_format_set_boolean (object,
- PROP_UNDERLINE, argc, argv);
+ swfdec_text_format_set_boolean (object, PROP_UNDERLINE, argc, argv);
}
static void
@@ -870,8 +851,7 @@ static void
swfdec_text_format_do_set_url (SwfdecAsContext *cx, SwfdecAsObject *object,
guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)
{
- swfdec_text_format_set_string (object, PROP_URL, argc,
- argv);
+ swfdec_text_format_set_string (object, PROP_URL, argc, argv);
}
void
@@ -1155,11 +1135,13 @@ swfdec_text_format_init_properties (SwfdecAsContext *cx)
swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_size,
swfdec_text_format_do_get_size, swfdec_text_format_do_set_size);
swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_tabStops,
- swfdec_text_format_do_get_tab_stops, swfdec_text_format_do_set_tab_stops);
+ swfdec_text_format_do_get_tab_stops,
+ swfdec_text_format_do_set_tab_stops);
swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_target,
swfdec_text_format_do_get_target, swfdec_text_format_do_set_target);
swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_underline,
- swfdec_text_format_do_get_underline, swfdec_text_format_do_set_underline);
+ swfdec_text_format_do_get_underline,
+ swfdec_text_format_do_set_underline);
swfdec_as_object_add_native_variable (proto, SWFDEC_AS_STR_url,
swfdec_text_format_do_get_url, swfdec_text_format_do_set_url);
}
commit 2b1fd2235f7b8b3fe1d9740e11a2052c8191c866
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 10:42:18 2007 +0200
Some code cleanups to TextField
diff --git a/libswfdec/swfdec_text_field.c b/libswfdec/swfdec_text_field.c
index a11e2f1..77fa7ff 100644
--- a/libswfdec/swfdec_text_field.c
+++ b/libswfdec/swfdec_text_field.c
@@ -43,7 +43,8 @@ static SwfdecMovie *
swfdec_text_field_create_movie (SwfdecGraphic *graphic, gsize *size)
{
SwfdecTextField *text = SWFDEC_TEXT_FIELD (graphic);
- SwfdecTextFieldMovie *ret = g_object_new (SWFDEC_TYPE_TEXT_FIELD_MOVIE, NULL);
+ SwfdecTextFieldMovie *ret =
+ g_object_new (SWFDEC_TYPE_TEXT_FIELD_MOVIE, NULL);
ret->text = text;
@@ -57,9 +58,9 @@ swfdec_text_field_dispose (GObject *object)
{
SwfdecTextField *text = SWFDEC_TEXT_FIELD (object);
- if (text->text_input != NULL) {
- g_free (text->text_input);
- text->text_input = NULL;
+ if (text->input != NULL) {
+ g_free (text->input);
+ text->input = NULL;
}
if (text->variable != NULL) {
g_free (text->variable);
@@ -109,6 +110,7 @@ tag_func_define_edit_text (SwfdecSwfDecoder * s, guint tag)
SWFDEC_GRAPHIC (text)->extents.x0, SWFDEC_GRAPHIC (text)->extents.y0,
SWFDEC_GRAPHIC (text)->extents.x1, SWFDEC_GRAPHIC (text)->extents.y1);
swfdec_bits_syncbits (b);
+
has_text = swfdec_bits_getbit (b);
text->word_wrap = swfdec_bits_getbit (b);
text->multiline = swfdec_bits_getbit (b);
@@ -128,6 +130,7 @@ tag_func_define_edit_text (SwfdecSwfDecoder * s, guint tag)
text->embed_fonts = swfdec_bits_getbit (b);
if (text->embed_fonts)
SWFDEC_FIXME ("Using embed fonts in TextField is not supported");
+
if (has_font) {
SwfdecCharacter *font;
@@ -142,6 +145,7 @@ tag_func_define_edit_text (SwfdecSwfDecoder * s, guint tag)
text->size = swfdec_bits_get_u16 (b);
SWFDEC_LOG (" size = %u", text->size);
}
+
if (has_color) {
text->color = swfdec_bits_get_rgba (b);
SWFDEC_LOG (" color = %u", text->color);
@@ -149,11 +153,13 @@ tag_func_define_edit_text (SwfdecSwfDecoder * s, guint tag)
SWFDEC_WARNING ("FIXME: figure out default color");
text->color = SWFDEC_COLOR_COMBINE (255, 255, 255, 255);
}
+
if (has_max_length) {
text->max_chars = swfdec_bits_get_u16 (b);
} else {
text->max_chars = 0;
}
+
if (has_layout) {
guint align = swfdec_bits_get_u8 (b);
switch (align) {
@@ -178,13 +184,15 @@ tag_func_define_edit_text (SwfdecSwfDecoder * s, guint tag)
text->indent = swfdec_bits_get_u16 (b);
text->leading = swfdec_bits_get_s16 (b);
}
+
text->variable = swfdec_bits_get_string (b);
if (text->variable && *text->variable == 0) {
g_free (text->variable);
text->variable = NULL;
}
+
if (has_text)
- text->text_input = swfdec_bits_get_string (b);
+ text->input = swfdec_bits_get_string (b);
return SWFDEC_STATUS_OK;
}
diff --git a/libswfdec/swfdec_text_field.h b/libswfdec/swfdec_text_field.h
index 0ecf9bf..1bde7bb 100644
--- a/libswfdec/swfdec_text_field.h
+++ b/libswfdec/swfdec_text_field.h
@@ -67,7 +67,7 @@ struct _SwfdecTextField
gboolean background;
/* only to be passed to the movie object */
- char * text_input;
+ char * input;
char * variable;
char * font;
guint size;
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 72b5e31..0d3e9cd 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -41,7 +41,7 @@ static void
swfdec_text_field_movie_update_extents (SwfdecMovie *movie,
SwfdecRect *extents)
{
- swfdec_rect_union (extents, extents,
+ swfdec_rect_union (extents, extents,
&SWFDEC_GRAPHIC (SWFDEC_TEXT_FIELD_MOVIE (movie)->text)->extents);
}
@@ -49,14 +49,13 @@ static void
swfdec_text_paragraph_add_attribute (SwfdecParagraph *paragraph,
PangoAttribute *attr)
{
- paragraph->attrs = g_list_append (paragraph->attrs,
- pango_attribute_copy (attr));
- pango_attr_list_insert (paragraph->attrs_list, attr);
+ paragraph->attrs =
+ g_slist_prepend (paragraph->attrs, pango_attribute_copy (attr));
}
static void
-swfdec_text_paragraph_add_block_attributes (SwfdecParagraph *paragraph,
- int index_, SwfdecTextFormat *format)
+swfdec_text_paragraph_add_block (SwfdecParagraph *paragraph, int index_,
+ SwfdecTextFormat *format)
{
gint32 length, i;
SwfdecBlock *block;
@@ -98,7 +97,7 @@ swfdec_text_paragraph_add_block_attributes (SwfdecParagraph *paragraph,
SWFDEC_AS_VALUE_GET_NUMBER (&val) * 20);
}
- paragraph->blocks = g_list_append (paragraph->blocks, block);
+ paragraph->blocks = g_slist_prepend (paragraph->blocks, block);
}
static void
@@ -122,14 +121,13 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
paragraph->blocks = NULL;
paragraph->attrs = NULL;
- paragraph->attrs_list = pango_attr_list_new ();
if (paragraph->text_length == 0)
return;
g_assert (text->formats != NULL);
for (iter = text->formats; iter->next != NULL &&
- ((SwfdecFormatIndex *)(iter->next->data))->index <= start_index;
+ ((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
iter = iter->next);
index_ = start_index;
@@ -140,7 +138,7 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
paragraph->indent = format->indent * 20 * PANGO_SCALE;
// Add new block
- swfdec_text_paragraph_add_block_attributes (paragraph, 0, format);
+ swfdec_text_paragraph_add_block (paragraph, 0, format);
// Open attributes
attr_bold = pango_attr_weight_new (
@@ -173,11 +171,11 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
attr_underline->start_index = 0;
for (iter = iter->next;
- iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index < end_index;
+ iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index_ < end_index;
iter = iter->next)
{
format_prev = format;
- index_ = ((SwfdecFormatIndex *)(iter->data))->index;
+ index_ = ((SwfdecFormatIndex *)(iter->data))->index_;
format = ((SwfdecFormatIndex *)(iter->data))->format;
// Add new block if necessary
@@ -188,8 +186,8 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
format_prev->block_indent != format->block_indent ||
format_prev->left_margin != format->left_margin)
{
- swfdec_text_paragraph_add_block_attributes (paragraph,
- index_ - start_index, format);
+ swfdec_text_paragraph_add_block (paragraph, index_ - start_index,
+ format);
}
// Change attributes if necessary
@@ -244,8 +242,8 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
attr_size->end_index = index_ - start_index;
swfdec_text_paragraph_add_attribute (paragraph, attr_size);
- attr_size =
- pango_attr_size_new_absolute (MAX (1, format->size) * 20 * PANGO_SCALE);
+ attr_size = pango_attr_size_new_absolute (
+ MAX (1, format->size) * 20 * PANGO_SCALE);
attr_size->start_index = index_ - start_index;
}
@@ -287,54 +285,47 @@ swfdec_text_field_movie_generate_paragraph (SwfdecTextFieldMovie *text,
attr_underline->end_index = end_index - start_index;
swfdec_text_paragraph_add_attribute (paragraph, attr_underline);
attr_underline = NULL;
+
+ // reverse blocks since we use prepend to add them
+ paragraph->blocks = g_slist_reverse (paragraph->blocks);
}
static SwfdecParagraph *
swfdec_text_field_movie_get_paragraphs (SwfdecTextFieldMovie *text, int *num)
{
- SwfdecParagraph *paragraphs;
+ GArray *paragraphs;
+ SwfdecParagraph paragraph;
const char *p, *end;
- int count, i;
g_assert (SWFDEC_IS_TEXT_FIELD_MOVIE (text));
- count = 0;
- p = text->input->str;
- while (p != NULL && *p != '\0') {
- count++;
- p = strpbrk (p, "\r\n");
- if (p != NULL) p++;
- }
-
- paragraphs = g_new0 (SwfdecParagraph, count + 1);
- if (num != NULL)
- *num = count;
+ paragraphs = g_array_new (TRUE, TRUE, sizeof (SwfdecParagraph));
- i = 0;
p = text->input->str;
- while (*p != '\0') {
- g_assert (i < count);
+ while (*p != '\0')
+ {
end = strpbrk (p, "\r\n");
if (end == NULL)
end = strchr (p, '\0');
- swfdec_text_field_movie_generate_paragraph (text, ¶graphs[i],
+ swfdec_text_field_movie_generate_paragraph (text, ¶graph,
p - text->input->str, end - text->input->str);
+ paragraphs = g_array_append_val (paragraphs, paragraph);
p = end;
if (*p != '\0') p++;
-
- i++;
}
- g_assert (i == count);
- return paragraphs;
+ if (num != NULL)
+ *num = paragraphs->len;
+
+ return (SwfdecParagraph *)g_array_free (paragraphs, FALSE);
}
static void
swfdec_text_field_movie_free_paragraphs (SwfdecParagraph *paragraphs)
{
- GList *iter;
+ GSList *iter;
int i;
g_return_if_fail (paragraphs != NULL);
@@ -345,15 +336,12 @@ swfdec_text_field_movie_free_paragraphs (SwfdecParagraph *paragraphs)
pango_tab_array_free (((SwfdecBlock *)(iter->data))->tab_stops);
g_free (iter->data);
}
- g_list_free (paragraphs[i].blocks);
+ g_slist_free (paragraphs[i].blocks);
for (iter = paragraphs[i].attrs; iter != NULL; iter = iter->next) {
pango_attribute_destroy ((PangoAttribute *)(iter->data));
}
- g_list_free (paragraphs[i].attrs);
-
- if (paragraphs[i].attrs_list != NULL)
- pango_attr_list_unref (paragraphs[i].attrs_list);
+ g_slist_free (paragraphs[i].attrs);
}
g_free (paragraphs);
}
@@ -386,7 +374,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
for (i = 0; paragraphs[i].text != NULL; i++)
{
- GList *iter;
+ GSList *iter;
guint skip;
skip = 0;
@@ -394,9 +382,11 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
{
SwfdecLayout layout;
PangoLayout *playout;
+ PangoAttrList *attr_list;
+ GSList *iter_attrs;
+ SwfdecBlock *block;
int width;
guint length;
- SwfdecBlock *block;
block = (SwfdecBlock *)iter->data;
if (iter->next != NULL) {
@@ -415,7 +405,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
playout = layout.layout = pango_cairo_create_layout (cr);
// set rendering position
- layout.render_offset_x = block->left_margin + block->block_indent;
+ layout.offset_x = block->left_margin + block->block_indent;
width = SWFDEC_MOVIE (text)->original_extents.x1 -
SWFDEC_MOVIE (text)->original_extents.x0 - block->left_margin -
block->right_margin - block->block_indent;
@@ -424,7 +414,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
// limit negative indent to not go over leftMargin + blockIndent
int indent = MAX (paragraphs[i].indent / PANGO_SCALE,
-(block->left_margin + block->block_indent));
- layout.render_offset_x += indent;
+ layout.offset_x += indent;
width += -indent;
}
@@ -450,50 +440,41 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_layout_set_tabs (playout, block->tab_stops);
// set text attributes
- if (block->index_ > 0 ||
- (trans != NULL && !swfdec_color_transform_is_identity (trans)))
+ attr_list = pango_attr_list_new ();
+
+ for (iter_attrs = paragraphs[i].attrs; iter_attrs != NULL;
+ iter_attrs = iter_attrs->next)
{
- PangoAttrList *attr_list;
- GList *iter_attrs;
+ PangoAttribute *attr;
+
+ attr = (PangoAttribute *)iter_attrs->data;
- attr_list = pango_attr_list_new ();
+ if (attr->end_index <= block->index_ + skip)
+ continue;
- for (iter_attrs = paragraphs[i].attrs; iter_attrs != NULL;
- iter_attrs = iter_attrs->next)
+ attr = pango_attribute_copy (attr);
+ if (attr->klass->type == PANGO_ATTR_FOREGROUND && trans != NULL &&
+ !swfdec_color_transform_is_identity (trans))
{
- PangoAttribute *attr;
-
- attr = (PangoAttribute *)iter_attrs->data;
-
- if (attr->end_index <= block->index_ + skip)
- continue;
-
- attr = pango_attribute_copy (attr);
- if (attr->klass->type == PANGO_ATTR_FOREGROUND && trans != NULL &&
- !swfdec_color_transform_is_identity (trans))
- {
- SwfdecColor color;
- PangoColor pcolor;
-
- pcolor = ((PangoAttrColor *)attr)->color;
- color = SWFDEC_COLOR_COMBINE (pcolor.red >> 8, pcolor.green >> 8,
- pcolor.blue >> 8, 255);
- color = swfdec_color_apply_transform (color, trans);
- pcolor.red = SWFDEC_COLOR_R (color) << 8;
- pcolor.green = SWFDEC_COLOR_G (color) << 8;
- pcolor.blue = SWFDEC_COLOR_B (color) << 8;
- ((PangoAttrColor *)attr)->color = pcolor;
- }
- attr->start_index = (attr->start_index > block->index_ + skip ?
- attr->start_index - (block->index_ + skip) : 0);
- attr->end_index = attr->end_index - (block->index_ + skip);
- pango_attr_list_insert (attr_list, attr);
+ SwfdecColor color;
+ PangoColor pcolor;
+
+ pcolor = ((PangoAttrColor *)attr)->color;
+ color = SWFDEC_COLOR_COMBINE (pcolor.red >> 8, pcolor.green >> 8,
+ pcolor.blue >> 8, 255);
+ color = swfdec_color_apply_transform (color, trans);
+ pcolor.red = SWFDEC_COLOR_R (color) << 8;
+ pcolor.green = SWFDEC_COLOR_G (color) << 8;
+ pcolor.blue = SWFDEC_COLOR_B (color) << 8;
+ ((PangoAttrColor *)attr)->color = pcolor;
}
- pango_layout_set_attributes (playout, attr_list);
- pango_attr_list_unref (attr_list);
- } else {
- pango_layout_set_attributes (playout, paragraphs[i].attrs_list);
+ attr->start_index = (attr->start_index > block->index_ + skip ?
+ attr->start_index - (block->index_ + skip) : 0);
+ attr->end_index = attr->end_index - (block->index_ + skip);
+ pango_attr_list_insert (attr_list, attr);
}
+ pango_layout_set_attributes (playout, attr_list);
+ pango_attr_list_unref (attr_list);
pango_layout_set_text (playout,
paragraphs[i].text + block->index_ + skip,
@@ -521,9 +502,9 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
pango_layout_get_pixel_size (playout, &line_width, 0);
if (line_width < width) {
if (block->align == PANGO_ALIGN_RIGHT) {
- layout.render_offset_x += width - line_width;
+ layout.offset_x += width - line_width;
} else if (block->align == PANGO_ALIGN_CENTER) {
- layout.render_offset_x += (width - line_width) / 2;
+ layout.offset_x += (width - line_width) / 2;
} else {
g_assert_not_reached ();
}
@@ -534,7 +515,7 @@ swfdec_text_field_movie_get_layouts (SwfdecTextFieldMovie *text, int *num,
}
pango_layout_get_pixel_size (playout, &layout.width, &layout.height);
- layout.width += layout.render_offset_x + block->right_margin;
+ layout.width += layout.offset_x + block->right_margin;
layout.height += block->leading / PANGO_SCALE;
layouts = g_array_append_val (layouts, layout);
@@ -655,15 +636,15 @@ swfdec_text_field_movie_render (SwfdecMovie *movie, cairo_t *cr,
break;
if (y + rect.y + rect.height < limit.y0 ||
- x + layout->render_offset_x + rect.x > limit.x1 ||
- x + layout->render_offset_x + rect.x + rect.width < limit.x0)
+ x + layout->offset_x + rect.x > limit.x1 ||
+ x + layout->offset_x + rect.x + rect.width < limit.x0)
continue;
- cairo_rel_move_to (cr, layout->render_offset_x + rect.x,
+ cairo_rel_move_to (cr, layout->offset_x + rect.x,
pango_layout_iter_get_baseline (iter_line) / PANGO_SCALE - skipped);
line = pango_layout_iter_get_line_readonly (iter_line);
pango_cairo_show_layout_line (cr, line);
- cairo_rel_move_to (cr, -(layout->render_offset_x + rect.x),
+ cairo_rel_move_to (cr, -(layout->offset_x + rect.x),
-(pango_layout_iter_get_baseline (iter_line) / PANGO_SCALE - skipped));
} while (pango_layout_iter_next_line (iter_line));
@@ -951,9 +932,9 @@ swfdec_text_field_movie_init_movie (SwfdecMovie *movie)
text->background_color = SWFDEC_COLOR_COMBINE (255, 255, 255, 255);
// text
- if (text->text->text_input != NULL) {
+ if (text->text->input != NULL) {
swfdec_text_field_movie_set_text (text,
- swfdec_as_context_get_string (cx, text->text->text_input),
+ swfdec_as_context_get_string (cx, text->text->input),
text->text->html);
} else {
swfdec_text_field_movie_set_text (text, SWFDEC_AS_STR_EMPTY,
@@ -1036,11 +1017,11 @@ swfdec_text_field_movie_set_text_format (SwfdecTextFieldMovie *text,
g_assert (text->formats != NULL);
g_assert (text->formats->data != NULL);
- g_assert (((SwfdecFormatIndex *)text->formats->data)->index == 0);
+ g_assert (((SwfdecFormatIndex *)text->formats->data)->index_ == 0);
findex = NULL;
for (iter = text->formats; iter != NULL &&
- ((SwfdecFormatIndex *)iter->data)->index < end_index;
+ ((SwfdecFormatIndex *)iter->data)->index_ < end_index;
iter = next)
{
findex_prev = findex;
@@ -1048,7 +1029,7 @@ swfdec_text_field_movie_set_text_format (SwfdecTextFieldMovie *text,
findex = iter->data;
if (iter->next != NULL) {
findex_end_index =
- ((SwfdecFormatIndex *)iter->next->data)->index;
+ ((SwfdecFormatIndex *)iter->next->data)->index_;
} else {
findex_end_index = g_utf8_strlen (text->input->str, -1);
}
@@ -1061,15 +1042,15 @@ swfdec_text_field_movie_set_text_format (SwfdecTextFieldMovie *text,
if (findex_end_index > end_index) {
findex_new = g_new (SwfdecFormatIndex, 1);
- findex_new->index = end_index;
+ findex_new->index_ = end_index;
findex_new->format = swfdec_text_format_copy (findex->format);
iter = g_slist_insert (iter, findex_new, 1);
}
- if (findex->index < start_index) {
+ if (findex->index_ < start_index) {
findex_new = g_new (SwfdecFormatIndex, 1);
- findex_new->index = start_index;
+ findex_new->index_ = start_index;
findex_new->format = swfdec_text_format_copy (findex->format);
swfdec_text_format_add (findex_new->format, format);
@@ -1091,7 +1072,7 @@ swfdec_text_field_movie_set_text_format (SwfdecTextFieldMovie *text,
swfdec_text_format_equal (findex->format,
((SwfdecFormatIndex *)next->data)->format))
{
- ((SwfdecFormatIndex *)next->data)->index = findex->index;
+ ((SwfdecFormatIndex *)next->data)->index_ = findex->index_;
text->formats = g_slist_remove (text->formats, findex);
findex = findex_prev;
}
@@ -1116,15 +1097,15 @@ swfdec_text_field_movie_get_text_format (SwfdecTextFieldMovie *text,
g_assert (text->formats != NULL);
g_assert (text->formats->data != NULL);
- g_assert (((SwfdecFormatIndex *)text->formats->data)->index == 0);
+ g_assert (((SwfdecFormatIndex *)text->formats->data)->index_ == 0);
format = NULL;
for (iter = text->formats; iter != NULL &&
- ((SwfdecFormatIndex *)iter->data)->index < end_index;
+ ((SwfdecFormatIndex *)iter->data)->index_ < end_index;
iter = iter->next)
{
if (iter->next != NULL &&
- ((SwfdecFormatIndex *)iter->next->data)->index <= start_index)
+ ((SwfdecFormatIndex *)iter->next->data)->index_ <= start_index)
continue;
if (format == NULL) {
@@ -1302,7 +1283,7 @@ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text,
g_return_val_if_fail (text->formats != NULL, string);
for (iter = text->formats; iter->next != NULL &&
- ((SwfdecFormatIndex *)(iter->next->data))->index <= start_index;
+ ((SwfdecFormatIndex *)(iter->next->data))->index_ <= start_index;
iter = iter->next);
index_ = start_index;
@@ -1373,12 +1354,12 @@ swfdec_text_field_movie_html_text_append_paragraph (SwfdecTextFieldMovie *text,
// special case: use <= instead of < to add some extra markup
for (iter = iter->next;
- iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index <= end_index;
+ iter != NULL && ((SwfdecFormatIndex *)(iter->data))->index_ <= end_index;
iter = iter->next)
{
index_prev = index_;
format_prev = format;
- index_ = ((SwfdecFormatIndex *)(iter->data))->index;
+ index_ = ((SwfdecFormatIndex *)(iter->data))->index_;
format = ((SwfdecFormatIndex *)(iter->data))->format;
escaped = swfdec_xml_escape_len (text->input->str + index_prev,
@@ -1575,10 +1556,10 @@ swfdec_text_field_movie_replace_text (SwfdecTextFieldMovie *text,
{
findex = iter->data;
- if (findex->index >= start_index) {
+ if (findex->index_ >= start_index) {
if (end_index == (guint) g_utf8_strlen (text->input->str, -1) ||
(iter->next != NULL &&
- ((SwfdecFormatIndex *)iter->next->data)->index <= end_index))
+ ((SwfdecFormatIndex *)iter->next->data)->index_ <= end_index))
{
g_free (iter->data);
text->formats = g_slist_remove (text->formats, iter->data);
@@ -1586,9 +1567,9 @@ swfdec_text_field_movie_replace_text (SwfdecTextFieldMovie *text,
}
else
{
- findex->index += strlen (str) - (end_index - start_index);
+ findex->index_ += strlen (str) - (end_index - start_index);
if (first) {
- findex->index -= strlen (str);
+ findex->index_ -= strlen (str);
first = FALSE;
}
}
@@ -1601,7 +1582,7 @@ swfdec_text_field_movie_replace_text (SwfdecTextFieldMovie *text,
SWFDEC_FIXME ("replaceText to the end of the TextField might use wrong text format on version 7");
}
findex = g_new0 (SwfdecFormatIndex, 1);
- findex->index = start_index;
+ findex->index_ = start_index;
findex->format = swfdec_text_format_copy (
((SwfdecFormatIndex *)text->formats->data)->format);
text->formats = g_slist_append (text->formats, findex);
@@ -1644,7 +1625,7 @@ swfdec_text_field_movie_set_text (SwfdecTextFieldMovie *text, const char *str,
if (html && SWFDEC_AS_OBJECT (text)->context->version < 8)
swfdec_text_format_set_defaults (text->format_new);
block = g_new (SwfdecFormatIndex, 1);
- block->index = 0;
+ block->index_ = 0;
g_assert (SWFDEC_IS_TEXT_FORMAT (text->format_new));
block->format = swfdec_text_format_copy (text->format_new);
text->formats = g_slist_prepend (text->formats, block);
diff --git a/libswfdec/swfdec_text_field_movie.h b/libswfdec/swfdec_text_field_movie.h
index 28439f2..d72b419 100644
--- a/libswfdec/swfdec_text_field_movie.h
+++ b/libswfdec/swfdec_text_field_movie.h
@@ -40,7 +40,7 @@ typedef struct _SwfdecTextFieldMovieClass SwfdecTextFieldMovieClass;
typedef struct {
PangoLayout * layout;
- int render_offset_x;
+ int offset_x;
int height;
int width;
} SwfdecLayout;
@@ -64,14 +64,12 @@ typedef struct {
gboolean bullet;
int indent;
- GList * blocks; // SwfdecBlock
-
- GList * attrs; // PangoAttribute
- PangoAttrList * attrs_list;
+ GSList * blocks; // SwfdecBlock
+ GSList * attrs; // PangoAttribute
} SwfdecParagraph;
typedef struct {
- guint index;
+ guint index_;
SwfdecTextFormat * format;
} SwfdecFormatIndex;
diff --git a/libswfdec/swfdec_text_field_movie_as.c b/libswfdec/swfdec_text_field_movie_as.c
index 9f7cf46..3436ffb 100644
--- a/libswfdec/swfdec_text_field_movie_as.c
+++ b/libswfdec/swfdec_text_field_movie_as.c
@@ -1191,7 +1191,7 @@ swfdec_text_field_movie_createTextField (SwfdecAsContext *cx,
edittext->border = FALSE;
edittext->size = 240; // FIXME: Correct?
- edittext->text_input = NULL;
+ edittext->input = NULL;
edittext->variable = NULL;
edittext->color = 0;
edittext->align = SWFDEC_TEXT_ALIGN_LEFT;
diff --git a/test/dump.c b/test/dump.c
index b66f8fc..38aee7e 100644
--- a/test/dump.c
+++ b/test/dump.c
@@ -225,7 +225,7 @@ dump_shape (SwfdecShape *shape)
static void
dump_text_field (SwfdecTextField *text)
{
- g_print (" %s\n", text->text_input ? text->text_input : "");
+ g_print (" %s\n", text->input ? text->input : "");
if (verbose) {
if (text->variable)
g_print (" variable %s\n", text->variable);
commit accb524749ca584f57eaa842e2907ef2cdd481d5
Merge: fc335e7... 770b5f5...
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Mon Oct 29 10:06:28 2007 +0200
Merge branch 'master' of ssh://medar@git.freedesktop.org/git/swfdec/swfdec
Conflicts:
libswfdec/swfdec_as_interpret.c
diff --cc libswfdec/swfdec_as_interpret.c
index 3571ffb,c331413..798a03c
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@@ -2749,10 -2731,10 +2730,10 @@@ swfdec_action_try (SwfdecAsContext *cx
if (try_data->catch_start || try_data->finally_start) {
swfdec_as_frame_push_block (cx->frame, data + len, data + len + try_size,
- swfdec_action_try_end_try, try_data, swfdec_action_try_data_unref);
+ swfdec_action_try_end_try, try_data);
} else {
- SWFDEC_ERROR ("Try without neither catch or finally block");
+ SWFDEC_WARNING ("Try with neither catch nor finally block");
- swfdec_action_try_data_unref (try_data);
+ swfdec_action_try_data_free (try_data);
}
}
commit fc335e7dd2984fff923c4fc345379c4db0b2d56e
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Sun Oct 28 19:43:42 2007 +0200
Fix an error in Try action
diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index 3defeca..3571ffb 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -2712,10 +2712,9 @@ swfdec_action_try (SwfdecAsContext *cx, guint action, const guint8 *data, guint
guint try_size;
gboolean use_finally, use_catch;
- if (len <= 8) {
+ if (len < 8) {
SWFDEC_ERROR ("With action requires a length of at least 8, but got %u",
len);
- swfdec_as_stack_pop (cx);
return;
}
@@ -2752,7 +2751,7 @@ swfdec_action_try (SwfdecAsContext *cx, guint action, const guint8 *data, guint
swfdec_as_frame_push_block (cx->frame, data + len, data + len + try_size,
swfdec_action_try_end_try, try_data, swfdec_action_try_data_unref);
} else {
- SWFDEC_ERROR ("Try without neither catch or finally block");
+ SWFDEC_WARNING ("Try with neither catch nor finally block");
swfdec_action_try_data_unref (try_data);
}
}
commit fab2e610d7a96cf007096edaff5809c29985feb5
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date: Sun Oct 28 17:11:48 2007 +0200
Fixes to TextField's autoSize
diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index e9c3fed..72b5e31 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -796,51 +796,48 @@ swfdec_text_field_get_size (SwfdecTextFieldMovie *text, int *width,
gboolean
swfdec_text_field_movie_auto_size (SwfdecTextFieldMovie *text)
{
+ SwfdecGraphic *graphic;
int height, width, diff;
g_return_val_if_fail (SWFDEC_IS_TEXT_FIELD_MOVIE (text), FALSE);
+ graphic = SWFDEC_GRAPHIC (text->text);
+
if (text->text->auto_size == SWFDEC_AUTO_SIZE_NONE)
return FALSE;
swfdec_text_field_get_size (text, &width, &height);
- if ((text->text->word_wrap || SWFDEC_MOVIE (text)->original_extents.x1 -
- SWFDEC_MOVIE (text)->original_extents.x0 == width) &&
- (SWFDEC_GRAPHIC (text->text)->extents.y1 -
- SWFDEC_GRAPHIC (text->text)->extents.y0 == height))
+ if ((text->text->word_wrap ||
+ graphic->extents.x1 - graphic->extents.x0 == width) &&
+ graphic->extents.y1 - graphic->extents.y0 == height)
return FALSE;
swfdec_movie_invalidate (SWFDEC_MOVIE (text));
- if (!text->text->word_wrap && SWFDEC_MOVIE (text)->original_extents.x1 -
- SWFDEC_MOVIE (text)->original_extents.x0 != width)
+ if (!text->text->word_wrap && graphic->extents.x1 -
+ graphic->extents.x0 != width)
{
switch (text->text->auto_size) {
case SWFDEC_AUTO_SIZE_LEFT:
- SWFDEC_GRAPHIC (text->text)->extents.x1 =
- SWFDEC_GRAPHIC (text->text)->extents.x0 + width;
+ graphic->extents.x1 = graphic->extents.x0 + width;
break;
case SWFDEC_AUTO_SIZE_RIGHT:
- SWFDEC_GRAPHIC (text->text)->extents.x0 =
- SWFDEC_GRAPHIC (text->text)->extents.x1 - width;
+ graphic->extents.x0 = graphic->extents.x1 - width;
break;
case SWFDEC_AUTO_SIZE_CENTER:
- diff = width - (SWFDEC_GRAPHIC (text->text)->extents.x1 -
- SWFDEC_GRAPHIC (text->text)->extents.x0);
- SWFDEC_GRAPHIC (text->text)->extents.x0 += floor (width / 2.0);
- SWFDEC_GRAPHIC (text->text)->extents.x1 += ceil (width / 2.0);
+ diff = (graphic->extents.x1 - graphic->extents.x0) - width;
+ graphic->extents.x0 += floor (diff / 2.0);
+ graphic->extents.x1 = graphic->extents.x0 + width;
break;
default:
g_assert_not_reached ();
}
}
- if (SWFDEC_GRAPHIC (text->text)->extents.y1 -
- SWFDEC_GRAPHIC (text->text)->extents.y0 != height)
+ if (graphic->extents.y1 - graphic->extents.y0 != height)
{
- SWFDEC_GRAPHIC (text->text)->extents.y1 =
- SWFDEC_GRAPHIC (text->text)->extents.y0 + height;
+ graphic->extents.y1 = graphic->extents.y0 + height;
}
swfdec_movie_queue_update (SWFDEC_MOVIE (text),
More information about the Swfdec
mailing list