--------------------------------------------------------------------------------------------------------------- INITIALIZING VIDBOT, v1.7.1... --------------------------------------------------------------------------------------------------------------- [22:10:55.981] Vidbot :: start() [22:10:55.982] Vidbot :: _next(), _stepIndex:0 of 4 [22:10:55.983] index :: _onStepStarted_vidbot(), step: 1 [22:10:55.984] Vidbot :: step[0], label:Initializing Core [22:10:55.993] index :: _onStepProgress_vidbot(), percent: 20 [22:10:55.993] Vidbot :: _parse() [22:10:55.995] index :: _onStepProgress_vidbot(), percent: 40 [22:10:55.995] Vidbot :: _validate() [22:10:55.996] index :: _onStepProgress_vidbot(), percent: 60 [22:10:55.996] Vidbot :: _fonts() [22:10:55.996] FabricFontManager :: add(), id: SourceSansPro-Bold [22:10:55.997] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Bold.ttf [22:10:56.005] FabricFontManager :: add(), id: SourceSansPro-Light [22:10:56.005] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Light.ttf [22:10:56.006] FabricFontManager :: add(), id: DINOT-Bold [22:10:56.006] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Bold.otf [22:10:56.007] FabricFontManager :: add(), id: DINOT-Light [22:10:56.007] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Light.otf [22:10:56.008] FabricFontManager :: add(), id: TradeGothicLTStd-Regular [22:10:56.008] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Regular.otf [22:10:56.009] FabricFontManager :: add(), id: TradeGothicLTStd-Bold [22:10:56.009] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Bold.otf [22:10:56.010] index :: _onStepProgress_vidbot(), percent: 80 [22:10:56.010] Vidbot :: _clips() [22:10:56.011] StreamManager :: add(), id:audio_vo, type:audio [22:10:56.011] AudioClip[audio_vo] :: constructor() [22:10:56.011] InputStream[audio_vo] :: constructor() [22:10:56.012] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'audio_vo', clipId: null } [22:10:56.014] StreamManager :: add(), id:bg_music, type:audio [22:10:56.014] AudioClip[bg_music] :: constructor() [22:10:56.015] InputStream[bg_music] :: constructor() [22:10:56.015] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'bg_music', clipId: null } [22:10:56.015] StreamManager :: add(), id:simplefadedisplay, type:canvas [22:10:56.015] CanvasStream[canvas_938948617341] :: constructor() [22:10:56.016] InputStream[canvas_938948617341] :: constructor() [22:10:56.101] KenBurnsSlideshow[simplefadedisplay] :: constructor() [22:10:56.101] Overlay[simplefadedisplay] :: constructor() [22:10:56.101] CanvasClip[simplefadedisplay] :: constructor() [22:10:56.101] Clip[simplefadedisplay] :: constructor() [22:10:56.101] clip:"simplefadedisplay" added to stream:"canvas_938948617341" [22:10:56.101] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_938948617341', clipId: 'simplefadedisplay' } [22:10:56.102] StreamManager :: add(), id:caption, type:canvas [22:10:56.102] RenCaption[caption] :: constructor() [22:10:56.102] Ren[caption] :: constructor() [22:10:56.102] Overlay[caption] :: constructor() [22:10:56.102] CanvasClip[caption] :: constructor() [22:10:56.102] Clip[caption] :: constructor() [22:10:56.102] clip:"caption" added to stream:"canvas_938948617341" [22:10:56.102] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_938948617341', clipId: 'caption' } [22:10:56.102] StreamManager :: add(), id:options, type:canvas [22:10:56.103] RenOptions[options] :: constructor() [22:10:56.103] Ren[options] :: constructor() [22:10:56.103] Overlay[options] :: constructor() [22:10:56.103] CanvasClip[options] :: constructor() [22:10:56.103] Clip[options] :: constructor() [22:10:56.103] clip:"options" added to stream:"canvas_938948617341" [22:10:56.103] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_938948617341', clipId: 'options' } [22:10:56.103] all added... [22:10:56.103] Vidbot :: _next(), _stepIndex:1 of 4 [22:10:56.103] index :: _onStepCompleted_vidbot(), step: 1 [22:10:56.104] index :: _onStepStarted_vidbot(), step: 2 [22:10:56.104] Vidbot :: step[1], label:Initializing Input Streams [22:10:56.104] StreamManager :: init() [22:10:56.105] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'audio_vo', progress: 0.3333333333333333 } [22:10:56.105] index :: _onStepProgress_vidbot(), percent: 33 [22:10:56.105] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'bg_music', progress: 0.6666666666666666 } [22:10:56.105] index :: _onStepProgress_vidbot(), percent: 67 [22:10:56.105] CanvasStream[canvas_938948617341] :: _init(), BEGIN [22:10:56.106] i:0, c.id:simplefadedisplay [22:10:56.106] KenBurnsSlideshow[simplefadedisplay] :: _init(), BEGIN [22:10:56.106] KenBurnsSlideshow[simplefadedisplay] :: _validate() [22:10:56.106] KenBurnsSlideshow[undefined] :: _validateAnim() [22:10:56.107] KenBurnsSlideshow[undefined] :: _validateTheme() [22:10:56.108] i:1, c.id:caption [22:10:56.108] RenCaption[caption] :: _init() [22:10:56.108] RenCaption[caption] :: _validate() [22:10:56.109] i:2, c.id:options [22:10:56.110] RenPrice[options] :: _init() [22:10:56.110] RenOptions[options] :: _validate() [22:10:56.111] KenBurnsSlideshow[simplefadedisplay] :: _build() [22:10:56.117] AnimatedImageFrame[aif] :: constructor() [22:10:56.118] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.118] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_1.jpg [22:10:56.129] RenCaption[caption] :: _build() [22:10:56.147] RenOptions[options] :: _assets() [22:10:56.147] CanvasClip :: LoadSVGFromStringWithPromise() [22:10:56.175] CanvasClip :: LoadSVGFromString(), loaded [22:10:56.178] Overlay[caption] :: _animate() [22:10:56.181] RenOptions[options] :: _build() [22:10:56.273] CanvasStream[caption] :: _init(), p.then() [22:10:56.273] RenOptions[options] :: _animate() [22:10:56.273] Overlay[options] :: _animate() [22:10:56.274] CanvasStream[options] :: _init(), p.then() [22:10:56.322] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.326] AnimatedImageFrame[aif] :: _init(), END [22:10:56.327] AnimatedImageFrame[aif] :: constructor() [22:10:56.327] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.327] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_2.jpg [22:10:56.369] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.370] AnimatedImageFrame[aif] :: _init(), END [22:10:56.371] AnimatedImageFrame[aif] :: constructor() [22:10:56.371] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.371] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_3.jpg [22:10:56.409] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.411] AnimatedImageFrame[aif] :: _init(), END [22:10:56.411] AnimatedImageFrame[aif] :: constructor() [22:10:56.411] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.412] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_4.jpg [22:10:56.448] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.449] AnimatedImageFrame[aif] :: _init(), END [22:10:56.449] AnimatedImageFrame[aif] :: constructor() [22:10:56.449] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.450] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_5.jpg [22:10:56.491] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.492] AnimatedImageFrame[aif] :: _init(), END [22:10:56.493] AnimatedImageFrame[aif] :: constructor() [22:10:56.493] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.493] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_6.jpg [22:10:56.531] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.532] AnimatedImageFrame[aif] :: _init(), END [22:10:56.533] AnimatedImageFrame[aif] :: constructor() [22:10:56.533] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.533] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_7.jpg [22:10:56.572] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.573] AnimatedImageFrame[aif] :: _init(), END [22:10:56.574] AnimatedImageFrame[aif] :: constructor() [22:10:56.574] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.574] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_8.jpg [22:10:56.605] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.606] AnimatedImageFrame[aif] :: _init(), END [22:10:56.606] AnimatedImageFrame[aif] :: constructor() [22:10:56.606] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.606] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_9.jpg [22:10:56.643] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.645] AnimatedImageFrame[aif] :: _init(), END [22:10:56.645] AnimatedImageFrame[aif] :: constructor() [22:10:56.645] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.645] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_10.jpg [22:10:56.682] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.683] AnimatedImageFrame[aif] :: _init(), END [22:10:56.683] AnimatedImageFrame[aif] :: constructor() [22:10:56.684] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.684] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_11.jpg [22:10:56.746] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.747] AnimatedImageFrame[aif] :: _init(), END [22:10:56.747] AnimatedImageFrame[aif] :: constructor() [22:10:56.748] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.748] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_12.jpg [22:10:56.810] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.811] AnimatedImageFrame[aif] :: _init(), END [22:10:56.812] AnimatedImageFrame[aif] :: constructor() [22:10:56.812] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.812] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_13.jpg [22:10:56.897] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.898] AnimatedImageFrame[aif] :: _init(), END [22:10:56.899] AnimatedImageFrame[aif] :: constructor() [22:10:56.899] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.899] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_14.jpg [22:10:56.934] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.935] AnimatedImageFrame[aif] :: _init(), END [22:10:56.935] AnimatedImageFrame[aif] :: constructor() [22:10:56.935] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.935] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_15.jpg [22:10:56.971] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:56.972] AnimatedImageFrame[aif] :: _init(), END [22:10:56.973] AnimatedImageFrame[aif] :: constructor() [22:10:56.973] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:56.973] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_16.jpg [22:10:57.005] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:57.006] AnimatedImageFrame[aif] :: _init(), END [22:10:57.006] AnimatedImageFrame[aif] :: constructor() [22:10:57.007] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:57.007] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_17.jpg [22:10:57.041] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:57.042] AnimatedImageFrame[aif] :: _init(), END [22:10:57.042] AnimatedImageFrame[aif] :: constructor() [22:10:57.042] AnimatedImageFrame[aif] :: _init(), BEGIN [22:10:57.042] CanvasClip :: LoadImageWithPromise(), src: 176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9_18.jpg [22:10:57.078] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [22:10:57.079] AnimatedImageFrame[aif] :: _init(), END [22:10:57.079] Overlay[simplefadedisplay] :: _animate() [22:10:57.080] KenBurnsSlideshow[simplefadedisplay] :: _init(), END [22:10:57.080] CanvasStream[simplefadedisplay] :: _init(), p.then() [22:10:57.080] CanvasStream[canvas_938948617341] :: _init(), promise.all.then() [22:10:57.082] CanvasStream[canvas_938948617341] :: _init(), END [22:10:57.083] StreamMangaer :: init(), stream[canvas_938948617341].then() [22:10:57.083] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'canvas_938948617341', progress: 1 } [22:10:57.083] index :: _onStepProgress_vidbot(), percent: 100 [22:10:57.083] StreamManager :: init(), promise.all.then... [22:10:57.083] Vidbot :: StreamMgr.on( 'INITED' ) [22:10:57.083] Vidbot :: _next(), _stepIndex:2 of 4 [22:10:57.083] index :: _onStepCompleted_vidbot(), step: 2 [22:10:57.084] index :: _onStepStarted_vidbot(), step: 3 [22:10:57.084] Vidbot :: step[2], label:Rendering Canvas Streams [22:10:57.084] Vidbot :: StreamMgr.on( 'RENDER_STARTED' ), data: undefined [22:10:57.084] StreamManager :: render() [22:10:57.085] CanvasStream[canvas_938948617341] :: render() [22:10:57.146] index :: _onStepProgress_vidbot(), percent: 0 [22:11:28.373] index :: _onStepProgress_vidbot(), percent: 5 [22:12:01.438] index :: _onStepProgress_vidbot(), percent: 10 [22:12:35.407] index :: _onStepProgress_vidbot(), percent: 15 [22:13:08.161] index :: _onStepProgress_vidbot(), percent: 20 [22:13:40.919] index :: _onStepProgress_vidbot(), percent: 25 [22:14:13.884] index :: _onStepProgress_vidbot(), percent: 30 [22:14:46.794] index :: _onStepProgress_vidbot(), percent: 35 [22:15:20.231] index :: _onStepProgress_vidbot(), percent: 40 [22:15:55.366] index :: _onStepProgress_vidbot(), percent: 45 [22:16:30.460] index :: _onStepProgress_vidbot(), percent: 50 [22:17:05.530] index :: _onStepProgress_vidbot(), percent: 55 [22:17:36.335] index :: _onStepProgress_vidbot(), percent: 60 [22:18:16.672] index :: _onStepProgress_vidbot(), percent: 65 [22:18:53.862] index :: _onStepProgress_vidbot(), percent: 70 [22:19:33.028] index :: _onStepProgress_vidbot(), percent: 75 [22:20:14.374] index :: _onStepProgress_vidbot(), percent: 80 [22:20:53.690] index :: _onStepProgress_vidbot(), percent: 85 [22:21:25.148] index :: _onStepProgress_vidbot(), percent: 90 [22:21:57.057] index :: _onStepProgress_vidbot(), percent: 95 [22:22:31.509] index :: _onStepProgress_vidbot(), percent: 100 [22:22:34.672] StreamManager :: render(), Promise.all.then... [22:22:34.673] Vidbot :: StreamMgr.on( 'RENDER_COMPLETED' ), data: undefined [22:22:34.673] Vidbot :: _next(), _stepIndex:3 of 4 [22:22:34.673] index :: _onStepCompleted_vidbot(), step: 3 [22:22:34.674] index :: _onStepStarted_vidbot(), step: 4 [22:22:34.675] Vidbot :: step[3], label:Encoding Media [22:22:34.677] CanvasFilters :: Overlay() [22:22:34.678] AudioStream[audio_vo] :: inputOptions() [22:22:34.678] AudioFilters :: Volume() [22:22:34.678] filter: [2:a]volume=1[2_vol] [22:22:34.678] AudioFilters :: Delay() [22:22:34.678] filter: [2_vol]adelay=0|0[2_del] [22:22:34.678] AudioStream[bg_music] :: inputOptions() [22:22:34.678] AudioFilters :: Volume() [22:22:34.679] filter: [3:a]volume=0.25[3_vol] [22:22:34.682] AudioFilters :: FadeOut() [22:22:34.682] filter: [3_vol]afade=t=out:st=54:d=1[3_fadeout] [22:22:34.682] AudioFilters :: Delay() [22:22:34.682] filter: [3_fadeout]adelay=0|0[3_del] [22:22:34.682] AudioFilters :: Mix() [22:22:34.683] filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [22:22:34.683] mixed filter: [2_del][3_del]amix=inputs=2:duration=longest[a_out] [22:22:34.685] hang.time: 60 [22:22:34.806] Vidbot :: ffmpeg.on( 'start' ) [22:22:34.807] ffmpeg -f lavfi -i color=c=000000:s=960x540:r=30:duration=54 -r 30 -i ./tmp/canvas_938948617341_%05d.png -to 00:00:54.000 -i file:///var/www/html/clie [22:22:34.807] nts/23386/audio/176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9.mp3 -to 00:00:54.000 -i file:///var/app/video_pre_processor/assets/vidbot/_files/audio/RF3_Easy_L [22:22:34.807] istening.mp3 -y -filter_complex [0:v][1:v]overlay=x=0:y=0[1_out];[2:a]volume=1[2_vol];[2_vol]adelay=0|0[2_del];[3:a]volume=0.25[3_vol];[3_vol]afade=t= [22:22:34.807] out:st=54:d=1[3_fadeout];[3_fadeout]adelay=0|0[3_del];[2_del][3_del]amix=inputs=2:duration=longest[a_out] -acodec aac -vcodec libx264 -r 30 -f mp4 -ma [22:22:34.807] p [a_out] -map [1_out] -preset veryfast -crf 18 -movflags frag_keyframe+empty_moov -pix_fmt yuv420p /var/www/html/clients/23386/video/176E0ECC-A2F1-B9 [22:22:34.807] B5-8B9E-A64C5EEA6CF9.mp4 [22:22:34.997] index :: _onStepProgress_vidbot(), percent: -3846756402 [22:22:35.407] index :: _onStepProgress_vidbot(), percent: 1 [22:22:36.416] index :: _onStepProgress_vidbot(), percent: 6 [22:22:37.424] index :: _onStepProgress_vidbot(), percent: 11 [22:22:38.440] index :: _onStepProgress_vidbot(), percent: 15 [22:22:39.973] index :: _onStepProgress_vidbot(), percent: 22 [22:22:40.997] index :: _onStepProgress_vidbot(), percent: 26 [22:22:42.001] index :: _onStepProgress_vidbot(), percent: 30 [22:22:43.014] index :: _onStepProgress_vidbot(), percent: 35 [22:22:44.531] index :: _onStepProgress_vidbot(), percent: 42 [22:22:45.542] index :: _onStepProgress_vidbot(), percent: 46 [22:22:46.547] index :: _onStepProgress_vidbot(), percent: 50 [22:22:48.068] index :: _onStepProgress_vidbot(), percent: 55 [22:22:49.594] index :: _onStepProgress_vidbot(), percent: 61 [22:22:50.593] index :: _onStepProgress_vidbot(), percent: 65 [22:22:52.111] index :: _onStepProgress_vidbot(), percent: 71 [22:22:53.122] index :: _onStepProgress_vidbot(), percent: 75 [22:22:54.656] index :: _onStepProgress_vidbot(), percent: 81 [22:22:55.657] index :: _onStepProgress_vidbot(), percent: 85 [22:22:56.678] index :: _onStepProgress_vidbot(), percent: 90 [22:22:58.198] index :: _onStepProgress_vidbot(), percent: 97 [22:22:58.966] index :: _onStepProgress_vidbot(), percent: 100 [22:22:59.031] Vidbot :: ffmpeg.on( 'end' ), Done! [22:22:59.031] StreamManager :: dispose() [22:22:59.031] CanvasStream[canvas_938948617341] :: dispose() [22:22:59.041] Vidbot :: fflog.on( 'finish' ) [22:22:59.041] fflog.path: /var/www/html/clients/23386/video/176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9.mp4.fflog [22:22:59.041] Vidbot :: _next(), _stepIndex:4 of 4 [22:22:59.041] index :: _onStepCompleted_vidbot(), step: 4 [22:22:59.041] index :: _onComplete_vidbot(), data: { stepTime: 0, appTime: 723.081, output: '/var/www/html/clients/23386/video/176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9.mp4', duration: 54 } --------------------------------------------------------------------------------------------------------------- Output File : /var/app/video_pre_processor/jobs/postp//var/www/html/clients/23386/video/176E0ECC-A2F1-B9B5-8B9E-A64C5EEA6CF9.mp4 Media Duration : 00:00:54.000 Generation Time : 00:12:03.081 ---------------------------------------------------------------------------------------------------------------