[Swfdec] 36 commits - doc/swfdec-sections.txt libswfdec/Makefile.am libswfdec/swfdec_amf.c libswfdec/swfdec_as_interpret.c libswfdec/swfdec_as_object.c libswfdec/swfdec_as_object.h libswfdec/swfdec_as_strings.c libswfdec/swfdec_buffer.c libswfdec/swfdec_buffer.h libswfdec/swfdec_cached.c libswfdec/swfdec_codec_gst.c libswfdec/swfdec_decoder.c libswfdec/swfdec_decoder.h libswfdec/swfdec_flv_decoder.c libswfdec/swfdec_flv_decoder.h libswfdec/swfdec_image.c libswfdec/swfdec_initialize.as libswfdec/swfdec_initialize.h libswfdec/swfdec_movie_asprops.c libswfdec/swfdec_movie.c libswfdec/swfdec_movie_clip_loader.c libswfdec/swfdec_movie_clip_loader.h libswfdec/swfdec_movie.h libswfdec/swfdec_net_stream.c libswfdec/swfdec_player.c libswfdec/swfdec_resource.c libswfdec/swfdec_resource.h libswfdec/swfdec_resource_request.c libswfdec/swfdec_sprite_movie.c libswfdec/swfdec_sprite_movie.h libswfdec/swfdec_swf_decoder.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_types.h player/swfplay.c test/trace

Benjamin Otte company at kemper.freedesktop.org
Wed Nov 7 03:12:12 PST 2007


 doc/swfdec-sections.txt                            |    1 
 libswfdec/Makefile.am                              |    2 
 libswfdec/swfdec_amf.c                             |    2 
 libswfdec/swfdec_as_interpret.c                    |   30 
 libswfdec/swfdec_as_object.c                       |   15 
 libswfdec/swfdec_as_object.h                       |    1 
 libswfdec/swfdec_as_strings.c                      |    5 
 libswfdec/swfdec_buffer.c                          |   25 
 libswfdec/swfdec_buffer.h                          |    1 
 libswfdec/swfdec_cached.c                          |    1 
 libswfdec/swfdec_codec_gst.c                       |    1 
 libswfdec/swfdec_decoder.c                         |   24 
 libswfdec/swfdec_decoder.h                         |   30 
 libswfdec/swfdec_flv_decoder.c                     |   66 -
 libswfdec/swfdec_flv_decoder.h                     |    1 
 libswfdec/swfdec_image.c                           |    2 
 libswfdec/swfdec_initialize.as                     |    7 
 libswfdec/swfdec_initialize.h                      |  976 ++++++++++-----------
 libswfdec/swfdec_movie.c                           |   17 
 libswfdec/swfdec_movie.h                           |    3 
 libswfdec/swfdec_movie_asprops.c                   |    8 
 libswfdec/swfdec_movie_clip_loader.c               |  120 ++
 libswfdec/swfdec_movie_clip_loader.h               |   51 +
 libswfdec/swfdec_net_stream.c                      |   43 
 libswfdec/swfdec_player.c                          |   82 -
 libswfdec/swfdec_resource.c                        |  271 +++--
 libswfdec/swfdec_resource.h                        |   11 
 libswfdec/swfdec_resource_request.c                |    7 
 libswfdec/swfdec_sprite_movie.c                    |   35 
 libswfdec/swfdec_sprite_movie.h                    |    3 
 libswfdec/swfdec_swf_decoder.c                     |  118 +-
 libswfdec/swfdec_text_field_movie.c                |    2 
 libswfdec/swfdec_types.h                           |    1 
 player/swfplay.c                                   |    1 
 test/trace/Makefile.am                             |   18 
 test/trace/moviecliploader-getprogress-5.swf       |binary
 test/trace/moviecliploader-getprogress-5.swf.trace |   19 
 test/trace/moviecliploader-getprogress-6.swf       |binary
 test/trace/moviecliploader-getprogress-6.swf.trace |   19 
 test/trace/moviecliploader-getprogress-7.swf       |binary
 test/trace/moviecliploader-getprogress-7.swf.trace |   19 
 test/trace/moviecliploader-getprogress-8.swf       |binary
 test/trace/moviecliploader-getprogress-8.swf.trace |   19 
 test/trace/moviecliploader-getprogress.as          |   24 
 test/trace/moviecliploader-properties-5.swf        |binary
 test/trace/moviecliploader-properties-5.swf.trace  |   33 
 test/trace/moviecliploader-properties-6.swf        |binary
 test/trace/moviecliploader-properties-6.swf.trace  |   33 
 test/trace/moviecliploader-properties-7.swf        |binary
 test/trace/moviecliploader-properties-7.swf.trace  |   32 
 test/trace/moviecliploader-properties-8.swf        |binary
 test/trace/moviecliploader-properties-8.swf.trace  |   32 
 test/trace/moviecliploader-properties.as           |    8 
 53 files changed, 1442 insertions(+), 777 deletions(-)

New commits:
commit 61dc6a8df81f90b6240d656f37aad2006de48b56
Author: Benjamin Otte <otte at gnome.org>
Date:   Wed Nov 7 12:07:56 2007 +0100

    reorganize decoder parsing code
    
    We don't keep the loader's queue in SwfdecDecoder anymore but instad pass
    the buffers to the decoder's aprse function manually. This way, we can control
    how much data we pass. And that in turn makes it possible to emit onLoadProgress
    events every 64kB.

diff --git a/libswfdec/swfdec_decoder.c b/libswfdec/swfdec_decoder.c
index 590c09a..6a98981 100644
--- a/libswfdec/swfdec_decoder.c
+++ b/libswfdec/swfdec_decoder.c
@@ -42,19 +42,17 @@ swfdec_decoder_init (SwfdecDecoder *decoder)
 }
 
 SwfdecDecoder *
-swfdec_decoder_new (SwfdecPlayer *player, SwfdecBufferQueue *queue)
+swfdec_decoder_new (SwfdecPlayer *player, const SwfdecBuffer *buffer)
 {
   guchar *data;
-  SwfdecBuffer *buffer;
   SwfdecDecoder *retval;
   
   g_return_val_if_fail (SWFDEC_IS_PLAYER (player), NULL);
-  g_return_val_if_fail (queue != NULL, NULL);
+  g_return_val_if_fail (buffer != NULL, NULL);
 
-  if (!swfdec_decoder_can_detect (queue))
+  if (buffer->length < SWFDEC_DECODER_DETECT_LENGTH)
     return NULL;
 
-  buffer = swfdec_buffer_queue_peek (queue, 3);
   data = buffer->data;
   if ((data[0] == 'C' || data[0] == 'F') &&
       data[1] == 'W' &&
@@ -67,11 +65,23 @@ swfdec_decoder_new (SwfdecPlayer *player, SwfdecBufferQueue *queue)
   } else {
     retval = NULL;
   }
-  swfdec_buffer_unref (buffer);
   if (retval) {
     retval->player = player;
-    retval->queue = queue;
   }
   return retval;
 }
 
+SwfdecStatus
+swfdec_decoder_parse (SwfdecDecoder *decoder, SwfdecBuffer *buffer)
+{
+  SwfdecDecoderClass *klass;
+
+  g_return_val_if_fail (SWFDEC_IS_DECODER (decoder), SWFDEC_STATUS_ERROR);
+  g_return_val_if_fail (buffer != NULL, SWFDEC_STATUS_ERROR);
+
+  klass = SWFDEC_DECODER_GET_CLASS (decoder);
+  g_return_val_if_fail (klass->parse, SWFDEC_STATUS_ERROR);
+  return klass->parse (decoder, buffer);
+}
+
+
diff --git a/libswfdec/swfdec_decoder.h b/libswfdec/swfdec_decoder.h
index 42e8b15..7483df1 100644
--- a/libswfdec/swfdec_decoder.h
+++ b/libswfdec/swfdec_decoder.h
@@ -29,18 +29,18 @@ G_BEGIN_DECLS
 
 
 typedef enum {
-  /* An error occured during parsing */
-  SWFDEC_STATUS_ERROR = 0,
   /* processing continued as expected */
-  SWFDEC_STATUS_OK,
+  SWFDEC_STATUS_OK = 0,
+  /* An error occured during parsing */
+  SWFDEC_STATUS_ERROR = (1 << 0),
   /* more data needs to be made available for processing */
-  SWFDEC_STATUS_NEEDBITS,
-  /* at least one new image is available for display */
-  SWFDEC_STATUS_IMAGE,
-  /* header parsing is complete, framerate, image size etc are known */
-  SWFDEC_STATUS_INIT,
+  SWFDEC_STATUS_NEEDBITS = (1 << 1),
   /* parsing is finished */
-  SWFDEC_STATUS_EOF
+  SWFDEC_STATUS_EOF = (1 << 2),
+  /* header parsing is complete, framerate, image size etc are known */
+  SWFDEC_STATUS_INIT = (1 << 3),
+  /* at least one new image is available for display */
+  SWFDEC_STATUS_IMAGE = (1 << 4)
 } SwfdecStatus;
 
 //typedef struct _SwfdecDecoder SwfdecDecoder;
@@ -65,21 +65,25 @@ struct _SwfdecDecoder
   guint			bytes_total;	/* total bytes in the file or 0 if not known */
   guint			frames_loaded;	/* frames already loaded */
   guint			frames_total;	/* total frames */
-  SwfdecBufferQueue *	queue;		/* the queue containing the data to be parsed */
 };
 
 struct _SwfdecDecoderClass
 {
   GObjectClass		object_class;
 
-  SwfdecStatus		(* parse)		(SwfdecDecoder *	decoder);
+  SwfdecStatus		(* parse)		(SwfdecDecoder *	decoder,
+						 SwfdecBuffer *		buffer);
 };
 
 GType		swfdec_decoder_get_type		(void);
 
-#define swfdec_decoder_can_detect(queue) (swfdec_buffer_queue_get_depth (queue) >= 3)
+#define SWFDEC_DECODER_DETECT_LENGTH 4
 SwfdecDecoder *	swfdec_decoder_new		(SwfdecPlayer *		player,
-						 SwfdecBufferQueue *	queue);
+						 const SwfdecBuffer *	buffer);
+
+SwfdecStatus	swfdec_decoder_parse		(SwfdecDecoder *	decoder,
+						 SwfdecBuffer * 	buffer);
+
 
 G_END_DECLS
 #endif
diff --git a/libswfdec/swfdec_flv_decoder.c b/libswfdec/swfdec_flv_decoder.c
index f35b8b3..4ba427e 100644
--- a/libswfdec/swfdec_flv_decoder.c
+++ b/libswfdec/swfdec_flv_decoder.c
@@ -88,7 +88,8 @@ swfdec_flv_decoder_dispose (GObject *object)
     g_array_free (flv->data, TRUE);
     flv->data = NULL;
   }
-
+  swfdec_buffer_queue_unref (flv->queue);
+  flv->queue = NULL;
 
   G_OBJECT_CLASS (swfdec_flv_decoder_parent_class)->dispose (object);
 }
@@ -96,14 +97,12 @@ swfdec_flv_decoder_dispose (GObject *object)
 static SwfdecStatus
 swfdec_flv_decoder_parse_header (SwfdecFlvDecoder *flv)
 {
-  SwfdecDecoder *dec = SWFDEC_DECODER (flv);
   SwfdecBuffer *buffer;
   SwfdecBits bits;
   guint version, header_length;
   gboolean has_audio, has_video;
 
-  /* NB: we're still reading from the original queue, since deflating is not initialized yet */
-  buffer = swfdec_buffer_queue_peek (dec->queue, 9);
+  buffer = swfdec_buffer_queue_peek (flv->queue, 9);
   if (buffer == NULL)
     return SWFDEC_STATUS_NEEDBITS;
 
@@ -128,7 +127,7 @@ swfdec_flv_decoder_parse_header (SwfdecFlvDecoder *flv)
     /* FIXME: treat as error or ignore? */
     return SWFDEC_STATUS_ERROR;
   }
-  buffer = swfdec_buffer_queue_pull (dec->queue, header_length);
+  buffer = swfdec_buffer_queue_pull (flv->queue, header_length);
   if (buffer == NULL)
     return SWFDEC_STATUS_NEEDBITS;
   swfdec_buffer_unref (buffer);
@@ -151,12 +150,11 @@ swfdec_flv_decoder_parse_header (SwfdecFlvDecoder *flv)
 static SwfdecStatus
 swfdec_flv_decoder_parse_last_tag (SwfdecFlvDecoder *flv)
 {
-  SwfdecDecoder *dec = SWFDEC_DECODER (flv);
   SwfdecBuffer *buffer;
   SwfdecBits bits;
   guint last_tag;
 
-  buffer = swfdec_buffer_queue_pull (dec->queue, 4);
+  buffer = swfdec_buffer_queue_pull (flv->queue, 4);
   if (buffer == NULL)
     return SWFDEC_STATUS_NEEDBITS;
 
@@ -357,20 +355,19 @@ swfdec_flv_decoder_parse_data_tag (SwfdecFlvDecoder *flv, SwfdecBits *bits, guin
 static SwfdecStatus
 swfdec_flv_decoder_parse_tag (SwfdecFlvDecoder *flv)
 {
-  SwfdecDecoder *dec = SWFDEC_DECODER (flv);
   SwfdecBuffer *buffer;
   SwfdecBits bits;
   guint size, type, timestamp;
   SwfdecStatus ret = SWFDEC_STATUS_OK;
 
-  buffer = swfdec_buffer_queue_peek (dec->queue, 4);
+  buffer = swfdec_buffer_queue_peek (flv->queue, 4);
   if (buffer == NULL)
     return SWFDEC_STATUS_NEEDBITS;
   swfdec_bits_init (&bits, buffer);
   swfdec_bits_get_u8 (&bits);
   size = swfdec_bits_get_bu24 (&bits);
   swfdec_buffer_unref (buffer);
-  buffer = swfdec_buffer_queue_pull (dec->queue, 11 + size);
+  buffer = swfdec_buffer_queue_pull (flv->queue, 11 + size);
   if (buffer == NULL)
     return SWFDEC_STATUS_NEEDBITS;
   swfdec_bits_init (&bits, buffer);
@@ -405,31 +402,35 @@ swfdec_flv_decoder_parse_tag (SwfdecFlvDecoder *flv)
 }
 
 static SwfdecStatus
-swfdec_flv_decoder_parse (SwfdecDecoder *dec)
+swfdec_flv_decoder_parse (SwfdecDecoder *dec, SwfdecBuffer *buffer)
 {
   SwfdecFlvDecoder *flv = SWFDEC_FLV_DECODER (dec);
-  SwfdecStatus ret;
-
-  switch (flv->state) {
-    case SWFDEC_STATE_HEADER:
-      ret = swfdec_flv_decoder_parse_header (flv);
-      break;
-    case SWFDEC_STATE_LAST_TAG:
-      ret = swfdec_flv_decoder_parse_last_tag (flv);
-      break;
-    case SWFDEC_STATE_TAG:
-      ret = swfdec_flv_decoder_parse_tag (flv);
-      break;
-    case SWFDEC_STATE_EOF:
-      ret = SWFDEC_STATUS_EOF;
-      break;
-    default:
-      g_assert_not_reached ();
-      ret = SWFDEC_STATUS_ERROR;
-      break;
-  }
+  SwfdecStatus status = 0;
+
+  swfdec_buffer_queue_push (flv->queue, buffer);
+
+  do {
+    switch (flv->state) {
+      case SWFDEC_STATE_HEADER:
+	status |= swfdec_flv_decoder_parse_header (flv);
+	break;
+      case SWFDEC_STATE_LAST_TAG:
+	status |= swfdec_flv_decoder_parse_last_tag (flv);
+	break;
+      case SWFDEC_STATE_TAG:
+	status |= swfdec_flv_decoder_parse_tag (flv);
+	break;
+      case SWFDEC_STATE_EOF:
+	status |= SWFDEC_STATUS_EOF;
+	break;
+      default:
+	g_assert_not_reached ();
+	status |= SWFDEC_STATUS_ERROR;
+	break;
+    }
+  } while ((status & (SWFDEC_STATUS_EOF | SWFDEC_STATUS_NEEDBITS | SWFDEC_STATUS_ERROR)) == 0);
 
-  return ret;
+  return status;
 }
 
 static void
@@ -447,6 +448,7 @@ static void
 swfdec_flv_decoder_init (SwfdecFlvDecoder *flv)
 {
   flv->state = SWFDEC_STATE_HEADER;
+  flv->queue = swfdec_buffer_queue_new ();
 }
 
 SwfdecBuffer *
diff --git a/libswfdec/swfdec_flv_decoder.h b/libswfdec/swfdec_flv_decoder.h
index 79fcb35..423050f 100644
--- a/libswfdec/swfdec_flv_decoder.h
+++ b/libswfdec/swfdec_flv_decoder.h
@@ -46,6 +46,7 @@ struct _SwfdecFlvDecoder
   GArray *		audio;		/* audio tags */
   GArray *		video;		/* video tags */
   GArray *		data;		/* data tags (if any) */
+  SwfdecBufferQueue *	queue;		/* queue for parsing */
 };
 
 struct _SwfdecFlvDecoderClass {
diff --git a/libswfdec/swfdec_net_stream.c b/libswfdec/swfdec_net_stream.c
index 2355536..91949ef 100644
--- a/libswfdec/swfdec_net_stream.c
+++ b/libswfdec/swfdec_net_stream.c
@@ -261,7 +261,7 @@ swfdec_net_stream_loader_target_parse (SwfdecLoaderTarget *target,
 {
   SwfdecNetStream *stream = SWFDEC_NET_STREAM (target);
   SwfdecDecoderClass *klass;
-  gboolean recheck = FALSE;
+  SwfdecStatus status;
   
   if (loader->state != SWFDEC_LOADER_STATE_EOF && swfdec_buffer_queue_get_depth (loader->queue) == 0) {
     SWFDEC_INFO ("nothing to do");
@@ -271,7 +271,6 @@ swfdec_net_stream_loader_target_parse (SwfdecLoaderTarget *target,
     /* FIXME: add mp3 support */
     stream->flvdecoder = g_object_new (SWFDEC_TYPE_FLV_DECODER, NULL);
     SWFDEC_DECODER (stream->flvdecoder)->player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (stream)->context);
-    SWFDEC_DECODER (stream->flvdecoder)->queue = loader->queue;
     swfdec_net_stream_onstatus (stream, SWFDEC_AS_STR_NetStream_Play_Start,
 	SWFDEC_AS_STR_status);
     swfdec_loader_set_data_type (loader, SWFDEC_LOADER_DATA_FLV);
@@ -279,31 +278,19 @@ swfdec_net_stream_loader_target_parse (SwfdecLoaderTarget *target,
   klass = SWFDEC_DECODER_GET_CLASS (stream->flvdecoder);
   g_return_if_fail (klass->parse);
 
-  while (TRUE) {
-    SwfdecStatus status = klass->parse (SWFDEC_DECODER (stream->flvdecoder));
-    switch (status) {
-      case SWFDEC_STATUS_OK:
-	break;
-      case SWFDEC_STATUS_INIT:
-	/* HACK for native flv playback */
-	swfdec_player_initialize (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (stream)->context), 7,
-	    SWFDEC_DECODER (stream->flvdecoder)->rate, 
-	    SWFDEC_DECODER (stream->flvdecoder)->width, 
-	    SWFDEC_DECODER (stream->flvdecoder)->height);
-      case SWFDEC_STATUS_IMAGE:
-	recheck = TRUE;
-	break;
-      case SWFDEC_STATUS_ERROR:
-      case SWFDEC_STATUS_NEEDBITS:
-      case SWFDEC_STATUS_EOF:
-	goto out;
-      default:
-	g_assert_not_reached ();
-	return;
-    }
+  do {
+    SwfdecBuffer *buffer = swfdec_buffer_queue_pull_buffer (loader->queue);
+    status |= klass->parse (SWFDEC_DECODER (stream->flvdecoder), buffer);
+  } while ((status & (SWFDEC_STATUS_ERROR | SWFDEC_STATUS_NEEDBITS | SWFDEC_STATUS_EOF)) == 0);
+
+  if (status & SWFDEC_STATUS_INIT) {
+      /* HACK for native flv playback */
+      swfdec_player_initialize (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (stream)->context), 7,
+	  SWFDEC_DECODER (stream->flvdecoder)->rate, 
+	  SWFDEC_DECODER (stream->flvdecoder)->width, 
+	  SWFDEC_DECODER (stream->flvdecoder)->height);
   }
-out:
-  if (recheck)
+  if (status & SWFDEC_STATUS_IMAGE)
     swfdec_net_stream_loader_target_recheck (stream);
 }
 
diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index cb5dbb7..260c57d 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -155,14 +155,19 @@ swfdec_resource_loader_target_parse (SwfdecLoaderTarget *target, SwfdecLoader *l
 {
   SwfdecResource *instance = SWFDEC_RESOURCE (target);
   SwfdecPlayer *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (instance->movie)->context);
+  SwfdecBuffer *buffer;
   SwfdecAsValue vals[2];
   SwfdecDecoder *dec = instance->decoder;
   SwfdecDecoderClass *klass;
+  SwfdecStatus status;
+  guint parsed;
 
   if (dec == NULL) {
-    if (!swfdec_decoder_can_detect (loader->queue))
+    if (swfdec_buffer_queue_get_depth (loader->queue) < SWFDEC_DECODER_DETECT_LENGTH)
       return;
-    dec = swfdec_decoder_new (player, loader->queue);
+    buffer = swfdec_buffer_queue_peek (loader->queue, 4);
+    dec = swfdec_decoder_new (player, buffer);
+    swfdec_buffer_unref (buffer);
     if (dec == NULL) {
       SWFDEC_ERROR ("no decoder found");
       swfdec_loader_set_target (loader, NULL);
@@ -184,35 +189,41 @@ swfdec_resource_loader_target_parse (SwfdecLoaderTarget *target, SwfdecLoader *l
   }
   klass = SWFDEC_DECODER_GET_CLASS (dec);
   g_return_if_fail (klass->parse);
-  while (TRUE) {
-    SwfdecStatus status = klass->parse (dec);
-    switch (status) {
-      case SWFDEC_STATUS_ERROR:
-	SWFDEC_ERROR ("parsing error");
-	swfdec_loader_set_target (loader, NULL);
-	return;
-      case SWFDEC_STATUS_OK:
+  while (swfdec_buffer_queue_get_depth (loader->queue)) {
+    parsed = 0;
+    status = 0;
+    do {
+      buffer = swfdec_buffer_queue_peek_buffer (loader->queue);
+      if (buffer == NULL)
 	break;
-      case SWFDEC_STATUS_NEEDBITS:
-	return;
-      case SWFDEC_STATUS_IMAGE:
-	swfdec_resource_loader_target_image (instance);
-	break;
-      case SWFDEC_STATUS_INIT:
-	swfdec_player_initialize (player, 
-	    SWFDEC_IS_SWF_DECODER (dec) ? SWFDEC_SWF_DECODER (dec)->version : 7, /* <-- HACK */
-	    dec->rate, dec->width, dec->height);
-	break;
-      case SWFDEC_STATUS_EOF:
-	return;
-      default:
-	g_assert_not_reached ();
-	return;
+      if (parsed + buffer->length <= 65536) {
+	swfdec_buffer_unref (buffer);
+	buffer = swfdec_buffer_queue_pull_buffer (loader->queue);
+      } else {
+	swfdec_buffer_unref (buffer);
+	buffer = swfdec_buffer_queue_pull (loader->queue, 65536 - parsed);
+      }
+      parsed += buffer->length;
+      status = klass->parse (dec, buffer);
+    } while ((status & (SWFDEC_STATUS_ERROR | SWFDEC_STATUS_NEEDBITS | SWFDEC_STATUS_EOF)) == 0);
+    if (status & SWFDEC_STATUS_ERROR) {
+      SWFDEC_ERROR ("parsing error");
+      swfdec_loader_set_target (loader, NULL);
+      return;
+    }
+    if (status & SWFDEC_STATUS_INIT) {
+      swfdec_player_initialize (player, 
+	  SWFDEC_IS_SWF_DECODER (dec) ? SWFDEC_SWF_DECODER (dec)->version : 7, /* <-- HACK */
+	  dec->rate, dec->width, dec->height);
     }
+    if (status & SWFDEC_STATUS_IMAGE)
+      swfdec_resource_loader_target_image (instance);
+    SWFDEC_AS_VALUE_SET_INT (&vals[0], dec->bytes_loaded);
+    SWFDEC_AS_VALUE_SET_INT (&vals[1], dec->bytes_total);
+    swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadProgress, vals, 2);
+    if (status & SWFDEC_STATUS_EOF)
+      return;
   }
-  SWFDEC_AS_VALUE_SET_INT (&vals[0], dec->bytes_loaded);
-  SWFDEC_AS_VALUE_SET_INT (&vals[1], dec->bytes_total);
-  swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadProgress, vals, 2);
 }
 
 static void
@@ -220,10 +231,16 @@ swfdec_resource_loader_target_eof (SwfdecLoaderTarget *target, SwfdecLoader *loa
 {
   SwfdecResource *instance = SWFDEC_RESOURCE (target);
   SwfdecAsValue vals[2];
-
   SwfdecDecoder *dec = instance->decoder;
-  SWFDEC_AS_VALUE_SET_INT (&vals[0], dec->bytes_loaded);
-  SWFDEC_AS_VALUE_SET_INT (&vals[1], dec->bytes_total);
+
+  if (dec == NULL) {
+    SWFDEC_FIXME ("What do we signal if we have no decoder?");
+    SWFDEC_AS_VALUE_SET_INT (&vals[0], 0);
+    SWFDEC_AS_VALUE_SET_INT (&vals[1], 0);
+  } else {
+    SWFDEC_AS_VALUE_SET_INT (&vals[0], dec->bytes_loaded);
+    SWFDEC_AS_VALUE_SET_INT (&vals[1], dec->bytes_total);
+  }
   swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadProgress, vals, 2);
   SWFDEC_AS_VALUE_SET_INT (&vals[0], 0); /* FIXME */
   swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadComplete, vals, 1);
diff --git a/libswfdec/swfdec_swf_decoder.c b/libswfdec/swfdec_swf_decoder.c
index b186ed8..ee18f9a 100644
--- a/libswfdec/swfdec_swf_decoder.c
+++ b/libswfdec/swfdec_swf_decoder.c
@@ -87,35 +87,59 @@ zfree (void *opaque, void *addr)
   g_free (addr);
 }
 
+static SwfdecBuffer *
+swfdec_buffer_merge (const SwfdecBuffer *front, const SwfdecBuffer *end)
+{
+  SwfdecBuffer *new;
+
+  g_return_val_if_fail (front != NULL, NULL);
+  g_return_val_if_fail (end != NULL, NULL);
+
+  new = swfdec_buffer_new_and_alloc (front->length + end->length);
+  if (front->length)
+    memcpy (new->data, front->data, front->length);
+  if (end->length)
+    memcpy (new->data + front->length, end->data, end->length);
+  return new;
+}
+
 static gboolean
-swfdec_swf_decoder_deflate_all (SwfdecSwfDecoder * s)
+swfdec_swf_decoder_deflate (SwfdecSwfDecoder * s, SwfdecBuffer *buffer)
 {
   int ret;
-  SwfdecBuffer *buffer;
   SwfdecDecoder *dec = SWFDEC_DECODER (s);
   
-  while ((buffer = swfdec_buffer_queue_pull_buffer (SWFDEC_DECODER (s)->queue))) {
-    if (s->compressed) {
-      s->z.next_in = buffer->data;
-      s->z.avail_in = buffer->length;
-      ret = inflate (&s->z, Z_SYNC_FLUSH);
-      if (ret < Z_OK) {
-	SWFDEC_ERROR ("error uncompressing data: %s", s->z.msg);
-	return FALSE;
-      }
+  if (s->buffer == NULL) {
+    /* never written to */
+    g_assert (s->state == SWFDEC_STATE_INIT1);
+    s->buffer = buffer;
+  } else if (s->state == SWFDEC_STATE_INIT1) {
+    /* not initialized yet */
+    SwfdecBuffer *merge = swfdec_buffer_merge (s->buffer, buffer);
+    swfdec_buffer_unref (s->buffer);
+    swfdec_buffer_unref (buffer);
+    s->buffer = merge;
+  } else if (s->compressed) {
+    s->z.next_in = buffer->data;
+    s->z.avail_in = buffer->length;
+    ret = inflate (&s->z, Z_SYNC_FLUSH);
+    if (ret < Z_OK) {
+      SWFDEC_ERROR ("error uncompressing data: %s", s->z.msg);
+      return FALSE;
+    }
 
-      dec->bytes_loaded = s->z.total_out + 8;
-    } else {
-      guint max = buffer->length;
+    dec->bytes_loaded = s->z.total_out + 8;
+    swfdec_buffer_unref (buffer);
+  } else {
+    guint max = buffer->length;
 
-      if (dec->bytes_loaded + max > s->buffer->length) {
-	SWFDEC_WARNING ("%u bytes more than declared filesize", 
-	    dec->bytes_loaded + max - s->buffer->length);
-	max = s->buffer->length - dec->bytes_loaded;
-      }
-      memcpy (s->buffer->data + dec->bytes_loaded, buffer->data, max);
-      dec->bytes_loaded += max;
+    if (dec->bytes_loaded + max > s->buffer->length) {
+      SWFDEC_WARNING ("%u bytes more than declared filesize", 
+	  dec->bytes_loaded + max - s->buffer->length);
+      max = s->buffer->length - dec->bytes_loaded;
     }
+    memcpy (s->buffer->data + dec->bytes_loaded, buffer->data, max);
+    dec->bytes_loaded += max;
     swfdec_buffer_unref (buffer);
   }
 
@@ -163,17 +187,16 @@ swf_parse_header1 (SwfdecSwfDecoder * s)
 {
   SwfdecDecoder *dec = SWFDEC_DECODER (s);
   int sig1, sig2, sig3;
-  SwfdecBuffer *buffer;
+  SwfdecBuffer *buffer, *rest;
   SwfdecBits bits;
   guint8 *data;
 
-  /* NB: we're still reading from the original queue, since deflating is not initialized yet */
-  buffer = swfdec_buffer_queue_pull (dec->queue, 8);
-  if (buffer == NULL) {
+  g_assert (s->buffer != NULL);
+  if (s->buffer->length <= 8) {
     return SWFDEC_STATUS_NEEDBITS;
   }
 
-  swfdec_bits_init (&bits, buffer);
+  swfdec_bits_init (&bits, s->buffer);
 
   sig1 = swfdec_bits_get_u8 (&bits);
   sig2 = swfdec_bits_get_u8 (&bits);
@@ -184,11 +207,21 @@ swf_parse_header1 (SwfdecSwfDecoder * s)
 
   s->version = swfdec_bits_get_u8 (&bits);
   dec->bytes_total = swfdec_bits_get_u32 (&bits);
+  if (dec->bytes_total <= 8) {
+    SWFDEC_ERROR ("Joke? Flash files need to be bigger than %u bytes", dec->bytes_total);
+    dec->bytes_total = 0;
+    return SWFDEC_STATUS_ERROR;
+  }
+  rest = swfdec_bits_get_buffer (&bits, -1);
 
   data = g_try_malloc (dec->bytes_total);
   if (data == NULL)
     return SWFDEC_STATUS_ERROR;
-  s->buffer = swfdec_buffer_new_for_data (data, dec->bytes_total);
+  buffer = swfdec_buffer_new_for_data (data, dec->bytes_total);
+  memcpy (buffer->data, s->buffer->data, 8);
+  swfdec_buffer_unref (s->buffer);
+  s->buffer = buffer;
+
   s->compressed = (sig1 == 'C');
   if (s->compressed) {
     SWFDEC_DEBUG ("compressed");
@@ -197,12 +230,10 @@ swf_parse_header1 (SwfdecSwfDecoder * s)
   } else {
     SWFDEC_DEBUG ("not compressed");
   }
-  memcpy (s->buffer->data, buffer->data, 8);
   SWFDEC_DECODER (s)->bytes_loaded = 8;
   s->bytes_parsed = 8;
-  swfdec_buffer_unref (buffer);
-
   s->state = SWFDEC_STATE_INIT2;
+  swfdec_swf_decoder_deflate (s, rest);
 
   return SWFDEC_STATUS_OK;
 }
@@ -246,21 +277,17 @@ swf_parse_header2 (SwfdecSwfDecoder * s)
 }
 
 static SwfdecStatus
-swfdec_swf_decoder_parse (SwfdecDecoder *dec)
+swfdec_swf_decoder_parse_one (SwfdecSwfDecoder *s)
 {
-  SwfdecSwfDecoder *s = SWFDEC_SWF_DECODER (dec);
   int ret = SWFDEC_STATUS_OK;
 
   s->b = s->parse;
-  g_assert (dec->player);
 
   switch (s->state) {
     case SWFDEC_STATE_INIT1:
       ret = swf_parse_header1 (s);
       break;
     case SWFDEC_STATE_INIT2:
-      if (!swfdec_swf_decoder_deflate_all (s))
-	return SWFDEC_STATUS_ERROR;
       ret = swf_parse_header2 (s);
       break;
     case SWFDEC_STATE_PARSE_FIRST_TAG:
@@ -273,9 +300,6 @@ swfdec_swf_decoder_parse (SwfdecDecoder *dec)
       guint tag_len;
       SwfdecBits bits;
 
-      if (!swfdec_swf_decoder_deflate_all (s))
-	return SWFDEC_STATUS_ERROR;
-
       /* we're parsing tags */
       swfdec_swf_decoder_init_bits (s, &bits);
       if (swfdec_bits_left (&bits) < 2 * 8)
@@ -336,18 +360,31 @@ swfdec_swf_decoder_parse (SwfdecDecoder *dec)
       break;
     }
     case SWFDEC_STATE_EOF:
-      if (s->bytes_parsed < dec->bytes_loaded) {
-	SWFDEC_WARNING ("%u bytes after EOF", dec->bytes_loaded - s->bytes_parsed);
+      if (s->bytes_parsed < SWFDEC_DECODER (s)->bytes_loaded) {
+	SWFDEC_WARNING ("%u bytes after EOF", SWFDEC_DECODER (s)->bytes_loaded - s->bytes_parsed);
       }
       return SWFDEC_STATUS_EOF;
   }
 
   /* copy state */
-  dec->frames_loaded = s->main_sprite->parse_frame;
+  SWFDEC_DECODER (s)->frames_loaded = s->main_sprite->parse_frame;
 
   return ret;
 }
 
+static SwfdecStatus
+swfdec_swf_decoder_parse (SwfdecDecoder *dec, SwfdecBuffer *buffer)
+{
+  SwfdecSwfDecoder *s = SWFDEC_SWF_DECODER (dec);
+  SwfdecStatus status = 0;
+
+  swfdec_swf_decoder_deflate (s, buffer);
+  do {
+    status |= swfdec_swf_decoder_parse_one (s);
+  } while ((status & (SWFDEC_STATUS_EOF | SWFDEC_STATUS_NEEDBITS | SWFDEC_STATUS_ERROR)) == 0);
+  return status;
+}
+
 static void
 swfdec_swf_decoder_class_init (SwfdecSwfDecoderClass *class)
 {
commit d48cec50d68f3909ae1be8fe39062e702e9d15c2
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Nov 7 11:35:05 2007 +0100

    fix memleak

diff --git a/libswfdec/swfdec_movie.c b/libswfdec/swfdec_movie.c
index 650c476..a223e97 100644
--- a/libswfdec/swfdec_movie.c
+++ b/libswfdec/swfdec_movie.c
@@ -886,6 +886,7 @@ swfdec_movie_render (SwfdecMovie *movie, cairo_t *cr,
     cairo_set_source (cr, pattern);
     cairo_set_operator (cr, swfdec_movie_get_operator_for_blend_mode (movie->blend_mode));
     cairo_paint (cr);
+    cairo_pattern_destroy (pattern);
   }
   cairo_restore (cr);
 }
commit 8f8d057f061892413cc84a43be781835c6ca909c
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 21:47:18 2007 +0100

    return -1 for get_next_event_time() when the context aborted.
    
    An aborted context never changes

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index fb9a23c..37b6f56 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -2262,6 +2262,9 @@ swfdec_player_get_next_event (SwfdecPlayer *player)
 
   g_return_val_if_fail (SWFDEC_IS_PLAYER (player), 0);
 
+  if (swfdec_as_context_is_aborted (SWFDEC_AS_CONTEXT (player)))
+    return -1;
+
   tick = swfdec_player_get_next_event_time (player);
   if (tick == G_MAXUINT64)
     return -1;
commit eb2861fdd8eb6141cea45d3b5a9b0ad8162c962e
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 18:18:30 2007 +0100

    add swfdec_buffer_queue_peek_buffer()

diff --git a/doc/swfdec-sections.txt b/doc/swfdec-sections.txt
index 2b3a774..1b61f67 100644
--- a/doc/swfdec-sections.txt
+++ b/doc/swfdec-sections.txt
@@ -151,6 +151,7 @@ swfdec_buffer_queue_push
 swfdec_buffer_queue_pull
 swfdec_buffer_queue_pull_buffer
 swfdec_buffer_queue_peek
+swfdec_buffer_queue_peek_buffer
 <SUBSECTION Standard>
 SWFDEC_TYPE_BUFFER
 swfdec_buffer_get_type
diff --git a/libswfdec/swfdec_buffer.c b/libswfdec/swfdec_buffer.c
index 7c86316..3f15975 100644
--- a/libswfdec/swfdec_buffer.c
+++ b/libswfdec/swfdec_buffer.c
@@ -525,6 +525,31 @@ swfdec_buffer_queue_pull (SwfdecBufferQueue * queue, guint length)
 }
 
 /**
+ * swfdec_buffer_queue_peek_buffer:
+ * @queue: a #SwfdecBufferQueue
+ *
+ * Gets the first buffer out of @queue and returns it. This function is 
+ * equivalent to calling swfdec_buffer_queue_peek() with the size of the
+ * first buffer in it.
+ *
+ * Returns: The first buffer in @queue or %NULL if @queue is empty. Use 
+ *          swfdec_buffer_unref() after use.
+ **/
+SwfdecBuffer *
+swfdec_buffer_queue_peek_buffer (SwfdecBufferQueue * queue)
+{
+  SwfdecBuffer *buffer;
+
+  g_return_val_if_fail (queue != NULL, NULL);
+  if (queue->buffers == NULL)
+    return NULL;
+
+  buffer = queue->buffers->data;
+
+  return swfdec_buffer_queue_peek (queue, buffer->length);
+}
+
+/**
  * swfdec_buffer_queue_peek:
  * @queue: a #SwfdecBufferQueue to read from
  * @length: amount of bytes to peek
diff --git a/libswfdec/swfdec_buffer.h b/libswfdec/swfdec_buffer.h
index b0d3765..717a295 100644
--- a/libswfdec/swfdec_buffer.h
+++ b/libswfdec/swfdec_buffer.h
@@ -78,6 +78,7 @@ void swfdec_buffer_queue_push (SwfdecBufferQueue * queue,
 SwfdecBuffer *swfdec_buffer_queue_pull (SwfdecBufferQueue * queue, guint length);
 SwfdecBuffer *swfdec_buffer_queue_pull_buffer (SwfdecBufferQueue * queue);
 SwfdecBuffer *swfdec_buffer_queue_peek (SwfdecBufferQueue * queue, guint length);
+SwfdecBuffer *swfdec_buffer_queue_peek_buffer (SwfdecBufferQueue * queue);
 SwfdecBufferQueue *swfdec_buffer_queue_ref (SwfdecBufferQueue * queue);
 void swfdec_buffer_queue_unref (SwfdecBufferQueue * queue);
 #endif
commit c78a7290e2a221d3be35a1a8c7c7d4215252f646
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 18:18:19 2007 +0100

    add initial support for MovieClipLoader events

diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index a0984ca..cb5dbb7 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -28,6 +28,7 @@
 #include "swfdec_as_frame_internal.h"
 #include "swfdec_as_internal.h"
 #include "swfdec_as_interpret.h"
+#include "swfdec_as_strings.h"
 #include "swfdec_character.h"
 #include "swfdec_debug.h"
 #include "swfdec_decoder.h"
@@ -104,6 +105,33 @@ swfdec_resource_loader_target_image (SwfdecResource *instance)
   }
 }
 
+/* NB: name must be GC'ed */
+static void
+swfdec_resource_emit_signal (SwfdecResource *resource, const char *name, SwfdecAsValue *args, guint n_args)
+{
+  SwfdecAsContext *cx;
+  SwfdecAsObject *movie;
+  SwfdecAsValue vals[n_args + 2];
+
+  if (resource->clip_loader == NULL)
+    return;
+  cx = SWFDEC_AS_OBJECT (resource->clip_loader)->context;
+  g_assert (resource->target);
+  movie = swfdec_action_lookup_object (cx, SWFDEC_PLAYER (cx)->roots->data, 
+      resource->target, resource->target + strlen (resource->target));
+  if (!SWFDEC_IS_SPRITE_MOVIE (movie)) {
+    SWFDEC_FIXME ("figure out if we emit nonetheless");
+    return;
+  }
+
+  SWFDEC_AS_VALUE_SET_STRING (&vals[0], name);
+  SWFDEC_AS_VALUE_SET_OBJECT (&vals[1], movie);
+  if (n_args)
+    memcpy (&vals[2], args, sizeof (SwfdecAsValue) * n_args);
+  swfdec_as_object_call (SWFDEC_AS_OBJECT (resource->clip_loader), SWFDEC_AS_STR_broadcastMessage, 
+      n_args + 2, vals, NULL);
+}
+
 static void
 swfdec_resource_loader_target_open (SwfdecLoaderTarget *target, SwfdecLoader *loader)
 {
@@ -119,6 +147,7 @@ swfdec_resource_loader_target_open (SwfdecLoaderTarget *target, SwfdecLoader *lo
     SWFDEC_INFO ("set manual movie variables: %s", instance->variables);
     swfdec_movie_set_variables (SWFDEC_MOVIE (instance->movie), instance->variables);
   }
+  swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadStart, NULL, 0);
 }
 
 static void
@@ -126,6 +155,7 @@ swfdec_resource_loader_target_parse (SwfdecLoaderTarget *target, SwfdecLoader *l
 {
   SwfdecResource *instance = SWFDEC_RESOURCE (target);
   SwfdecPlayer *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (instance->movie)->context);
+  SwfdecAsValue vals[2];
   SwfdecDecoder *dec = instance->decoder;
   SwfdecDecoderClass *klass;
 
@@ -180,6 +210,23 @@ swfdec_resource_loader_target_parse (SwfdecLoaderTarget *target, SwfdecLoader *l
 	return;
     }
   }
+  SWFDEC_AS_VALUE_SET_INT (&vals[0], dec->bytes_loaded);
+  SWFDEC_AS_VALUE_SET_INT (&vals[1], dec->bytes_total);
+  swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadProgress, vals, 2);
+}
+
+static void
+swfdec_resource_loader_target_eof (SwfdecLoaderTarget *target, SwfdecLoader *loader)
+{
+  SwfdecResource *instance = SWFDEC_RESOURCE (target);
+  SwfdecAsValue vals[2];
+
+  SwfdecDecoder *dec = instance->decoder;
+  SWFDEC_AS_VALUE_SET_INT (&vals[0], dec->bytes_loaded);
+  SWFDEC_AS_VALUE_SET_INT (&vals[1], dec->bytes_total);
+  swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadProgress, vals, 2);
+  SWFDEC_AS_VALUE_SET_INT (&vals[0], 0); /* FIXME */
+  swfdec_resource_emit_signal (instance, SWFDEC_AS_STR_onLoadComplete, vals, 1);
 }
 
 static void
@@ -188,6 +235,7 @@ swfdec_resource_loader_target_init (SwfdecLoaderTargetInterface *iface)
   iface->get_player = swfdec_resource_loader_target_get_player;
   iface->open = swfdec_resource_loader_target_open;
   iface->parse = swfdec_resource_loader_target_parse;
+  iface->eof = swfdec_resource_loader_target_eof;
 }
 
 static void
commit 7c41e278c85cc306b640a309cbe8e6e27f789420
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 18:15:14 2007 +0100

    fix debug message

diff --git a/libswfdec/swfdec_swf_decoder.c b/libswfdec/swfdec_swf_decoder.c
index 7269b68..b186ed8 100644
--- a/libswfdec/swfdec_swf_decoder.c
+++ b/libswfdec/swfdec_swf_decoder.c
@@ -109,8 +109,9 @@ swfdec_swf_decoder_deflate_all (SwfdecSwfDecoder * s)
       guint max = buffer->length;
 
       if (dec->bytes_loaded + max > s->buffer->length) {
+	SWFDEC_WARNING ("%u bytes more than declared filesize", 
+	    dec->bytes_loaded + max - s->buffer->length);
 	max = s->buffer->length - dec->bytes_loaded;
-	SWFDEC_WARNING ("%u bytes more than declared filesize", max - dec->bytes_loaded);
       }
       memcpy (s->buffer->data + dec->bytes_loaded, buffer->data, max);
       dec->bytes_loaded += max;
commit 5c1b8846d337f05d35b982ec5decc1195ddc0eac
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 18:05:16 2007 +0100

    add test for MovieClipLoader properties

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index a8788c4..b7474f0 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -991,6 +991,15 @@ EXTRA_DIST = \
 	moviecliploader-getprogress-7.swf.trace \
 	moviecliploader-getprogress-8.swf \
 	moviecliploader-getprogress-8.swf.trace \
+	moviecliploader-properties.as \
+	moviecliploader-properties-5.swf \
+	moviecliploader-properties-5.swf.trace \
+	moviecliploader-properties-6.swf \
+	moviecliploader-properties-6.swf.trace \
+	moviecliploader-properties-7.swf \
+	moviecliploader-properties-7.swf.trace \
+	moviecliploader-properties-8.swf \
+	moviecliploader-properties-8.swf.trace \
 	name.swf \
 	name.swf.trace \
 	name2.swf \
diff --git a/test/trace/moviecliploader-properties-5.swf b/test/trace/moviecliploader-properties-5.swf
new file mode 100644
index 0000000..0cf5dc6
Binary files /dev/null and b/test/trace/moviecliploader-properties-5.swf differ
diff --git a/test/trace/moviecliploader-properties-5.swf.trace b/test/trace/moviecliploader-properties-5.swf.trace
new file mode 100644
index 0000000..fb21320
--- /dev/null
+++ b/test/trace/moviecliploader-properties-5.swf.trace
@@ -0,0 +1,33 @@
+_global.MovieClipLoader = function
+  __proto__ (hpn) = _global.Object.__proto__
+  constructor (hp) = _global.Object.constructor
+  prototype (hp) = object
+    __proto__ (hpn) = _global.Object.prototype
+    _listeners (hpn) = object
+      __proto__ (hp) = _global.Array.prototype
+      constructor (hp) = _global.Array
+      length (hp) = number : 0
+    addListener (hpn) = _global.AsBroadcaster.addListener
+    broadcastMessage (hpn) = function
+      __proto__ (hpn) = _global.Object.__proto__
+      constructor (hp) = _global.Object.constructor
+    constructor (hp) = _global.Object
+    getProgress (hpn) = function
+      __proto__ (hpn) = _global.Object.__proto__
+      constructor (hp) = _global.Object.constructor
+    loadClip (hpn) = function
+      __proto__ (hpn) = _global.Object.__proto__
+      constructor (hp) = _global.Object.constructor
+    removeListener (hpn) = _global.AsBroadcaster.removeListener
+    unloadClip (hpn) = function
+      __proto__ (hpn) = _global.Object.__proto__
+      constructor (hp) = _global.Object.constructor
+MovieClipLoader.instance = object
+  __constructor__ (hn) = _global.MovieClipLoader
+  __proto__ (hp) = _global.MovieClipLoader.prototype
+  _listeners (hp) = object
+    0 = undefined
+    __proto__ (hp) = _global.Array.prototype
+    constructor (hp) = _global.Array
+    length (hp) = number : 1
+  constructor (h) = _global.MovieClipLoader
diff --git a/test/trace/moviecliploader-properties-6.swf b/test/trace/moviecliploader-properties-6.swf
new file mode 100644
index 0000000..9a64c5f
Binary files /dev/null and b/test/trace/moviecliploader-properties-6.swf differ
diff --git a/test/trace/moviecliploader-properties-6.swf.trace b/test/trace/moviecliploader-properties-6.swf.trace
new file mode 100644
index 0000000..f4149cd
--- /dev/null
+++ b/test/trace/moviecliploader-properties-6.swf.trace
@@ -0,0 +1,33 @@
+_global.MovieClipLoader = function
+  __proto__ (hp) = _global.Function.prototype
+  constructor (hp) = _global.Function
+  prototype (hp) = object
+    __proto__ (hpn) = _global.Object.prototype
+    _listeners (hpn) = object
+      __proto__ (hp) = _global.Array.prototype
+      constructor (hp) = _global.Array
+      length (hp) = number : 0
+    addListener (hpn) = _global.AsBroadcaster.addListener
+    broadcastMessage (hpn) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    constructor (hpC) = _global.Object
+    getProgress (hpn) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    loadClip (hpn) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    removeListener (hpn) = _global.AsBroadcaster.removeListener
+    unloadClip (hpn) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+MovieClipLoader.instance = object
+  __constructor__ (h) = _global.MovieClipLoader
+  __proto__ (hp) = _global.MovieClipLoader.prototype
+  _listeners (hp) = object
+    0 = undefined
+    __proto__ (hp) = _global.Array.prototype
+    constructor (hp) = _global.Array
+    length (hp) = number : 1
+  constructor (h) = _global.MovieClipLoader
diff --git a/test/trace/moviecliploader-properties-7.swf b/test/trace/moviecliploader-properties-7.swf
new file mode 100644
index 0000000..5558076
Binary files /dev/null and b/test/trace/moviecliploader-properties-7.swf differ
diff --git a/test/trace/moviecliploader-properties-7.swf.trace b/test/trace/moviecliploader-properties-7.swf.trace
new file mode 100644
index 0000000..5729f4a
--- /dev/null
+++ b/test/trace/moviecliploader-properties-7.swf.trace
@@ -0,0 +1,32 @@
+_global.MovieClipLoader = function
+  __proto__ (hp) = _global.Function.prototype
+  constructor (hp) = _global.Function
+  prototype (hp) = object
+    __proto__ (hp) = _global.Object.prototype
+    _listeners (hp) = object
+      __proto__ (hp) = _global.Array.prototype
+      constructor (hp) = _global.Array
+      length (hp) = number : 0
+    addListener (hp) = _global.AsBroadcaster.addListener
+    broadcastMessage (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    constructor (hp) = _global.MovieClipLoader
+    getProgress (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    loadClip (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    removeListener (hp) = _global.AsBroadcaster.removeListener
+    unloadClip (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+MovieClipLoader.instance = object
+  __constructor__ (h) = _global.MovieClipLoader
+  __proto__ (hp) = _global.MovieClipLoader.prototype
+  _listeners (hp) = object
+    0 = undefined
+    __proto__ (hp) = _global.Array.prototype
+    constructor (hp) = _global.Array
+    length (hp) = number : 1
diff --git a/test/trace/moviecliploader-properties-8.swf b/test/trace/moviecliploader-properties-8.swf
new file mode 100644
index 0000000..d5efe47
Binary files /dev/null and b/test/trace/moviecliploader-properties-8.swf differ
diff --git a/test/trace/moviecliploader-properties-8.swf.trace b/test/trace/moviecliploader-properties-8.swf.trace
new file mode 100644
index 0000000..5729f4a
--- /dev/null
+++ b/test/trace/moviecliploader-properties-8.swf.trace
@@ -0,0 +1,32 @@
+_global.MovieClipLoader = function
+  __proto__ (hp) = _global.Function.prototype
+  constructor (hp) = _global.Function
+  prototype (hp) = object
+    __proto__ (hp) = _global.Object.prototype
+    _listeners (hp) = object
+      __proto__ (hp) = _global.Array.prototype
+      constructor (hp) = _global.Array
+      length (hp) = number : 0
+    addListener (hp) = _global.AsBroadcaster.addListener
+    broadcastMessage (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    constructor (hp) = _global.MovieClipLoader
+    getProgress (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    loadClip (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+    removeListener (hp) = _global.AsBroadcaster.removeListener
+    unloadClip (hp) = function
+      __proto__ (hp) = _global.Function.prototype
+      constructor (hp) = _global.Function
+MovieClipLoader.instance = object
+  __constructor__ (h) = _global.MovieClipLoader
+  __proto__ (hp) = _global.MovieClipLoader.prototype
+  _listeners (hp) = object
+    0 = undefined
+    __proto__ (hp) = _global.Array.prototype
+    constructor (hp) = _global.Array
+    length (hp) = number : 1
diff --git a/test/trace/moviecliploader-properties.as b/test/trace/moviecliploader-properties.as
new file mode 100644
index 0000000..0230d55
--- /dev/null
+++ b/test/trace/moviecliploader-properties.as
@@ -0,0 +1,8 @@
+// makeswf -v 7 -s 200x150 -r 1 -o movie23.swf movie23.as
+
+#include "trace_properties.as"
+
+trace_properties (MovieClipLoader, "_global", "MovieClipLoader");
+trace_properties (new MovieClipLoader (), "MovieClipLoader", "instance");
+
+loadMovie ("fscommand:QUIT", "");
commit 4b058119af441b3769d858f23f1ed195031efad6
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 18:02:54 2007 +0100

    add a _listeners property when constructing a MovieClipLoader
    
    and add the loader to the listeners.

diff --git a/libswfdec/swfdec_movie_clip_loader.c b/libswfdec/swfdec_movie_clip_loader.c
index 9c48544..33ff187 100644
--- a/libswfdec/swfdec_movie_clip_loader.c
+++ b/libswfdec/swfdec_movie_clip_loader.c
@@ -22,6 +22,7 @@
 #endif
 
 #include "swfdec_movie_clip_loader.h"
+#include "swfdec_as_array.h"
 #include "swfdec_as_internal.h"
 #include "swfdec_as_strings.h"
 #include "swfdec_debug.h"
@@ -47,6 +48,20 @@ void
 swfdec_movie_clip_loader_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
 {
+  SwfdecAsValue val;
+  SwfdecAsObject *array;
+
+  if (!swfdec_as_context_is_constructing (cx))
+    return;
+
+  array = swfdec_as_array_new (cx);
+  if (array == NULL)
+    return;
+  SWFDEC_AS_VALUE_SET_OBJECT (&val, object);
+  swfdec_as_array_push (SWFDEC_AS_ARRAY (array), &val);
+  SWFDEC_AS_VALUE_SET_OBJECT (&val, array);
+  swfdec_as_object_set_variable_and_flags (object, SWFDEC_AS_STR__listeners, 
+      &val, SWFDEC_AS_VARIABLE_HIDDEN | SWFDEC_AS_VARIABLE_PERMANENT);
 }
 
 SWFDEC_AS_NATIVE (112, 100, swfdec_movie_clip_loader_loadClip)
commit a25d8c5188ab0791fcdd598b834beb2fd86c657f
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 17:52:34 2007 +0100

    move list away when performing events
    
    This makes sure that events that get queued while iterating don't get
    executed. That gets around inifinite loops.
    I think this is not possible, because we don't execute events there, but better
    be careful.

diff --git a/libswfdec/swfdec_resource_request.c b/libswfdec/swfdec_resource_request.c
index 398335a..48ffcd3 100644
--- a/libswfdec/swfdec_resource_request.c
+++ b/libswfdec/swfdec_resource_request.c
@@ -72,11 +72,14 @@ swfdec_request_resource_perform_one (gpointer requestp, gpointer playerp)
 void
 swfdec_player_resource_request_perform (SwfdecPlayer *player)
 {
+  GSList *list;
+
   g_return_if_fail (SWFDEC_IS_PLAYER (player));
 
-  g_slist_foreach (player->resource_requests, swfdec_request_resource_perform_one, player);
-  g_slist_free (player->resource_requests);
+  list = player->resource_requests;
   player->resource_requests = NULL;
+  g_slist_foreach (list, swfdec_request_resource_perform_one, player);
+  g_slist_free (list);
 }
 
 void
commit aabdf29f359477ab99db3cdaa74972e52148661e
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 17:50:41 2007 +0100

    add MovieClipLoader event names

diff --git a/libswfdec/swfdec_as_strings.c b/libswfdec/swfdec_as_strings.c
index b0a9e28..4326235 100644
--- a/libswfdec/swfdec_as_strings.c
+++ b/libswfdec/swfdec_as_strings.c
@@ -424,5 +424,10 @@ const char swfdec_as_strings[] =
   SWFDEC_AS_CONSTANT_STRING ("onScroller")
   SWFDEC_AS_CONSTANT_STRING ("styleSheet")
   SWFDEC_AS_CONSTANT_STRING ("_styles")
+  SWFDEC_AS_CONSTANT_STRING ("onLoadStart")
+  SWFDEC_AS_CONSTANT_STRING ("onLoadComplete")
+  SWFDEC_AS_CONSTANT_STRING ("onLoadError")
+  SWFDEC_AS_CONSTANT_STRING ("onLoadInit")
+  SWFDEC_AS_CONSTANT_STRING ("onLoadProgress")
   /* add more here */
 ;
commit 363777b0bb2cab3f64eb687c74e68c97e4ba0ce9
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 12:49:08 2007 +0100

    Create the SwfdcResource in the initial _load call and pass the MovieClipLoader
    with it.

diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index 68e2725..a0984ca 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -193,17 +193,25 @@ swfdec_resource_loader_target_init (SwfdecLoaderTargetInterface *iface)
 static void
 swfdec_resource_dispose (GObject *object)
 {
-  SwfdecResource *instance = SWFDEC_RESOURCE (object);
+  SwfdecResource *resource = SWFDEC_RESOURCE (object);
 
-  swfdec_loader_set_target (instance->loader, NULL);
-  g_object_unref (instance->loader);
-  if (instance->decoder) {
-    g_object_unref (instance->decoder);
-    instance->decoder = NULL;
+  swfdec_loader_set_target (resource->loader, NULL);
+  if (resource->loader) {
+    g_object_unref (resource->loader);
+    resource->loader = NULL;
   }
-  g_free (instance->variables);
-  g_hash_table_destroy (instance->exports);
-  g_hash_table_destroy (instance->export_names);
+  if (resource->decoder) {
+    g_object_unref (resource->decoder);
+    resource->decoder = NULL;
+  }
+  if (resource->clip_loader) {
+    g_object_unref (resource->clip_loader);
+    resource->clip_loader = NULL;
+  }
+  g_free (resource->target);
+  g_free (resource->variables);
+  g_hash_table_destroy (resource->exports);
+  g_hash_table_destroy (resource->export_names);
 
   G_OBJECT_CLASS (swfdec_resource_parent_class)->dispose (object);
 }
@@ -268,6 +276,9 @@ void
 swfdec_resource_mark (SwfdecResource *resource)
 {
   g_return_if_fail (SWFDEC_IS_RESOURCE (resource));
+
+  if (resource->clip_loader)
+    swfdec_as_object_mark (SWFDEC_AS_OBJECT (resource->clip_loader));
 }
 
 gpointer
@@ -300,12 +311,11 @@ swfdec_resource_add_export (SwfdecResource *instance, SwfdecCharacter *character
 }
 
 static void
-swfdec_resource_do_load (SwfdecPlayer *player, SwfdecLoader *loader, gpointer targetp)
+swfdec_resource_do_load (SwfdecPlayer *player, SwfdecLoader *loader, gpointer resourcep)
 {
+  SwfdecResource *resource = SWFDEC_RESOURCE (resourcep);
   SwfdecSpriteMovie *movie;
-  SwfdecResource *resource;
   int level = -1;
-  char *target = targetp;
 
   if (loader == NULL) {
     /* *** Security Sandbox Violation *** */
@@ -313,12 +323,15 @@ swfdec_resource_do_load (SwfdecPlayer *player, SwfdecLoader *loader, gpointer ta
   }
 
   movie = (SwfdecSpriteMovie *) swfdec_action_lookup_object (SWFDEC_AS_CONTEXT (player),
-      player->roots->data, target, target + strlen (target));
-  resource = swfdec_resource_new (loader, NULL);
+      player->roots->data, resource->target, resource->target + strlen (resource->target));
+  swfdec_resource_set_loader (resource, loader);
   if (!SWFDEC_IS_SPRITE_MOVIE (movie)) {
-    level = swfdec_player_get_level (player, target);
-    if (level < 0)
-      goto fail;
+    level = swfdec_player_get_level (player, resource->target);
+    if (level < 0) {
+      SWFDEC_WARNING ("%s does not reference a movie, not loading %s", resource->target,
+	  swfdec_url_get_url (swfdec_loader_get_url (loader)));
+      swfdec_loader_close (loader);
+    }
     movie = swfdec_player_get_movie_at_level (player, level);
   }
   if (movie == NULL) {
@@ -340,14 +353,6 @@ swfdec_resource_do_load (SwfdecPlayer *player, SwfdecLoader *loader, gpointer ta
     swfdec_movie_remove (mov);
     movie = SWFDEC_SPRITE_MOVIE (copy);
   }
-  g_object_unref (resource);
-  g_object_unref (loader);
-  return;
-
-fail:
-  SWFDEC_WARNING ("%s does not reference a movie, not loading %s", target,
-      swfdec_url_get_url (swfdec_loader_get_url (loader)));
-  swfdec_loader_close (loader);
   g_object_unref (loader);
   return;
 }
@@ -358,6 +363,7 @@ swfdec_resource_load (SwfdecPlayer *player, const char *target, const char *url,
     SwfdecLoaderRequest request, SwfdecBuffer *buffer, SwfdecMovieClipLoader *loader)
 {
   SwfdecSpriteMovie *movie;
+  SwfdecResource *resource;
   char *path;
 
   g_return_if_fail (SWFDEC_IS_PLAYER (player));
@@ -375,6 +381,10 @@ swfdec_resource_load (SwfdecPlayer *player, const char *target, const char *url,
     SWFDEC_WARNING ("%s does not reference a movie, not loading %s", target, url);
     return;
   }
+  resource = g_object_new (SWFDEC_TYPE_RESOURCE, NULL);
+  resource->target = path;
+  if (loader)
+    resource->clip_loader = g_object_ref (loader);
   swfdec_player_request_resource (player, SWFDEC_AS_CONTEXT (player)->frame->security, 
-      url, request, buffer, swfdec_resource_do_load, path, g_free);
+      url, request, buffer, swfdec_resource_do_load, resource, g_object_unref);
 }
diff --git a/libswfdec/swfdec_resource.h b/libswfdec/swfdec_resource.h
index 01b4aea..ea3192e 100644
--- a/libswfdec/swfdec_resource.h
+++ b/libswfdec/swfdec_resource.h
@@ -48,6 +48,10 @@ struct _SwfdecResource
 
   GHashTable *		exports;	/* string->SwfdecCharacter mapping of exported characters */
   GHashTable *		export_names;	/* SwfdecCharacter->string mapping of exported characters */
+
+  /* only used while loading */
+  char *		target;		/* target path we use for signalling */
+  SwfdecMovieClipLoader *clip_loader;	/* loader that gets notified about load events */
 };
 
 struct _SwfdecResourceClass
commit 625d1fac70b93ef42aec8b0d49e9c618ea41da6a
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 12:20:37 2007 +0100

    split out loader setting code from creation function

diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index 97617e4..68e2725 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -225,22 +225,32 @@ swfdec_resource_init (SwfdecResource *instance)
       g_object_unref, g_free);
 }
 
+static void
+swfdec_resource_set_loader (SwfdecResource *resource, SwfdecLoader *loader)
+{
+  g_return_if_fail (SWFDEC_IS_RESOURCE (resource));
+  g_return_if_fail (SWFDEC_IS_LOADER (loader));
+  g_return_if_fail (resource->loader == NULL);
+
+  resource->loader = g_object_ref (loader);
+  swfdec_flash_security_set_url (SWFDEC_FLASH_SECURITY (resource),
+      swfdec_loader_get_url (loader));
+}
+
 SwfdecResource *
 swfdec_resource_new (SwfdecLoader *loader, const char *variables)
 {
-  SwfdecResource *swf;
+  SwfdecResource *resource;
 
   g_return_val_if_fail (SWFDEC_IS_LOADER (loader), NULL);
 
-  swf = g_object_new (SWFDEC_TYPE_RESOURCE, NULL);
+  resource = g_object_new (SWFDEC_TYPE_RESOURCE, NULL);
   /* set important variables */
-  swf->variables = g_strdup (variables);
+  resource->variables = g_strdup (variables);
   /* set loader (that depends on those vars) */
-  swf->loader = g_object_ref (loader);
-  swfdec_flash_security_set_url (SWFDEC_FLASH_SECURITY (swf),
-      swfdec_loader_get_url (loader));
+  swfdec_resource_set_loader (resource, loader);
 
-  return swf;
+  return resource;
 }
 
 void
commit 7e9f9d1b24e17cc9d4c139cdca8a74b4f8529830
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 11:59:53 2007 +0100

    add test for MovieClipLoader.getProgress()

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 6762ef1..a8788c4 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -982,6 +982,15 @@ EXTRA_DIST = \
 	movieclip-target-6.swf.trace \
 	movieclip-target-7.swf \
 	movieclip-target-7.swf.trace \
+	moviecliploader-getprogress.as \
+	moviecliploader-getprogress-5.swf \
+	moviecliploader-getprogress-5.swf.trace \
+	moviecliploader-getprogress-6.swf \
+	moviecliploader-getprogress-6.swf.trace \
+	moviecliploader-getprogress-7.swf \
+	moviecliploader-getprogress-7.swf.trace \
+	moviecliploader-getprogress-8.swf \
+	moviecliploader-getprogress-8.swf.trace \
 	name.swf \
 	name.swf.trace \
 	name2.swf \
diff --git a/test/trace/moviecliploader-getprogress-5.swf b/test/trace/moviecliploader-getprogress-5.swf
new file mode 100644
index 0000000..178452f
Binary files /dev/null and b/test/trace/moviecliploader-getprogress-5.swf differ
diff --git a/test/trace/moviecliploader-getprogress-5.swf.trace b/test/trace/moviecliploader-getprogress-5.swf.trace
new file mode 100644
index 0000000..53b09ed
--- /dev/null
+++ b/test/trace/moviecliploader-getprogress-5.swf.trace
@@ -0,0 +1,19 @@
+Checking: _level0 (movieclip)
+undefined
+undefined
+undefined
+Checking:  (undefined)
+undefined
+undefined
+undefined
+Checking:  (undefined)
+undefined
+undefined
+undefined
+Checking: /a (string)
+undefined
+undefined
+undefined
+undefined
+undefined
+undefined
diff --git a/test/trace/moviecliploader-getprogress-6.swf b/test/trace/moviecliploader-getprogress-6.swf
new file mode 100644
index 0000000..309dc74
Binary files /dev/null and b/test/trace/moviecliploader-getprogress-6.swf differ
diff --git a/test/trace/moviecliploader-getprogress-6.swf.trace b/test/trace/moviecliploader-getprogress-6.swf.trace
new file mode 100644
index 0000000..c4aaf71
--- /dev/null
+++ b/test/trace/moviecliploader-getprogress-6.swf.trace
@@ -0,0 +1,19 @@
+Checking: _level0 (movieclip)
+undefined
+undefined
+undefined
+Checking:  (undefined)
+undefined
+undefined
+undefined
+Checking: _level0.a (movieclip)
+undefined
+undefined
+undefined
+Checking: /a (string)
+undefined
+undefined
+undefined
+undefined
+undefined
+undefined
diff --git a/test/trace/moviecliploader-getprogress-7.swf b/test/trace/moviecliploader-getprogress-7.swf
new file mode 100644
index 0000000..f1d02af
Binary files /dev/null and b/test/trace/moviecliploader-getprogress-7.swf differ
diff --git a/test/trace/moviecliploader-getprogress-7.swf.trace b/test/trace/moviecliploader-getprogress-7.swf.trace
new file mode 100644
index 0000000..afc9b8c
--- /dev/null
+++ b/test/trace/moviecliploader-getprogress-7.swf.trace
@@ -0,0 +1,19 @@
+Checking: _level0 (movieclip)
+[type Object]
+467
+467
+Checking: undefined (undefined)
+undefined
+undefined
+undefined
+Checking: _level0.a (movieclip)
+[type Object]
+0
+0
+Checking: /a (string)
+[type Object]
+0
+0
+undefined
+undefined
+undefined
diff --git a/test/trace/moviecliploader-getprogress-8.swf b/test/trace/moviecliploader-getprogress-8.swf
new file mode 100644
index 0000000..3bf7ace
Binary files /dev/null and b/test/trace/moviecliploader-getprogress-8.swf differ
diff --git a/test/trace/moviecliploader-getprogress-8.swf.trace b/test/trace/moviecliploader-getprogress-8.swf.trace
new file mode 100644
index 0000000..afc9b8c
--- /dev/null
+++ b/test/trace/moviecliploader-getprogress-8.swf.trace
@@ -0,0 +1,19 @@
+Checking: _level0 (movieclip)
+[type Object]
+467
+467
+Checking: undefined (undefined)
+undefined
+undefined
+undefined
+Checking: _level0.a (movieclip)
+[type Object]
+0
+0
+Checking: /a (string)
+[type Object]
+0
+0
+undefined
+undefined
+undefined
diff --git a/test/trace/moviecliploader-getprogress.as b/test/trace/moviecliploader-getprogress.as
new file mode 100644
index 0000000..0ba0a84
--- /dev/null
+++ b/test/trace/moviecliploader-getprogress.as
@@ -0,0 +1,24 @@
+// makeswf -v 7 -s 200x150 -r 1 -o moviecliploader-getprogress.swf moviecliploader-getprogress.as
+
+loader = new MovieClipLoader ();
+function check (x) {
+  p = loader.getProgress (x);
+  trace ("Checking: " + x + " (" + typeof (x) + ")");
+  trace (p);
+  trace (p.bytesLoaded);
+  trace (p.bytesTotal);
+};
+
+check (this);
+check ();
+createEmptyMovieClip ("a", 0);
+check (a);
+check ("/a");
+
+p.getProgress = loader.getProgress;
+p = p.getProgress (this);
+trace (p);
+trace (p.bytesLoaded);
+trace (p.bytesTotal);
+
+loadMovie ("fscommand:QUIT", "");
commit c75cab36bac71522f53d0f4ef80646dc2ce0a917
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 11:57:59 2007 +0100

    add MovieClipLoader object

diff --git a/libswfdec/swfdec_initialize.as b/libswfdec/swfdec_initialize.as
index bfb2e78..51a8152 100644
--- a/libswfdec/swfdec_initialize.as
+++ b/libswfdec/swfdec_initialize.as
@@ -292,6 +292,13 @@ ASSetPropFlags (MovieClip.prototype, "getDepth", 128);
 ASSetNative (MovieClip.prototype, 901, "6createEmptyMovieClip,6beginFill,6beginGradientFill,6moveTo,6lineTo,6curveTo,6lineStyle,6endFill,6clear");
 ASSetPropFlags (MovieClip.prototype, null, 3);
 
+/* MovieClipLoader */
+
+MovieClipLoader = ASconstructor (112, 0);
+ASSetNative(MovieClipLoader.prototype, 112, "7loadClip,7getProgress,7unloadClip", 100);
+AsBroadcaster.initialize(MovieClipLoader.prototype);
+ASSetPropFlags(MovieClipLoader.prototype, null, 1027);
+
 /* TextField */
 
 TextField = ASconstructor (104, 0);
diff --git a/libswfdec/swfdec_initialize.h b/libswfdec/swfdec_initialize.h
index e70f987..49adcd2 100644
--- a/libswfdec/swfdec_initialize.h
+++ b/libswfdec/swfdec_initialize.h
@@ -2,7 +2,7 @@
 
 /* compiled from swfdec_initialize.as */
 const unsigned char swfdec_initialize[] = {
-  0x88, 0xCC, 0x07, 0xBF,  0x00, 0x41, 0x53, 0x53,  0x65, 0x74, 0x4E, 0x61,  0x74, 0x69, 0x76, 0x65,
+  0x88, 0xFF, 0x07, 0xC1,  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,
@@ -83,492 +83,502 @@ const unsigned char swfdec_initialize[] = {
   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,
+  0x46, 0x69, 0x6C, 0x6C,  0x2C, 0x36, 0x63, 0x6C,  0x65, 0x61, 0x72, 0x00,  0x4D, 0x6F, 0x76, 0x69,
+  0x65, 0x43, 0x6C, 0x69,  0x70, 0x4C, 0x6F, 0x61,  0x64, 0x65, 0x72, 0x00,  0x37, 0x6C, 0x6F, 0x61,
+  0x64, 0x43, 0x6C, 0x69,  0x70, 0x2C, 0x37, 0x67,  0x65, 0x74, 0x50, 0x72,  0x6F, 0x67, 0x72, 0x65,
+  0x73, 0x73, 0x2C, 0x37,  0x75, 0x6E, 0x6C, 0x6F,  0x61, 0x64, 0x43, 0x6C,  0x69, 0x70, 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, 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,
+  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, 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,
+  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,
-  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,
+  0x7B, 0x07, 0x00, 0x00,  0x00, 0x00, 0x07, 0x70,  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,
+  0x08, 0x48, 0x3D, 0x1D,  0x96, 0x0E, 0x00, 0x07,  0x64, 0x00, 0x00, 0x00,  0x08, 0x7C, 0x07, 0x70,
+  0x00, 0x00, 0x00, 0x08,  0x7B, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x0B, 0x4E,  0x96, 0x07, 0x00, 0x07,
+  0x04, 0x00, 0x00, 0x00,  0x08, 0x00, 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, 0x03, 0x04,  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, 0x13, 0x00, 0x08,  0x7D, 0x07, 0x00, 0x00,  0x00, 0x00, 0x07, 0x68,
+  0x00, 0x00, 0x00, 0x07,  0x02, 0x00, 0x00, 0x00,  0x08, 0x48, 0x3D, 0x1D,  0x96, 0x02, 0x00, 0x08,
+  0x7D, 0x1C, 0x96, 0x13,  0x00, 0x08, 0x7E, 0x07,  0xC9, 0x00, 0x00, 0x00,  0x07, 0x68, 0x00, 0x00,
+  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x7D, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x13,  0x00, 0x08, 0x7F, 0x07,  0x65, 0x00, 0x00, 0x00,
+  0x07, 0x68, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x7D, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x13,  0x00, 0x08, 0x80, 0x07,
+  0x66, 0x00, 0x00, 0x00,  0x07, 0x68, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,
+  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x7D, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x13,
+  0x00, 0x08, 0x81, 0x07,  0x67, 0x00, 0x00, 0x00,  0x07, 0x68, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,
+  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x7D, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x0B, 0x4E, 0x96, 0x13,  0x00, 0x08, 0x82, 0x07,  0x68, 0x00, 0x00, 0x00,  0x07, 0x68, 0x00, 0x00,
+  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x7D, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x13,  0x00, 0x08, 0x83, 0x07,  0x69, 0x00, 0x00, 0x00,
+  0x07, 0x68, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x7D, 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, 0x7D, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x13,
+  0x00, 0x08, 0x84, 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, 0x84,
+  0x08, 0x7D, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x0B,  0x4E, 0x96, 0x07, 0x00,  0x07, 0x03, 0x00, 0x00,
+  0x00, 0x08, 0x05, 0x3D,  0x17, 0x96, 0x02, 0x00,  0x08, 0x7D, 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, 0x7D, 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, 0x7D,  0x1C, 0x96, 0x07, 0x00,
+  0x07, 0x03, 0x00, 0x00,  0x00, 0x08, 0x05, 0x3D,  0x17, 0x96, 0x13, 0x00,  0x08, 0x85, 0x07, 0x00,
+  0x00, 0x00, 0x00, 0x07,  0x6E, 0x00, 0x00, 0x00,  0x07, 0x02, 0x00, 0x00,  0x00, 0x08, 0x48, 0x3D,
+  0x1D, 0x96, 0x02, 0x00,  0x08, 0x7D, 0x1C, 0x96,  0x13, 0x00, 0x08, 0x86,  0x07, 0x00, 0x00, 0x00,
+  0x00, 0x07, 0x71, 0x00,  0x00, 0x00, 0x07, 0x02,  0x00, 0x00, 0x00, 0x08,  0x48, 0x3D, 0x4F, 0x96,
+  0x02, 0x00, 0x08, 0x7D,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x86, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0B,
+  0x4E, 0x96, 0x02, 0x00,  0x08, 0x87, 0x9B, 0x07,  0x00, 0x00, 0x01, 0x00,  0x6F, 0x00, 0x67, 0x00,
+  0x96, 0x02, 0x00, 0x08,  0x1A, 0x1C, 0x44, 0x96,  0x02, 0x00, 0x08, 0x88,  0x49, 0x12, 0x12, 0x9D,
+  0x02, 0x00, 0x05, 0x00,  0x96, 0x01, 0x00, 0x02,  0x3E, 0x96, 0x07, 0x00,  0x08, 0x89, 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, 0x8A, 0x04, 0x00,
+  0x3C, 0x96, 0x02, 0x00,  0x08, 0x89, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x8A,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x1A, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x8A,  0x1C, 0x4E, 0x4F, 0x99,  0x02, 0x00, 0xCB, 0xFF,
+  0x96, 0x02, 0x00, 0x08,  0x89, 0x1C, 0x3E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x7D, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x86, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x8B, 0x9B,
+  0x05, 0x00, 0x00, 0x00,  0x00, 0x36, 0x00, 0x96,  0x02, 0x00, 0x08, 0x08,  0x1C, 0x96, 0x07, 0x00,
+  0x08, 0x8C, 0x07, 0x00,  0x00, 0x00, 0x00, 0x43,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x08, 0x1C, 0x96,
+  0x07, 0x00, 0x08, 0x8D,  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,  0x07, 0x00, 0x07, 0x00,
+  0x00, 0x00, 0x00, 0x08,  0x08, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x8E, 0x52,  0x17, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x7D, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x86, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x0B, 0x4E,
+  0x96, 0x02, 0x00, 0x08,  0x8F, 0x9B, 0x0A, 0x00,  0x00, 0x01, 0x00, 0x6E,  0x61, 0x6D, 0x65, 0x00,
+  0x25, 0x00, 0x96, 0x02,  0x00, 0x08, 0x08, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x8C, 0x4E, 0x96, 0x02,
+  0x00, 0x08, 0x0C, 0x1C,  0x4E, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x08, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x87, 0x52, 0x3E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x7D, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x86, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x90, 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,  0x8C, 0x4E, 0x12, 0x12,
+  0x9D, 0x02, 0x00, 0x12,  0x00, 0x96, 0x02, 0x00,  0x08, 0x08, 0x1C, 0x96,  0x07, 0x00, 0x08, 0x8C,
+  0x07, 0x00, 0x00, 0x00,  0x00, 0x43, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x08,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x8C, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0C,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x91, 0x1C, 0x96,
+  0x07, 0x00, 0x07, 0x01,  0x00, 0x00, 0x00, 0x08,  0x08, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x87, 0x52,
+  0x4F, 0x96, 0x02, 0x00,  0x08, 0x0C, 0x1C, 0x96,  0x07, 0x00, 0x07, 0x01,  0x00, 0x00, 0x00, 0x08,
+  0x08, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x92, 0x52,  0x17, 0x96, 0x07, 0x00,  0x07, 0x00, 0x00, 0x00,
+  0x00, 0x08, 0x08, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x8E, 0x52, 0x17, 0x4F,  0x96, 0x02, 0x00, 0x08,
+  0x7D, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x86, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x02,
+  0x00, 0x08, 0x93, 0x9B,  0x05, 0x00, 0x00, 0x00,  0x00, 0x5B, 0x00, 0x96,  0x04, 0x00, 0x08, 0x94,
+  0x08, 0x08, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x8C,  0x4E, 0x3C, 0x96, 0x07,  0x00, 0x08, 0x95, 0x07,
+  0x00, 0x00, 0x00, 0x00,  0x42, 0x3C, 0x96, 0x02,  0x00, 0x08, 0x94, 0x46,  0x87, 0x01, 0x00, 0x00,
+  0x96, 0x01, 0x00, 0x02,  0x49, 0x9D, 0x02, 0x00,  0x25, 0x00, 0x96, 0x04,  0x00, 0x08, 0x8A, 0x04,
+  0x00, 0x3C, 0x96, 0x02,  0x00, 0x08, 0x8A, 0x1C,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,
+  0x08, 0x95, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x14,  0x52, 0x17, 0x99, 0x02,  0x00, 0xCD, 0xFF, 0x96,
+  0x02, 0x00, 0x08, 0x95,  0x1C, 0x3E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x7D,  0x1C, 0x96, 0x02, 0x00,
+  0x08, 0x86, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0B,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x92, 0x9B, 0x0A,
+  0x00, 0x00, 0x01, 0x00,  0x6E, 0x61, 0x6D, 0x65,  0x00, 0x5C, 0x00, 0x96,  0x02, 0x00, 0x08, 0x08,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x8D, 0x4E, 0x12,  0x12, 0x9D, 0x02, 0x00,  0x12, 0x00, 0x96, 0x02,
+  0x00, 0x08, 0x08, 0x1C,  0x96, 0x07, 0x00, 0x08,  0x8D, 0x07, 0x00, 0x00,  0x00, 0x00, 0x43, 0x4F,
+  0x96, 0x02, 0x00, 0x08,  0x08, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x8D, 0x4E,  0x96, 0x02, 0x00, 0x08,
+  0x0C, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x08, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x8C, 0x4E, 0x96, 0x02,
+  0x00, 0x08, 0x0C, 0x1C,  0x4E, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x08, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0x96, 0x52, 0x4F, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x7D, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x86, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x0B, 0x4E, 0x96, 0x02,  0x00, 0x08, 0x96, 0x9B,
+  0x0B, 0x00, 0x00, 0x01,  0x00, 0x73, 0x74, 0x79,  0x6C, 0x65, 0x00, 0x9D,  0x03, 0x96, 0x02, 0x00,
+  0x08, 0x91, 0x1C, 0x96,  0x01, 0x00, 0x02, 0x49,  0x12, 0x9D, 0x02, 0x00,  0x05, 0x00, 0x96, 0x01,
+  0x00, 0x02, 0x3E, 0x96,  0x09, 0x00, 0x08, 0x97,  0x07, 0x00, 0x00, 0x00,  0x00, 0x08, 0x85, 0x40,
+  0x3C, 0x96, 0x02, 0x00,  0x08, 0x91, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x98,  0x4E, 0x12, 0x9D, 0x02,
+  0x00, 0x15, 0x00, 0x96,  0x02, 0x00, 0x08, 0x97,  0x1C, 0x96, 0x04, 0x00,  0x08, 0x99, 0x08, 0x91,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x98, 0x4E, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x91, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x9A, 0x4E,  0x96, 0x02, 0x00, 0x08,  0x9B, 0x49, 0x9D, 0x02,  0x00, 0x2B, 0x00, 0x96,
+  0x02, 0x00, 0x08, 0x91,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x9A, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x9C,
+  0x49, 0x12, 0x9D, 0x02,  0x00, 0x0E, 0x00, 0x96,  0x02, 0x00, 0x08, 0x97,  0x1C, 0x96, 0x04, 0x00,
+  0x08, 0x9B, 0x05, 0x00,  0x4F, 0x99, 0x02, 0x00,  0x0E, 0x00, 0x96, 0x02,  0x00, 0x08, 0x97, 0x1C,
+  0x96, 0x04, 0x00, 0x08,  0x9B, 0x05, 0x01, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x91, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0x9D, 0x4E,  0x12, 0x9D, 0x02, 0x00,  0x41, 0x00, 0x96, 0x04,  0x00, 0x08, 0x94, 0x08,
+  0x91, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x9D, 0x4E,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,
+  0x08, 0x08, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x9E,  0x52, 0x3C, 0x96, 0x02,  0x00, 0x08, 0x94, 0x1C,
+  0x96, 0x01, 0x00, 0x02,  0x49, 0x12, 0x12, 0x9D,  0x02, 0x00, 0x0F, 0x00,  0x96, 0x02, 0x00, 0x08,
+  0x97, 0x1C, 0x96, 0x04,  0x00, 0x08, 0x9D, 0x08,  0x94, 0x1C, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x97,
+  0x1C, 0x96, 0x04, 0x00,  0x08, 0x9F, 0x08, 0x91,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x9F, 0x4E, 0x4F,
+  0x96, 0x02, 0x00, 0x08,  0x91, 0x1C, 0x96, 0x02,  0x00, 0x08, 0xA0, 0x4E,  0x12, 0x9D, 0x02, 0x00,
+  0x26, 0x00, 0x96, 0x02,  0x00, 0x08, 0x97, 0x1C,  0x96, 0x04, 0x00, 0x08,  0xA1, 0x08, 0x91, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xA0, 0x4E, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x08,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0xA2, 0x52, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x91, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0xA3, 0x4E,  0x12, 0x9D, 0x02, 0x00,  0x20, 0x00, 0x96, 0x02,  0x00, 0x08, 0x97, 0x1C,
+  0x96, 0x04, 0x00, 0x08,  0xA4, 0x08, 0x91, 0x1C,  0x96, 0x02, 0x00, 0x08,  0xA3, 0x4E, 0x96, 0x07,
+  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0xA5,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x91, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xA6, 0x4E, 0x96, 0x02,  0x00, 0x08, 0xA7, 0x49,  0x9D, 0x02, 0x00, 0x2B,
+  0x00, 0x96, 0x02, 0x00,  0x08, 0x91, 0x1C, 0x96,  0x02, 0x00, 0x08, 0xA6,  0x4E, 0x96, 0x02, 0x00,
+  0x08, 0x9C, 0x49, 0x12,  0x9D, 0x02, 0x00, 0x0E,  0x00, 0x96, 0x02, 0x00,  0x08, 0x97, 0x1C, 0x96,
+  0x04, 0x00, 0x08, 0xA7,  0x05, 0x00, 0x4F, 0x99,  0x02, 0x00, 0x0E, 0x00,  0x96, 0x02, 0x00, 0x08,
+  0x97, 0x1C, 0x96, 0x04,  0x00, 0x08, 0xA7, 0x05,  0x01, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x91, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xA8, 0x4E, 0x96, 0x02,  0x00, 0x08, 0xA9, 0x49,  0x9D, 0x02, 0x00, 0x4F,
+  0x00, 0x96, 0x02, 0x00,  0x08, 0x91, 0x1C, 0x96,  0x02, 0x00, 0x08, 0xA8,  0x4E, 0x96, 0x02, 0x00,
+  0x08, 0xAA, 0x49, 0x9D,  0x02, 0x00, 0x25, 0x00,  0x96, 0x02, 0x00, 0x08,  0x97, 0x1C, 0x96, 0x04,
+  0x00, 0x08, 0xA8, 0x08,  0x91, 0x1C, 0x96, 0x02,  0x00, 0x08, 0xA8, 0x4E,  0x96, 0x07, 0x00, 0x07,
+  0x01, 0x00, 0x00, 0x00,  0x08, 0xA5, 0x3D, 0x4F,  0x99, 0x02, 0x00, 0x0E,  0x00, 0x96, 0x02, 0x00,
+  0x08, 0x97, 0x1C, 0x96,  0x04, 0x00, 0x08, 0xA8,  0x05, 0x00, 0x4F, 0x99,  0x02, 0x00, 0x0E, 0x00,
+  0x96, 0x02, 0x00, 0x08,  0x97, 0x1C, 0x96, 0x04,  0x00, 0x08, 0xA8, 0x05,  0x01, 0x4F, 0x96, 0x02,
+  0x00, 0x08, 0x91, 0x1C,  0x96, 0x02, 0x00, 0x08,  0xAB, 0x4E, 0x12, 0x9D,  0x02, 0x00, 0x20, 0x00,
+  0x96, 0x02, 0x00, 0x08,  0x97, 0x1C, 0x96, 0x04,  0x00, 0x08, 0xAB, 0x08,  0x91, 0x1C, 0x96, 0x02,
+  0x00, 0x08, 0xAB, 0x4E,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,  0x08, 0xA5, 0x3D, 0x4F,
+  0x96, 0x02, 0x00, 0x08,  0x91, 0x1C, 0x96, 0x02,  0x00, 0x08, 0xAC, 0x4E,  0x12, 0x9D, 0x02, 0x00,
+  0x20, 0x00, 0x96, 0x02,  0x00, 0x08, 0x97, 0x1C,  0x96, 0x04, 0x00, 0x08,  0xAD, 0x08, 0x91, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xAC, 0x4E, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0xA5,
+  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x91, 0x1C,  0x96, 0x02, 0x00, 0x08,  0xAE, 0x4E, 0x12, 0x9D,
+  0x02, 0x00, 0x20, 0x00,  0x96, 0x02, 0x00, 0x08,  0x97, 0x1C, 0x96, 0x04,  0x00, 0x08, 0xAE, 0x08,
+  0x91, 0x1C, 0x96, 0x02,  0x00, 0x08, 0xAE, 0x4E,  0x96, 0x07, 0x00, 0x07,  0x01, 0x00, 0x00, 0x00,
+  0x08, 0xA5, 0x3D, 0x4F,  0x96, 0x02, 0x00, 0x08,  0x91, 0x1C, 0x96, 0x02,  0x00, 0x08, 0xAF, 0x4E,
+  0x12, 0x9D, 0x02, 0x00,  0x20, 0x00, 0x96, 0x02,  0x00, 0x08, 0x97, 0x1C,  0x96, 0x04, 0x00, 0x08,
+  0xB0, 0x08, 0x91, 0x1C,  0x96, 0x02, 0x00, 0x08,  0xAF, 0x4E, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,
+  0x00, 0x00, 0x08, 0xA5,  0x3D, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x91, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0xB1, 0x4E, 0x12, 0x9D,  0x02, 0x00, 0x3B, 0x00,  0x96, 0x04, 0x00, 0x08,  0x94, 0x08, 0x91, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xB1, 0x4E, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0xA5,
+  0x3D, 0x3C, 0x96, 0x07,  0x00, 0x07, 0x00, 0x00,  0x00, 0x00, 0x08, 0x94,  0x1C, 0x48, 0x12, 0x9D,
+  0x02, 0x00, 0x0F, 0x00,  0x96, 0x02, 0x00, 0x08,  0x97, 0x1C, 0x96, 0x04,  0x00, 0x08, 0xB2, 0x08,
+  0x94, 0x1C, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x91,  0x1C, 0x96, 0x02, 0x00,  0x08, 0xB3, 0x4E, 0x96,
+  0x02, 0x00, 0x08, 0xB4,  0x49, 0x9D, 0x02, 0x00,  0x2B, 0x00, 0x96, 0x02,  0x00, 0x08, 0x91, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xB3, 0x4E, 0x96, 0x02,  0x00, 0x08, 0xB5, 0x49,  0x12, 0x9D, 0x02, 0x00,
+  0x0E, 0x00, 0x96, 0x02,  0x00, 0x08, 0x97, 0x1C,  0x96, 0x04, 0x00, 0x08,  0xB4, 0x05, 0x00, 0x4F,
+  0x99, 0x02, 0x00, 0x0E,  0x00, 0x96, 0x02, 0x00,  0x08, 0x97, 0x1C, 0x96,  0x04, 0x00, 0x08, 0xB4,
+  0x05, 0x01, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x97,  0x1C, 0x3E, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x7D,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x86, 0x4E, 0x96,  0x02, 0x00, 0x08, 0x0B,  0x4E, 0x96, 0x02, 0x00,
+  0x08, 0xB6, 0x9B, 0x09,  0x00, 0x00, 0x01, 0x00,  0x63, 0x73, 0x73, 0x00,  0xDA, 0x00, 0x96, 0x04,
+  0x00, 0x08, 0xB9, 0x08,  0xB7, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x01, 0x00,  0x00, 0x00, 0x08, 0x08,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0xB8, 0x52, 0x3C,  0x96, 0x02, 0x00, 0x08,  0xB9, 0x1C, 0x44, 0x96,
+  0x02, 0x00, 0x08, 0xBA,  0x49, 0x12, 0x9D, 0x02,  0x00, 0x06, 0x00, 0x96,  0x02, 0x00, 0x05, 0x00,
+  0x3E, 0x96, 0x02, 0x00,  0x08, 0x08, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x8C,  0x4E, 0x12, 0x12, 0x9D,
+  0x02, 0x00, 0x12, 0x00,  0x96, 0x02, 0x00, 0x08,  0x08, 0x1C, 0x96, 0x07,  0x00, 0x08, 0x8C, 0x07,
+  0x00, 0x00, 0x00, 0x00,  0x43, 0x4F, 0x96, 0x02,  0x00, 0x08, 0xB9, 0x46,  0x87, 0x01, 0x00, 0x00,
+  0x96, 0x01, 0x00, 0x02,  0x49, 0x9D, 0x02, 0x00,  0x56, 0x00, 0x96, 0x04,  0x00, 0x08, 0x8A, 0x04,
+  0x00, 0x3C, 0x96, 0x02,  0x00, 0x08, 0x08, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x8C, 0x4E, 0x96, 0x02,
+  0x00, 0x08, 0x8A, 0x1C,  0x96, 0x02, 0x00, 0x08,  0xB9, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x8A, 0x1C,
+  0x4E, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x08, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x87, 0x52, 0x4F, 0x96,  0x02, 0x00, 0x08, 0x8A,  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,
+  0x00, 0x08, 0x08, 0x1C,  0x96, 0x02, 0x00, 0x08,  0x92, 0x52, 0x17, 0x99,  0x02, 0x00, 0x9C, 0xFF,
+  0x96, 0x07, 0x00, 0x07,  0x00, 0x00, 0x00, 0x00,  0x08, 0x08, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x8E,
+  0x52, 0x17, 0x96, 0x02,  0x00, 0x05, 0x01, 0x3E,  0x4F, 0x96, 0x02, 0x00,  0x08, 0x7D, 0x1C, 0x96,
+  0x02, 0x00, 0x08, 0x86,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x0B, 0x4E, 0x96,  0x04, 0x00, 0x08, 0xBB,
+  0x08, 0x7D, 0x1C, 0x96,  0x02, 0x00, 0x08, 0x86,  0x4E, 0x96, 0x02, 0x00,  0x08, 0x0B, 0x4E, 0x96,
+  0x02, 0x00, 0x08, 0xB6,  0x4E, 0x4F, 0x96, 0x02,  0x00, 0x08, 0x7D, 0x1C,  0x96, 0x02, 0x00, 0x08,
+  0x86, 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,  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,
+  0x96, 0x02, 0x00, 0x08,  0x7D, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x86, 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,  0x7D, 0x1C, 0x96, 0x02,  0x00, 0x08, 0x86, 0x4E,  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
+  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, 0xB9, 0x08, 0x3E,  0x1C, 0x96, 0x07, 0x00,  0x07, 0x01, 0x00, 0x00,  0x00, 0x08, 0x08, 0x1C,
+  0x96, 0x02, 0x00, 0x08,  0xBB, 0x52, 0x3C, 0x96,  0x02, 0x00, 0x08, 0x08,  0x1C, 0x96, 0x04, 0x00,
+  0x08, 0x3D, 0x08, 0xB9,  0x1C, 0x4F, 0x96, 0x02,  0x00, 0x08, 0xB9, 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,  0xBC, 0x07, 0x71, 0x00,  0x00, 0x00, 0x08, 0x7D,
+  0x1C, 0x96, 0x02, 0x00,  0x08, 0x86, 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, 0x7D,  0x1C, 0x96, 0x02, 0x00,  0x08, 0x86, 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, 0x86, 0x08,  0x7D, 0x1C, 0x96, 0x07,  0x00, 0x07, 0x03, 0x00,
+  0x00, 0x00, 0x08, 0x05,  0x3D, 0x17, 0x96, 0x13,  0x00, 0x08, 0xBD, 0x07,  0x00, 0x00, 0x00, 0x00,
+  0x07, 0xFA, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x1D, 0x96, 0x13,
+  0x00, 0x08, 0xBE, 0x07,  0x01, 0x00, 0x00, 0x00,  0x07, 0xFA, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,
+  0x00, 0x00, 0x08, 0x01,  0x3D, 0x1D, 0x96, 0x13,  0x00, 0x08, 0xBF, 0x07,  0x02, 0x00, 0x00, 0x00,
+  0x07, 0xFA, 0x00, 0x00,  0x00, 0x07, 0x02, 0x00,  0x00, 0x00, 0x08, 0x01,  0x3D, 0x1D, 0x96, 0x04,
+  0x00, 0x08, 0xC0, 0x08,  0xBE, 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 8dd254cbecda15f4f0a7d6ae0908bd08444aa5b4
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 11:57:44 2007 +0100

    implement MovieClipLoader.getProgress()
    
    also add stubs for unloadMovie()

diff --git a/libswfdec/swfdec_movie_clip_loader.c b/libswfdec/swfdec_movie_clip_loader.c
index df6cb51..9c48544 100644
--- a/libswfdec/swfdec_movie_clip_loader.c
+++ b/libswfdec/swfdec_movie_clip_loader.c
@@ -23,7 +23,10 @@
 
 #include "swfdec_movie_clip_loader.h"
 #include "swfdec_as_internal.h"
+#include "swfdec_as_strings.h"
 #include "swfdec_debug.h"
+#include "swfdec_decoder.h"
+#include "swfdec_player_internal.h"
 #include "swfdec_resource.h"
 
 
@@ -59,3 +62,44 @@ swfdec_movie_clip_loader_loadClip (SwfdecAsContext *cx, SwfdecAsObject *object,
   swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, SWFDEC_LOADER_REQUEST_DEFAULT, NULL, loader);
 }
 
+SWFDEC_AS_NATIVE (112, 102, swfdec_movie_clip_loader_unloadClip)
+void 
+swfdec_movie_clip_loader_unloadClip (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+  SWFDEC_FIXME ("implement");
+}
+
+SWFDEC_AS_NATIVE (112, 101, swfdec_movie_clip_loader_getProgress)
+void 
+swfdec_movie_clip_loader_getProgress (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+  SwfdecMovieClipLoader *loader;
+  SwfdecMovie *movie;
+  SwfdecAsObject *ret;
+  const char *target;
+  SwfdecResource *resource;
+  SwfdecAsValue loaded, total;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE_CLIP_LOADER, &loader, "s", &target);
+
+  movie = swfdec_player_get_movie_from_string (SWFDEC_PLAYER (cx), target);
+  if (movie == NULL)
+    return;
+  ret = swfdec_as_object_new_empty (cx);
+  if (ret == NULL)
+    return;
+  SWFDEC_AS_VALUE_SET_OBJECT (rval, ret);
+  resource = swfdec_movie_get_own_resource (movie);
+  if (resource == NULL || resource->decoder == NULL) {
+    SWFDEC_AS_VALUE_SET_INT (&loaded, 0);
+    SWFDEC_AS_VALUE_SET_INT (&total, 0);
+  } else {
+    SWFDEC_AS_VALUE_SET_INT (&loaded, resource->decoder->bytes_loaded);
+    SWFDEC_AS_VALUE_SET_INT (&total, resource->decoder->bytes_total);
+  }
+  swfdec_as_object_set_variable (ret, SWFDEC_AS_STR_bytesLoaded, &loaded);
+  swfdec_as_object_set_variable (ret, SWFDEC_AS_STR_bytesTotal, &total);
+}
+
commit 602bdf22ae985d5120364b4772c8a1d411fa4854
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 10:22:09 2007 +0100

    add a function to GC-mark stuff inside a SwfdecResource

diff --git a/libswfdec/swfdec_movie.c b/libswfdec/swfdec_movie.c
index 6b46623..650c476 100644
--- a/libswfdec/swfdec_movie.c
+++ b/libswfdec/swfdec_movie.c
@@ -973,6 +973,7 @@ swfdec_movie_mark (SwfdecAsObject *object)
     swfdec_as_object_mark (listener->object);
     swfdec_as_string_mark (listener->name);
   }
+  swfdec_resource_mark (movie->resource);
 
   SWFDEC_AS_OBJECT_CLASS (swfdec_movie_parent_class)->mark (object);
 }
diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index 13d5562..97617e4 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -254,6 +254,12 @@ swfdec_resource_set_movie (SwfdecResource *resource, SwfdecSpriteMovie *movie)
   swfdec_loader_set_target (resource->loader, SWFDEC_LOADER_TARGET (resource));
 }
 
+void
+swfdec_resource_mark (SwfdecResource *resource)
+{
+  g_return_if_fail (SWFDEC_IS_RESOURCE (resource));
+}
+
 gpointer
 swfdec_resource_get_export (SwfdecResource *instance, const char *name)
 {
diff --git a/libswfdec/swfdec_resource.h b/libswfdec/swfdec_resource.h
index 78b011e..01b4aea 100644
--- a/libswfdec/swfdec_resource.h
+++ b/libswfdec/swfdec_resource.h
@@ -61,6 +61,7 @@ SwfdecResource *swfdec_resource_new			(SwfdecLoader *		loader,
 							 const char *		variables);
 void		swfdec_resource_set_movie		(SwfdecResource *	resource,
 							 SwfdecSpriteMovie *	movie);
+void		swfdec_resource_mark			(SwfdecResource *	resource);
 
 void		swfdec_resource_add_export		(SwfdecResource *	instance,
 							 SwfdecCharacter *	character,
commit d9782fed10dde889cb4215a2aa37855aeaa33c67
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 08:37:28 2007 +0100

    add MovieClipLoader class
    
    also add stubs for adding it to SwfdecResource when loading

diff --git a/libswfdec/Makefile.am b/libswfdec/Makefile.am
index 99a701b..69ad762 100644
--- a/libswfdec/Makefile.am
+++ b/libswfdec/Makefile.am
@@ -86,6 +86,7 @@ libswfdec_ at SWFDEC_MAJORMINOR@_la_SOURCES = \
 	swfdec_movie.c \
 	swfdec_movie_as_drawing.c \
 	swfdec_movie_asprops.c \
+	swfdec_movie_clip_loader.c \
 	swfdec_net_connection.c \
 	swfdec_net_stream.c \
 	swfdec_net_stream_as.c \
@@ -213,6 +214,7 @@ noinst_HEADERS = \
 	swfdec_morph_movie.h \
 	swfdec_morphshape.h \
 	swfdec_movie.h \
+	swfdec_movie_clip_loader.h \
 	swfdec_net_connection.h \
 	swfdec_net_stream.h \
 	swfdec_path.h \
diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index 57043f3..c3e4bbc 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -1146,7 +1146,8 @@ swfdec_action_get_url (SwfdecAsContext *cx, guint action, const guint8 *data, gu
   } else if (swfdec_player_fscommand (SWFDEC_PLAYER (cx), url, target)) {
     /* nothing to do here */
   } else if (swfdec_player_get_level (SWFDEC_PLAYER (cx), target) >= 0) {
-    swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, SWFDEC_LOADER_REQUEST_DEFAULT, NULL);
+    swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, 
+	SWFDEC_LOADER_REQUEST_DEFAULT, NULL, NULL);
   }
   g_free (url);
   g_free (target);
@@ -1189,7 +1190,7 @@ swfdec_action_get_url2 (SwfdecAsContext *cx, guint action, const guint8 *data, g
       swfdec_movie_load_variables (movie, url, method, NULL);
     }
   } else if (internal) {
-    swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, method, NULL);
+    swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, method, NULL, NULL);
   } else {
     /* load an external file */
     swfdec_player_launch (SWFDEC_PLAYER (cx), method, url, target, NULL);
diff --git a/libswfdec/swfdec_movie_clip_loader.c b/libswfdec/swfdec_movie_clip_loader.c
new file mode 100644
index 0000000..df6cb51
--- /dev/null
+++ b/libswfdec/swfdec_movie_clip_loader.c
@@ -0,0 +1,61 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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 "swfdec_movie_clip_loader.h"
+#include "swfdec_as_internal.h"
+#include "swfdec_debug.h"
+#include "swfdec_resource.h"
+
+
+G_DEFINE_TYPE (SwfdecMovieClipLoader, swfdec_movie_clip_loader, SWFDEC_TYPE_AS_OBJECT)
+
+static void
+swfdec_movie_clip_loader_class_init (SwfdecMovieClipLoaderClass *klass)
+{
+}
+
+static void
+swfdec_movie_clip_loader_init (SwfdecMovieClipLoader *movie_clip_loader)
+{
+}
+
+SWFDEC_AS_CONSTRUCTOR (112, 0, swfdec_movie_clip_loader_construct, swfdec_movie_clip_loader_get_type)
+void 
+swfdec_movie_clip_loader_construct (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+}
+
+SWFDEC_AS_NATIVE (112, 100, swfdec_movie_clip_loader_loadClip)
+void 
+swfdec_movie_clip_loader_loadClip (SwfdecAsContext *cx, SwfdecAsObject *object,
+    guint argc, SwfdecAsValue *argv, SwfdecAsValue *rval)
+{
+  SwfdecMovieClipLoader *loader;
+  const char *url, *target;
+
+  SWFDEC_AS_CHECK (SWFDEC_TYPE_MOVIE_CLIP_LOADER, &loader, "ss", &url, &target);
+
+  swfdec_resource_load (SWFDEC_PLAYER (cx), target, url, SWFDEC_LOADER_REQUEST_DEFAULT, NULL, loader);
+}
+
diff --git a/libswfdec/swfdec_movie_clip_loader.h b/libswfdec/swfdec_movie_clip_loader.h
new file mode 100644
index 0000000..9ef0d1c
--- /dev/null
+++ b/libswfdec/swfdec_movie_clip_loader.h
@@ -0,0 +1,51 @@
+/* Swfdec
+ * Copyright (C) 2007 Benjamin Otte <otte at gnome.org>
+ *
+ * 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
+ */
+
+#ifndef _SWFDEC_MOVIE_CLIP_LOADER_H_
+#define _SWFDEC_MOVIE_CLIP_LOADER_H_
+
+#include <libswfdec/swfdec_as_object.h>
+
+G_BEGIN_DECLS
+
+//typedef struct _SwfdecMovieClipLoader SwfdecMovieClipLoader;
+typedef struct _SwfdecMovieClipLoaderClass SwfdecMovieClipLoaderClass;
+
+#define SWFDEC_TYPE_MOVIE_CLIP_LOADER                    (swfdec_movie_clip_loader_get_type())
+#define SWFDEC_IS_MOVIE_CLIP_LOADER(obj)                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SWFDEC_TYPE_MOVIE_CLIP_LOADER))
+#define SWFDEC_IS_MOVIE_CLIP_LOADER_CLASS(klass)         (G_TYPE_CHECK_CLASS_TYPE ((klass), SWFDEC_TYPE_MOVIE_CLIP_LOADER))
+#define SWFDEC_MOVIE_CLIP_LOADER(obj)                    (G_TYPE_CHECK_INSTANCE_CAST ((obj), SWFDEC_TYPE_MOVIE_CLIP_LOADER, SwfdecMovieClipLoader))
+#define SWFDEC_MOVIE_CLIP_LOADER_CLASS(klass)            (G_TYPE_CHECK_CLASS_CAST ((klass), SWFDEC_TYPE_MOVIE_CLIP_LOADER, SwfdecMovieClipLoaderClass))
+#define SWFDEC_MOVIE_CLIP_LOADER_GET_CLASS(obj)          (G_TYPE_INSTANCE_GET_CLASS ((obj), SWFDEC_TYPE_MOVIE_CLIP_LOADER, SwfdecMovieClipLoaderClass))
+
+struct _SwfdecMovieClipLoader
+{
+  SwfdecAsObject	object;
+};
+
+struct _SwfdecMovieClipLoaderClass
+{
+  SwfdecAsObjectClass 	object_class;
+};
+
+GType swfdec_movie_clip_loader_get_type (void);
+
+
+G_END_DECLS
+#endif
diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index 62ebc3c..13d5562 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -35,6 +35,7 @@
 #include "swfdec_flv_decoder.h"
 #include "swfdec_loader_internal.h"
 #include "swfdec_loadertarget.h"
+#include "swfdec_movie_clip_loader.h"
 #include "swfdec_player_internal.h"
 #include "swfdec_resource_request.h"
 #include "swfdec_script.h"
@@ -338,7 +339,7 @@ fail:
 /* NB: must be called from a script */
 void
 swfdec_resource_load (SwfdecPlayer *player, const char *target, const char *url, 
-    SwfdecLoaderRequest request, SwfdecBuffer *buffer)
+    SwfdecLoaderRequest request, SwfdecBuffer *buffer, SwfdecMovieClipLoader *loader)
 {
   SwfdecSpriteMovie *movie;
   char *path;
@@ -346,6 +347,7 @@ swfdec_resource_load (SwfdecPlayer *player, const char *target, const char *url,
   g_return_if_fail (SWFDEC_IS_PLAYER (player));
   g_return_if_fail (target != NULL);
   g_return_if_fail (url != NULL);
+  g_return_if_fail (loader == NULL || SWFDEC_IS_MOVIE_CLIP_LOADER (loader));
 
   g_assert (SWFDEC_AS_CONTEXT (player)->frame != NULL);
   movie = (SwfdecSpriteMovie *) swfdec_player_get_movie_from_string (player, target);
diff --git a/libswfdec/swfdec_resource.h b/libswfdec/swfdec_resource.h
index 817dd2b..78b011e 100644
--- a/libswfdec/swfdec_resource.h
+++ b/libswfdec/swfdec_resource.h
@@ -74,6 +74,9 @@ void		swfdec_resource_load			(SwfdecPlayer *		player,
 							 const char *		target,
 							 const char *		url,
 							 SwfdecLoaderRequest	request,
-							 SwfdecBuffer *		buffer);
+							 SwfdecBuffer *		buffer,
+							 SwfdecMovieClipLoader *loader);
+
+
 G_END_DECLS
 #endif
diff --git a/libswfdec/swfdec_types.h b/libswfdec/swfdec_types.h
index 60193a0..2a9149a 100644
--- a/libswfdec/swfdec_types.h
+++ b/libswfdec/swfdec_types.h
@@ -46,6 +46,7 @@ typedef struct _SwfdecGraphic SwfdecGraphic;
 typedef struct _SwfdecImage SwfdecImage;
 typedef struct _SwfdecListener SwfdecListener;
 typedef struct _SwfdecMovie SwfdecMovie;
+typedef struct _SwfdecMovieClipLoader SwfdecMovieClipLoader;
 typedef struct _SwfdecShape SwfdecShape;
 typedef struct _SwfdecShapeVec SwfdecShapeVec;
 typedef struct _SwfdecRect SwfdecRect;
commit 92a2422dec91d300599cbe2d6372f95f140f80b3
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 08:14:22 2007 +0100

    triggering external actions performs load requests

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 4049096..fb9a23c 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -516,6 +516,8 @@ swfdec_player_trigger_external_actions (SwfdecTimeout *advance)
 
   player->external_timeout.callback = NULL;
   swfdec_player_perform_external_actions (player);
+  swfdec_player_resource_request_perform (player);
+  swfdec_player_perform_actions (player);
 }
 
 void
commit 5332d8cbc88b0c26236cde53ed02de146b86d5a0
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 08:07:06 2007 +0100

    resource requests are only performed sometimes, not on every unlock.
    
    Also, they need to perform actions.

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index a789576..4049096 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -1193,6 +1193,8 @@ swfdec_player_iterate (SwfdecTimeout *timeout)
     if (!klass->iterate_end (cur))
       swfdec_movie_destroy (cur);
   }
+  swfdec_player_resource_request_perform (player);
+  swfdec_player_perform_actions (player);
   /* add timeout again */
   /* FIXME: rounding issues? */
   player->iterate_timeout.timestamp += SWFDEC_TICKS_PER_SECOND * 256 / player->rate;
@@ -1335,7 +1337,6 @@ swfdec_player_unlock (SwfdecPlayer *player)
   context = SWFDEC_AS_CONTEXT (player);
   g_return_if_fail (context->state != SWFDEC_AS_CONTEXT_INTERRUPTED);
 
-  swfdec_player_resource_request_perform (player);
   if (context->state == SWFDEC_AS_CONTEXT_RUNNING)
     swfdec_as_context_maybe_gc (SWFDEC_AS_CONTEXT (player));
   swfdec_player_unlock_soft (player);
commit 03d8a5be5c41c38b639e91fa2b763055fa3f2a5f
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 07:59:51 2007 +0100

    loadMovie() creates a new MovieClip and removes the old one
    
    make sure this code does the same thing.

diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index abf35f9..62ebc3c 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -287,7 +287,6 @@ swfdec_resource_do_load (SwfdecPlayer *player, SwfdecLoader *loader, gpointer ta
 {
   SwfdecSpriteMovie *movie;
   SwfdecResource *resource;
-  SwfdecMovie *mov;
   int level = -1;
   char *target = targetp;
 
@@ -307,15 +306,24 @@ swfdec_resource_do_load (SwfdecPlayer *player, SwfdecLoader *loader, gpointer ta
   }
   if (movie == NULL) {
     movie = swfdec_player_create_movie_at_level (player, resource, level);
-    mov = SWFDEC_MOVIE (movie);
-    g_object_unref (resource);
   } else {
-    mov = SWFDEC_MOVIE (movie);
-    swfdec_sprite_movie_unload (movie);
-    g_object_unref (mov->resource);
-    mov->resource = resource;
-    swfdec_resource_set_movie (mov->resource, movie);
+    /* can't use swfdec_movie_duplicate() here, we copy to same depth */
+    SwfdecMovie *mov = SWFDEC_MOVIE (movie);
+    SwfdecMovie *copy;
+    
+    copy = swfdec_movie_new (SWFDEC_PLAYER (SWFDEC_AS_OBJECT (movie)->context), 
+	mov->depth, mov->parent, resource, NULL, mov->name);
+    if (copy == NULL)
+      return;
+    copy->original_name = mov->original_name;
+    /* FIXME: are events copied? If so, wouldn't that be a security issue? */
+    swfdec_movie_set_static_properties (copy, &mov->original_transform,
+	&mov->original_ctrans, mov->original_ratio, mov->clip_depth, 
+	mov->blend_mode, NULL);
+    swfdec_movie_remove (mov);
+    movie = SWFDEC_SPRITE_MOVIE (copy);
   }
+  g_object_unref (resource);
   g_object_unref (loader);
   return;
 
commit 8d970ce1bad7b4678824dace4bac8ad89eb88446
Author: Benjamin Otte <otte at gnome.org>
Date:   Tue Nov 6 07:32:08 2007 +0100

    revert MovieClip initialization stuff again
    
    MovieClips are intialized while parsed, the MovieClipLoader events  are just
    confusing.

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 8d7b509..a789576 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -2000,7 +2000,6 @@ swfdec_player_set_loader_with_variables (SwfdecPlayer *player, SwfdecLoader *loa
   g_return_if_fail (SWFDEC_IS_LOADER (loader));
 
   player->resource = swfdec_resource_new (loader, variables);
-  player->resource->initial = TRUE;
   movie = swfdec_movie_new (player, -16384, NULL, player->resource, NULL, SWFDEC_AS_STR__level0);
   movie->name = SWFDEC_AS_STR_EMPTY;
   g_object_unref (loader);
diff --git a/libswfdec/swfdec_resource.c b/libswfdec/swfdec_resource.c
index fe52207..abf35f9 100644
--- a/libswfdec/swfdec_resource.c
+++ b/libswfdec/swfdec_resource.c
@@ -49,6 +49,17 @@ G_DEFINE_TYPE_WITH_CODE (SwfdecResource, swfdec_resource, SWFDEC_TYPE_FLASH_SECU
 
 /*** SWFDEC_LOADER_TARGET interface ***/
 
+static gboolean 
+swfdec_resource_is_root (SwfdecResource *resource)
+{
+  SwfdecPlayer *player;
+
+  g_return_val_if_fail (SWFDEC_IS_RESOURCE (resource), FALSE);
+
+  player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (resource->movie)->context);
+  return resource->movie == player->roots->data;
+}
+
 static SwfdecPlayer *
 swfdec_resource_loader_target_get_player (SwfdecLoaderTarget *target)
 {
@@ -61,7 +72,7 @@ swfdec_resource_check_rights (SwfdecResource *resource)
   SwfdecFlashSecurity *sec = SWFDEC_FLASH_SECURITY (resource);
   SwfdecSwfDecoder *dec = SWFDEC_SWF_DECODER (resource->decoder);
 
-  if (resource->initial) {
+  if (swfdec_resource_is_root (resource)) {
     if (dec->use_network && sec->sandbox == SWFDEC_SANDBOX_LOCAL_FILE)
       sec->sandbox = SWFDEC_SANDBOX_LOCAL_NETWORK;
     SWFDEC_INFO ("enabling local-with-network sandbox for %s",
@@ -93,8 +104,9 @@ swfdec_resource_loader_target_image (SwfdecResource *instance)
 }
 
 static void
-swfdec_resource_open (SwfdecResource *instance, SwfdecLoader *loader)
+swfdec_resource_loader_target_open (SwfdecLoaderTarget *target, SwfdecLoader *loader)
 {
+  SwfdecResource *instance = SWFDEC_RESOURCE (target);
   const char *query;
 
   query = swfdec_url_get_query (swfdec_loader_get_url (loader));
@@ -109,19 +121,9 @@ swfdec_resource_open (SwfdecResource *instance, SwfdecLoader *loader)
 }
 
 static void
-swfdec_resource_loader_target_open (SwfdecLoaderTarget *target, SwfdecLoader *loader)
+swfdec_resource_loader_target_parse (SwfdecLoaderTarget *target, SwfdecLoader *loader)
 {
   SwfdecResource *instance = SWFDEC_RESOURCE (target);
-
-  if (!instance->initial)
-    return;
-
-  swfdec_resource_open (instance, loader);
-}
-
-static void
-swfdec_resource_parse (SwfdecResource *instance, SwfdecLoader *loader)
-{
   SwfdecPlayer *player = SWFDEC_PLAYER (SWFDEC_AS_OBJECT (instance->movie)->context);
   SwfdecDecoder *dec = instance->decoder;
   SwfdecDecoderClass *klass;
@@ -180,35 +182,11 @@ swfdec_resource_parse (SwfdecResource *instance, SwfdecLoader *loader)
 }
 
 static void
-swfdec_resource_loader_target_parse (SwfdecLoaderTarget *target, SwfdecLoader *loader)
-{
-  SwfdecResource *instance = SWFDEC_RESOURCE (target);
-
-  if (!instance->initial)
-    return;
-
-  swfdec_resource_parse (instance, loader);
-}
-
-static void
-swfdec_resource_loader_target_eof (SwfdecLoaderTarget *target, SwfdecLoader *loader)
-{
-  SwfdecResource *resource = SWFDEC_RESOURCE (target);
-
-  if (resource->initial)
-    return;
-
-  swfdec_resource_open (resource, loader);
-  swfdec_resource_parse (resource, loader);
-}
-
-static void
 swfdec_resource_loader_target_init (SwfdecLoaderTargetInterface *iface)
 {
   iface->get_player = swfdec_resource_loader_target_get_player;
   iface->open = swfdec_resource_loader_target_open;
   iface->parse = swfdec_resource_loader_target_parse;
-  iface->eof = swfdec_resource_loader_target_eof;
 }
 
 static void
diff --git a/libswfdec/swfdec_resource.h b/libswfdec/swfdec_resource.h
index 331a102..817dd2b 100644
--- a/libswfdec/swfdec_resource.h
+++ b/libswfdec/swfdec_resource.h
@@ -41,7 +41,6 @@ struct _SwfdecResource
 
   SwfdecSpriteMovie * 	movie;		/* the movie responsible for creating this instance */
   guint			parse_frame;	/* next frame to parse */
-  gboolean		initial;	/* TRUE if this is the initial resource */
 
   SwfdecLoader *	loader;		/* the loader providing data for the decoder */
   SwfdecDecoder *	decoder;	/* decoder in use or NULL if not yet created (only happens after loadMovie()) */
commit 31898eb14c70535861edea33a6ebca1356da4b55
Author: Andreas Henriksson <andreas at fatal.se>
Date:   Sun Nov 4 03:58:01 2007 +0100

    fix debug message to not use freed variables

diff --git a/libswfdec/swfdec_movie.c b/libswfdec/swfdec_movie.c
index bdf2c39..6b46623 100644
--- a/libswfdec/swfdec_movie.c
+++ b/libswfdec/swfdec_movie.c
@@ -477,11 +477,11 @@ swfdec_movie_set_variables (SwfdecMovie *movie, const char *variables)
       g_free (value);
       break;
     }
+    SWFDEC_LOG ("Set variable \"%s\" to \"%s\"", name, value);
     asname = swfdec_as_context_give_string (as->context, name);
     SWFDEC_AS_VALUE_SET_STRING (&val, swfdec_as_context_get_string (as->context, value));
     g_free (value);
     swfdec_as_object_set_variable (as, asname, &val);
-    SWFDEC_LOG ("Set variable \"%s\" to \"%s\"", name, value);
   }
 }
 
commit 670658068d4ef6bdbf253a07c6e451976d4e839f
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 20:28:35 2007 +0100

    remove debugging g_print

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 0d16a0b..8d7b509 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -355,8 +355,6 @@ swfdec_player_compress_actions (SwfdecRingBuffer *buffer)
   }
   SWFDEC_INFO ("compresed action queue to %u elements", 
       swfdec_ring_buffer_get_n_elements (buffer));
-  g_print ("compresed action queue to %u elements\n", 
-      swfdec_ring_buffer_get_n_elements (buffer));
   for (i = 0; i < swfdec_ring_buffer_get_n_elements (buffer); i++) {
     action = swfdec_ring_buffer_peek_nth (buffer, i);
     g_assert (action->movie != NULL);
@@ -371,13 +369,7 @@ swfdec_player_do_add_action (SwfdecPlayer *player, guint importance, SwfdecPlaye
     /* try to get rid of freed actions */
     if (swfdec_ring_buffer_get_size (player->actions[importance]) >= 256) {
       swfdec_player_compress_actions (player->actions[importance]);
-      g_print ("%u/%u elements\n", 
-	  swfdec_ring_buffer_get_n_elements (player->actions[importance]), 
-	  swfdec_ring_buffer_get_size (player->actions[importance]));
       action = swfdec_ring_buffer_push (player->actions[importance]);
-      g_print ("%u/%u elements: action %p\n", 
-	  swfdec_ring_buffer_get_n_elements (player->actions[importance]), 
-	  swfdec_ring_buffer_get_size (player->actions[importance]), action);
       /* if it doesn't get smaller, bail */
       if (action == NULL) {
 	swfdec_as_context_abort (SWFDEC_AS_CONTEXT (player), 
commit 2cde4bb6c44cfb4e6f8acfdda254db804781751d
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 20:28:25 2007 +0100

    comparison between signed and unsigned

diff --git a/libswfdec/swfdec_text_field_movie.c b/libswfdec/swfdec_text_field_movie.c
index 08afd73..c7cf7da 100644
--- a/libswfdec/swfdec_text_field_movie.c
+++ b/libswfdec/swfdec_text_field_movie.c
@@ -330,7 +330,7 @@ swfdec_text_field_movie_get_paragraphs (SwfdecTextFieldMovie *text, int *num)
       end++;
     }
 
-    if (end - p > max_length)
+    if ((guint) (end - p) > max_length)
       max_length = end - p;
 
     swfdec_text_field_movie_generate_paragraph (text, &paragraph,
commit 7c442f48ff6b7b16cbc3ad46494c3371bd283f45
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 19:50:10 2007 +0100

    memleak

diff --git a/player/swfplay.c b/player/swfplay.c
index 5dd5f61..7a0985b 100644
--- a/player/swfplay.c
+++ b/player/swfplay.c
@@ -85,6 +85,7 @@ sanitize_url (const char *s)
   url = swfdec_url_new (s);
   if (g_str_equal (swfdec_url_get_protocol (url), "error")) {
     char *dir, *full;
+    swfdec_url_free (url);
     if (g_path_is_absolute (s))
       return g_strconcat ("file://", s, NULL);
     dir = g_get_current_dir ();
commit c4ddf2017031b94207835ed657b4eede130a6aa0
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 19:50:05 2007 +0100

    memleak

diff --git a/libswfdec/swfdec_movie.c b/libswfdec/swfdec_movie.c
index b937850..bdf2c39 100644
--- a/libswfdec/swfdec_movie.c
+++ b/libswfdec/swfdec_movie.c
@@ -949,6 +949,10 @@ swfdec_movie_dispose (GObject *object)
   g_slist_free (movie->variable_listeners);
   movie->variable_listeners = NULL;
 
+  g_slist_foreach (movie->draws, (GFunc) g_object_unref, NULL);
+  g_slist_free (movie->draws);
+  movie->draws = NULL;
+
   G_OBJECT_CLASS (swfdec_movie_parent_class)->dispose (G_OBJECT (movie));
 }
 
commit cd98ddb12992c0685f83c521aa1e5c76b9beb079
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 19:49:50 2007 +0100

    don't crash on 0-byte buffers
    
    No, I didn't encounter it, I just audited my own crappy code.

diff --git a/libswfdec/swfdec_net_stream.c b/libswfdec/swfdec_net_stream.c
index 91f0974..2355536 100644
--- a/libswfdec/swfdec_net_stream.c
+++ b/libswfdec/swfdec_net_stream.c
@@ -65,6 +65,10 @@ swfdec_net_stream_decode_video (SwfdecNetStream *stream, SwfdecBuffer *buffer)
       decoder->codec == SWFDEC_VIDEO_CODEC_VP6_ALPHA) {
     guint wsub, hsub;
     SwfdecBuffer *tmp;
+    if (buffer->length == 0) {
+      SWFDEC_ERROR ("0-byte VP6 video image buffer?");
+      return NULL;
+    }
     wsub = *buffer->data;
     hsub = wsub & 0xF;
     wsub >>= 4;
commit 35e5a342b9eef99b4e6a3ab5bb3dbf13f1d7398c
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 19:49:06 2007 +0100

    memleak

diff --git a/libswfdec/swfdec_amf.c b/libswfdec/swfdec_amf.c
index 36b0959..a53e761 100644
--- a/libswfdec/swfdec_amf.c
+++ b/libswfdec/swfdec_amf.c
@@ -51,7 +51,7 @@ swfdec_amf_parse_string (SwfdecAsContext *context, SwfdecBits *bits, SwfdecAsVal
   s = swfdec_bits_get_string_length (bits, len);
   if (s == NULL)
     return FALSE;
-  SWFDEC_AS_VALUE_SET_STRING (val, swfdec_as_context_get_string (context, s));
+  SWFDEC_AS_VALUE_SET_STRING (val, swfdec_as_context_give_string (context, s));
   return TRUE;
 }
 
commit f61f8102ce8cd6ce79bb943dd1df86339e317208
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 19:48:55 2007 +0100

    this function is supposed to take ownership, so it'd better unref the buffer

diff --git a/libswfdec/swfdec_codec_gst.c b/libswfdec/swfdec_codec_gst.c
index 2873e84..a16d700 100644
--- a/libswfdec/swfdec_codec_gst.c
+++ b/libswfdec/swfdec_codec_gst.c
@@ -62,6 +62,7 @@ swfdec_gst_buffer_new (SwfdecBuffer *buffer)
   
   ret = gst_buffer_new_and_alloc (buffer->length);
   memcpy (GST_BUFFER_DATA (ret), buffer->data, buffer->length);
+  swfdec_buffer_unref (buffer);
 
   return ret;
 }
commit 41303e7a5d484749dead221e4dee528af0083881
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 18:20:07 2007 +0100

    assert the surface gets unloaded on dispose

diff --git a/libswfdec/swfdec_image.c b/libswfdec/swfdec_image.c
index 075f771..4932882 100644
--- a/libswfdec/swfdec_image.c
+++ b/libswfdec/swfdec_image.c
@@ -71,6 +71,8 @@ swfdec_image_dispose (GObject *object)
   }
 
   G_OBJECT_CLASS (swfdec_image_parent_class)->dispose (object);
+
+  g_assert (image->surface == NULL);
 }
 
 static void
commit 8f764b8ad026f39eb2cd871fc97e5351a91ae379
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 18:19:40 2007 +0100

    unload cache on dispose
    
    previously we just unset the cache, that was not entirely enough

diff --git a/libswfdec/swfdec_cached.c b/libswfdec/swfdec_cached.c
index 37b5737..e49d42a 100644
--- a/libswfdec/swfdec_cached.c
+++ b/libswfdec/swfdec_cached.c
@@ -32,6 +32,7 @@ swfdec_cached_dispose (GObject *object)
 {
   SwfdecCached * cached = SWFDEC_CACHED (object);
 
+  swfdec_cached_unload (cached);
   swfdec_cached_set_cache (cached, NULL);
 
   G_OBJECT_CLASS (swfdec_cached_parent_class)->dispose (object);
commit bde4648b9aba1e99a7a64ce14ba32ebdfbb158d0
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 14:31:00 2007 +0100

    compress actions in all cases, not just sometimes

diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index d03e6d2..0d16a0b 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -355,6 +355,43 @@ swfdec_player_compress_actions (SwfdecRingBuffer *buffer)
   }
   SWFDEC_INFO ("compresed action queue to %u elements", 
       swfdec_ring_buffer_get_n_elements (buffer));
+  g_print ("compresed action queue to %u elements\n", 
+      swfdec_ring_buffer_get_n_elements (buffer));
+  for (i = 0; i < swfdec_ring_buffer_get_n_elements (buffer); i++) {
+    action = swfdec_ring_buffer_peek_nth (buffer, i);
+    g_assert (action->movie != NULL);
+  }
+}
+
+static void
+swfdec_player_do_add_action (SwfdecPlayer *player, guint importance, SwfdecPlayerAction *act)
+{
+  SwfdecPlayerAction *action = swfdec_ring_buffer_push (player->actions[importance]);
+  if (action == NULL) {
+    /* try to get rid of freed actions */
+    if (swfdec_ring_buffer_get_size (player->actions[importance]) >= 256) {
+      swfdec_player_compress_actions (player->actions[importance]);
+      g_print ("%u/%u elements\n", 
+	  swfdec_ring_buffer_get_n_elements (player->actions[importance]), 
+	  swfdec_ring_buffer_get_size (player->actions[importance]));
+      action = swfdec_ring_buffer_push (player->actions[importance]);
+      g_print ("%u/%u elements: action %p\n", 
+	  swfdec_ring_buffer_get_n_elements (player->actions[importance]), 
+	  swfdec_ring_buffer_get_size (player->actions[importance]), action);
+      /* if it doesn't get smaller, bail */
+      if (action == NULL) {
+	swfdec_as_context_abort (SWFDEC_AS_CONTEXT (player), 
+	    "256 levels of recursion were exceeded in one action list.");
+	return;
+      }
+    } else {
+      swfdec_ring_buffer_set_size (player->actions[importance],
+	  swfdec_ring_buffer_get_size (player->actions[importance]) + 16);
+      action = swfdec_ring_buffer_push (player->actions[importance]);
+      g_assert (action);
+    }
+  }
+  *action = *act;
 }
 
 /**
@@ -373,42 +410,21 @@ void
 swfdec_player_add_action (SwfdecPlayer *player, SwfdecMovie *movie, SwfdecEventType type,
     guint importance)
 {
-  SwfdecPlayerAction *action;
+  SwfdecPlayerAction action = { movie, NULL, type };
 
   g_return_if_fail (SWFDEC_IS_PLAYER (player));
   g_return_if_fail (SWFDEC_IS_MOVIE (movie));
   g_return_if_fail (importance < SWFDEC_PLAYER_N_ACTION_QUEUES);
 
   SWFDEC_LOG ("adding action %s %u", movie->name, type);
-  action = swfdec_ring_buffer_push (player->actions[importance]);
-  if (action == NULL) {
-    /* try to get rid of freed actions */
-    if (swfdec_ring_buffer_get_size (player->actions[importance]) >= 256) {
-      swfdec_player_compress_actions (player->actions[importance]);
-      action = swfdec_ring_buffer_push (player->actions[importance]);
-      /* if it doesn't get smaller, bail */
-      if (action == NULL) {
-	swfdec_as_context_abort (SWFDEC_AS_CONTEXT (player), 
-	    "256 levels of recursion were exceeded in one action list.");
-	return;
-      }
-    } else {
-      swfdec_ring_buffer_set_size (player->actions[importance],
-	  swfdec_ring_buffer_get_size (player->actions[importance]) + 16);
-      action = swfdec_ring_buffer_push (player->actions[importance]);
-      g_assert (action);
-    }
-  }
-  action->movie = movie;
-  action->script = NULL;
-  action->event = type;
+  swfdec_player_do_add_action (player, importance, &action);
 }
 
 void
 swfdec_player_add_action_script	(SwfdecPlayer *player, SwfdecMovie *movie,
     SwfdecScript *script, guint importance)
 {
-  SwfdecPlayerAction *action;
+  SwfdecPlayerAction action = { movie, script, 0 };
 
   g_return_if_fail (SWFDEC_IS_PLAYER (player));
   g_return_if_fail (SWFDEC_IS_MOVIE (movie));
@@ -416,22 +432,7 @@ swfdec_player_add_action_script	(SwfdecPlayer *player, SwfdecMovie *movie,
   g_return_if_fail (importance < SWFDEC_PLAYER_N_ACTION_QUEUES);
 
   SWFDEC_LOG ("adding action script %s %s", movie->name, script->name);
-  action = swfdec_ring_buffer_push (player->actions[importance]);
-  if (action == NULL) {
-    /* FIXME: limit number of actions to not get inf loops due to scripts? */
-    if (swfdec_ring_buffer_get_size (player->actions[importance]) >= 256) {
-      /* FIXME: try to remove empty entries first? */
-      swfdec_as_context_abort (SWFDEC_AS_CONTEXT (player), 
-	  "256 levels of recursion were exceeded in one action list.");
-      return;
-    }
-    swfdec_ring_buffer_set_size (player->actions[importance],
-	swfdec_ring_buffer_get_size (player->actions[importance]) + 16);
-    action = swfdec_ring_buffer_push (player->actions[importance]);
-    g_assert (action);
-  }
-  action->movie = movie;
-  action->script = script;
+  swfdec_player_do_add_action (player, importance, &action);
 }
 
 /**
commit d8a2705566538fb7e2c593444e0fe9ae59bc4bc6
Author: Benjamin Otte <otte at gnome.org>
Date:   Sat Nov 3 14:25:54 2007 +0100

    yay, Flash can look up unnamed movies \o/

diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index 1c9f0ee..57043f3 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -417,7 +417,7 @@ super_special_movie_lookup_magic (SwfdecAsContext *cx, SwfdecAsObject *o, const
       return NULL;
   }
   if (SWFDEC_IS_MOVIE (o)) {
-    SwfdecMovie *ret = swfdec_movie_get_by_name (SWFDEC_MOVIE (o), name);
+    SwfdecMovie *ret = swfdec_movie_get_by_name (SWFDEC_MOVIE (o), name, TRUE);
     if (ret)
       return SWFDEC_AS_OBJECT (ret);
   }
diff --git a/libswfdec/swfdec_movie.c b/libswfdec/swfdec_movie.c
index cc05c52..b937850 100644
--- a/libswfdec/swfdec_movie.c
+++ b/libswfdec/swfdec_movie.c
@@ -975,7 +975,7 @@ swfdec_movie_mark (SwfdecAsObject *object)
 
 /* FIXME: This function can definitely be implemented easier */
 SwfdecMovie *
-swfdec_movie_get_by_name (SwfdecMovie *movie, const char *name)
+swfdec_movie_get_by_name (SwfdecMovie *movie, const char *name, gboolean unnamed)
 {
   GList *walk;
   int i;
@@ -1003,10 +1003,9 @@ swfdec_movie_get_by_name (SwfdecMovie *movie, const char *name)
 
   for (walk = movie->list; walk; walk = walk->next) {
     SwfdecMovie *cur = walk->data;
-    if (cur->original_name == SWFDEC_AS_STR_EMPTY)
+    if (cur->original_name == SWFDEC_AS_STR_EMPTY && !unnamed)
       continue;
-    if ((version >= 7 && cur->name == name) ||
-	(version < 7 && swfdec_str_case_equal (cur->name, name)))
+    if (swfdec_strcmp (version, cur->name, name) == 0)
       return cur;
   }
   return NULL;
@@ -1053,7 +1052,7 @@ swfdec_movie_get_variable (SwfdecAsObject *object, SwfdecAsObject *orig,
     return TRUE;
   }
   
-  movie = swfdec_movie_get_by_name (movie, variable);
+  movie = swfdec_movie_get_by_name (movie, variable, FALSE);
   if (movie) {
     SWFDEC_AS_VALUE_SET_OBJECT (val, SWFDEC_AS_OBJECT (movie));
     *flags = 0;
diff --git a/libswfdec/swfdec_movie.h b/libswfdec/swfdec_movie.h
index d33d53b..1bb161a 100644
--- a/libswfdec/swfdec_movie.h
+++ b/libswfdec/swfdec_movie.h
@@ -195,7 +195,8 @@ void		swfdec_movie_initialize		(SwfdecMovie *		movie);
 SwfdecMovie *	swfdec_movie_find		(SwfdecMovie *		movie,
 						 int			depth);
 SwfdecMovie *	swfdec_movie_get_by_name	(SwfdecMovie *		movie,
-						 const char *		name);
+						 const char *		name,
+						 gboolean		unnamed);
 SwfdecMovie *	swfdec_movie_get_root		(SwfdecMovie *		movie);
 void		swfdec_movie_remove		(SwfdecMovie *		movie);
 void		swfdec_movie_destroy		(SwfdecMovie *		movie);
commit 61e2b4745892de38c8cd5104ba53b991603a1958
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri Nov 2 13:16:32 2007 +0100

    "fix" _frameslaoded property.
    
    See gtk-doc documentation of swfdec_sprite_movie_get_frames_loaded() for
    what that means.

diff --git a/libswfdec/swfdec_as_interpret.c b/libswfdec/swfdec_as_interpret.c
index f711e19..1c9f0ee 100644
--- a/libswfdec/swfdec_as_interpret.c
+++ b/libswfdec/swfdec_as_interpret.c
@@ -269,32 +269,25 @@ swfdec_action_wait_for_frame2 (SwfdecAsContext *cx, guint action, const guint8 *
 static void
 swfdec_action_wait_for_frame (SwfdecAsContext *cx, guint action, const guint8 *data, guint len)
 {
-  SwfdecMovie *movie;
-  SwfdecResource *resource;
-  guint frame, jump, loaded;
+  SwfdecSpriteMovie *movie;
+  guint jump;
+  int frame, loaded;
 
   if (len != 3) {
     SWFDEC_ERROR ("WaitForFrame action length invalid (is %u, should be 3", len);
     return;
   }
-  if (!SWFDEC_IS_MOVIE (cx->frame->target)) {
+  if (!SWFDEC_IS_SPRITE_MOVIE (cx->frame->target)) {
     SWFDEC_ERROR ("no movie for WaitForFrame");
     return;
   }
 
-  movie = SWFDEC_MOVIE (cx->frame->target);
+  movie = SWFDEC_SPRITE_MOVIE (cx->frame->target);
   frame = data[0] || (data[1] << 8);
   jump = data[2];
-  resource = swfdec_movie_get_own_resource (movie);
-  if (resource && resource->decoder) {
-    SwfdecDecoder *dec = resource->decoder;
-    loaded = dec->frames_loaded;
-    if (loaded == dec->frames_total)
-      loaded = G_MAXUINT;
-  } else {
-    loaded = G_MAXUINT;
-  }
-  if (loaded <= frame)
+  loaded = swfdec_sprite_movie_get_frames_loaded (movie);
+  if (loaded < (int) movie->n_frames &&
+      loaded <= frame)
     swfdec_script_skip_actions (cx, jump);
 }
 
diff --git a/libswfdec/swfdec_movie_asprops.c b/libswfdec/swfdec_movie_asprops.c
index 990ccf3..f704f79 100644
--- a/libswfdec/swfdec_movie_asprops.c
+++ b/libswfdec/swfdec_movie_asprops.c
@@ -147,11 +147,9 @@ static void
 mc_framesloaded (SwfdecMovie *mov, SwfdecAsValue *rval)
 {
   SwfdecSpriteMovie *movie = SWFDEC_SPRITE_MOVIE (mov);
-  if (movie->sprite) {
-    SWFDEC_AS_VALUE_SET_NUMBER (rval, movie->sprite->parse_frame);
-    return;
-  }
-  SWFDEC_AS_VALUE_SET_INT (rval, movie->n_frames);
+
+  SWFDEC_AS_VALUE_SET_INT (rval, 
+      swfdec_sprite_movie_get_frames_loaded (movie));
 }
 
 static void
diff --git a/libswfdec/swfdec_sprite_movie.c b/libswfdec/swfdec_sprite_movie.c
index 3c0d169..4fa219a 100644
--- a/libswfdec/swfdec_sprite_movie.c
+++ b/libswfdec/swfdec_sprite_movie.c
@@ -755,3 +755,30 @@ swfdec_sprite_movie_unload (SwfdecSpriteMovie *movie)
   movie->sprite = NULL;
 }
 
+/**
+ * swfdec_sprite_movie_get_frames_loaded:
+ * @movie: a #SwfdecSpriteMovie
+ *
+ * Computes the number of loaded frames as used by the _framesloaded property
+ * or the WaitForFrame actions. If the @movie is fully loaded, this is the 
+ * amount of total frames of the sprite it displays, or 0 if it has no sprite.
+ * If the movie is not fully loaded, it is the amount of frames that are 
+ * completely loaded minus one. Welcome to the world of Flash.
+ *
+ * Returns: The number of loaded frames as reported by ActionScript.
+ **/
+int
+swfdec_sprite_movie_get_frames_loaded (SwfdecSpriteMovie *movie)
+{
+  SwfdecSprite *sprite;
+
+  g_return_val_if_fail (SWFDEC_IS_SPRITE_MOVIE (movie), 0);
+
+  sprite = movie->sprite;
+  if (sprite == 0)
+    return 0;
+  if (sprite->parse_frame == sprite->n_frames)
+    return sprite->n_frames;
+
+  return sprite->parse_frame - 1;
+}
diff --git a/libswfdec/swfdec_sprite_movie.h b/libswfdec/swfdec_sprite_movie.h
index 70c9f74..0b7158c 100644
--- a/libswfdec/swfdec_sprite_movie.h
+++ b/libswfdec/swfdec_sprite_movie.h
@@ -64,9 +64,10 @@ struct _SwfdecSpriteMovieClass
 
 GType		swfdec_sprite_movie_get_type		(void);
 
+int		swfdec_sprite_movie_get_frames_loaded	(SwfdecSpriteMovie *	movie);
+
 void		swfdec_sprite_movie_goto		(SwfdecSpriteMovie *	movie,
 							 guint			goto_frame);
-
 void		swfdec_sprite_movie_unload		(SwfdecSpriteMovie *	movie);
 
 
commit fac32d9ea49f4f64827343e4e5156cf8952f4a13
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri Nov 2 10:03:00 2007 +0100

    improve swfdec_sprite_movie_unload() a bit
    
    It clears variables and removes children movies now

diff --git a/libswfdec/swfdec_sprite_movie.c b/libswfdec/swfdec_sprite_movie.c
index dcd01c6..3c0d169 100644
--- a/libswfdec/swfdec_sprite_movie.c
+++ b/libswfdec/swfdec_sprite_movie.c
@@ -735,14 +735,20 @@ swfdec_sprite_movie_clear (SwfdecAsContext *cx, SwfdecAsObject *object,
 void
 swfdec_sprite_movie_unload (SwfdecSpriteMovie *movie)
 {
+  SwfdecMovie *mov;
   SwfdecAsValue hack;
 
   g_return_if_fail (SWFDEC_IS_SPRITE_MOVIE (movie));
 
+  mov = SWFDEC_MOVIE (movie);
   /* This function does enough invalidating */
   swfdec_sprite_movie_clear (SWFDEC_AS_OBJECT (movie)->context, 
       SWFDEC_AS_OBJECT (movie), 0, NULL, &hack);
-  movie->frame = 0;
+  /* FIXME: destroy or unload? */
+  while (mov->list)
+    swfdec_movie_destroy (mov->list->data);
+  swfdec_as_object_clear_variables (SWFDEC_AS_OBJECT (movie));
+  movie->frame = (guint) -1;
   movie->n_frames = 0;
   movie->next_action = 0;
   movie->max_action = 0;
commit de7aa11fe0bb50bf2dc0493e88d97195008425b8
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri Nov 2 10:02:12 2007 +0100

    add swfdec_as_object_clear_variables()

diff --git a/libswfdec/swfdec_as_object.c b/libswfdec/swfdec_as_object.c
index b90e915..877f6e4 100644
--- a/libswfdec/swfdec_as_object.c
+++ b/libswfdec/swfdec_as_object.c
@@ -921,6 +921,21 @@ swfdec_as_object_delete_variable (SwfdecAsObject *object, const char *variable)
 }
 
 /**
+ * swfdec_as_object_clear_variables:
+ * @object: a #SwfdecAsObject
+ *
+ * Clears all user-set variables from the given object.
+ **/
+void
+swfdec_as_object_clear_variables (SwfdecAsObject *object)
+{
+  g_return_if_fail (SWFDEC_IS_AS_OBJECT (object));
+
+  g_hash_table_foreach (object->properties, swfdec_as_object_free_property, object);
+  g_hash_table_remove_all (object->properties);
+}
+
+/**
  * swfdec_as_object_set_variable_flags:
  * @object: a #SwfdecAsObject
  * @variable: the variable to modify
diff --git a/libswfdec/swfdec_as_object.h b/libswfdec/swfdec_as_object.h
index 8fec190..8952b72 100644
--- a/libswfdec/swfdec_as_object.h
+++ b/libswfdec/swfdec_as_object.h
@@ -146,6 +146,7 @@ gboolean	swfdec_as_object_get_variable_and_flags
 SwfdecAsDeleteReturn
 		swfdec_as_object_delete_variable(SwfdecAsObject *	object,
 						 const char *		variable);
+void		swfdec_as_object_clear_variables(SwfdecAsObject *	object);
 void		swfdec_as_object_set_variable_flags
 						(SwfdecAsObject *       object,
 						 const char *		variable,


More information about the Swfdec mailing list