--------------------------------------------------------------------------------------------------------------- INITIALIZING VIDBOT, v1.7.0... --------------------------------------------------------------------------------------------------------------- [01:37:00.393] Vidbot :: start() [01:37:00.393] Vidbot :: _next(), _stepIndex:0 of 4 [01:37:00.394] index :: _onStepStarted_vidbot(), step: 1 [01:37:00.395] Vidbot :: step[0], label:Initializing Core [01:37:00.404] index :: _onStepProgress_vidbot(), percent: 20 [01:37:00.404] Vidbot :: _parse() [01:37:00.405] index :: _onStepProgress_vidbot(), percent: 40 [01:37:00.406] Vidbot :: _validate() [01:37:00.407] index :: _onStepProgress_vidbot(), percent: 60 [01:37:00.407] Vidbot :: _fonts() [01:37:00.407] FabricFontManager :: add(), id: SourceSansPro-Bold [01:37:00.407] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Bold.ttf [01:37:00.417] FabricFontManager :: add(), id: SourceSansPro-Light [01:37:00.417] src: /var/app/Vidbot-V2/assets/fonts/SourceSansPro/SourceSansPro-Light.ttf [01:37:00.418] FabricFontManager :: add(), id: DINOT-Bold [01:37:00.418] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Bold.otf [01:37:00.419] FabricFontManager :: add(), id: DINOT-Light [01:37:00.419] src: /var/app/Vidbot-V2/assets/fonts/DINOT/DINOT-Light.otf [01:37:00.420] FabricFontManager :: add(), id: TradeGothicLTStd-Regular [01:37:00.420] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Regular.otf [01:37:00.421] FabricFontManager :: add(), id: TradeGothicLTStd-Bold [01:37:00.421] src: /var/app/Vidbot-V2/assets/fonts/TradeGothicCond/TradeGothicLTStd-Bold.otf [01:37:00.422] index :: _onStepProgress_vidbot(), percent: 80 [01:37:00.422] Vidbot :: _clips() [01:37:00.423] StreamManager :: add(), id:audio_vo, type:audio [01:37:00.424] AudioClip[audio_vo] :: constructor() [01:37:00.424] InputStream[audio_vo] :: constructor() [01:37:00.424] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'audio_vo', clipId: null } [01:37:00.427] StreamManager :: add(), id:bg_music, type:audio [01:37:00.427] AudioClip[bg_music] :: constructor() [01:37:00.427] InputStream[bg_music] :: constructor() [01:37:00.427] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'bg_music', clipId: null } [01:37:00.428] StreamManager :: add(), id:simplefadedisplay, type:canvas [01:37:00.428] CanvasStream[canvas_871933741327] :: constructor() [01:37:00.428] InputStream[canvas_871933741327] :: constructor() [01:37:00.512] KenBurnsSlideshow[simplefadedisplay] :: constructor() [01:37:00.512] Overlay[simplefadedisplay] :: constructor() [01:37:00.512] CanvasClip[simplefadedisplay] :: constructor() [01:37:00.513] Clip[simplefadedisplay] :: constructor() [01:37:00.513] clip:"simplefadedisplay" added to stream:"canvas_871933741327" [01:37:00.513] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'canvas_871933741327', clipId: 'simplefadedisplay' } [01:37:00.513] StreamManager :: add(), id:carfax, type:video [01:37:00.513] VideoStream[carfax] :: constructor() [01:37:00.513] InputStream[carfax] :: constructor() [01:37:00.513] Vidbot :: StreamMgr.on( 'ADDED' ), data: { streamID: 'carfax', clipId: null } [01:37:00.514] all added... [01:37:00.514] Vidbot :: _next(), _stepIndex:1 of 4 [01:37:00.514] index :: _onStepCompleted_vidbot(), step: 1 [01:37:00.514] index :: _onStepStarted_vidbot(), step: 2 [01:37:00.514] Vidbot :: step[1], label:Initializing Input Streams [01:37:00.515] StreamManager :: init() [01:37:00.515] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'audio_vo', progress: 0.25 } [01:37:00.515] index :: _onStepProgress_vidbot(), percent: 25 [01:37:00.515] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'bg_music', progress: 0.5 } [01:37:00.516] index :: _onStepProgress_vidbot(), percent: 50 [01:37:00.516] CanvasStream[canvas_871933741327] :: _init(), BEGIN [01:37:00.516] i:0, c.id:simplefadedisplay [01:37:00.517] KenBurnsSlideshow[simplefadedisplay] :: _init(), BEGIN [01:37:00.517] KenBurnsSlideshow[simplefadedisplay] :: _validate() [01:37:00.517] KenBurnsSlideshow[undefined] :: _validateAnim() [01:37:00.518] KenBurnsSlideshow[undefined] :: _validateTheme() [01:37:00.519] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'carfax', progress: 0.75 } [01:37:00.519] index :: _onStepProgress_vidbot(), percent: 75 [01:37:00.520] KenBurnsSlideshow[simplefadedisplay] :: _build() [01:37:00.526] AnimatedImageFrame[aif] :: constructor() [01:37:00.527] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.528] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_1.jpg [01:37:00.575] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.579] AnimatedImageFrame[aif] :: _init(), END [01:37:00.581] AnimatedImageFrame[aif] :: constructor() [01:37:00.581] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.581] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_2.jpg [01:37:00.614] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.616] AnimatedImageFrame[aif] :: _init(), END [01:37:00.617] AnimatedImageFrame[aif] :: constructor() [01:37:00.617] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.617] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_3.jpg [01:37:00.648] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.650] AnimatedImageFrame[aif] :: _init(), END [01:37:00.651] AnimatedImageFrame[aif] :: constructor() [01:37:00.651] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.651] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_4.jpg [01:37:00.682] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.683] AnimatedImageFrame[aif] :: _init(), END [01:37:00.684] AnimatedImageFrame[aif] :: constructor() [01:37:00.684] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.684] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_5.jpg [01:37:00.723] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.725] AnimatedImageFrame[aif] :: _init(), END [01:37:00.725] AnimatedImageFrame[aif] :: constructor() [01:37:00.726] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.726] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_6.jpg [01:37:00.764] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.765] AnimatedImageFrame[aif] :: _init(), END [01:37:00.766] AnimatedImageFrame[aif] :: constructor() [01:37:00.766] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.766] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_7.jpg [01:37:00.805] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.806] AnimatedImageFrame[aif] :: _init(), END [01:37:00.807] AnimatedImageFrame[aif] :: constructor() [01:37:00.807] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.807] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_8.jpg [01:37:00.845] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.846] AnimatedImageFrame[aif] :: _init(), END [01:37:00.847] AnimatedImageFrame[aif] :: constructor() [01:37:00.847] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.847] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_9.jpg [01:37:00.883] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.885] AnimatedImageFrame[aif] :: _init(), END [01:37:00.885] AnimatedImageFrame[aif] :: constructor() [01:37:00.885] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.885] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_10.jpg [01:37:00.922] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.923] AnimatedImageFrame[aif] :: _init(), END [01:37:00.923] AnimatedImageFrame[aif] :: constructor() [01:37:00.923] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.923] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_11.jpg [01:37:00.960] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:00.961] AnimatedImageFrame[aif] :: _init(), END [01:37:00.962] AnimatedImageFrame[aif] :: constructor() [01:37:00.962] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:00.962] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_12.jpg [01:37:01.004] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.005] AnimatedImageFrame[aif] :: _init(), END [01:37:01.006] AnimatedImageFrame[aif] :: constructor() [01:37:01.006] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.006] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_13.jpg [01:37:01.050] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.051] AnimatedImageFrame[aif] :: _init(), END [01:37:01.052] AnimatedImageFrame[aif] :: constructor() [01:37:01.052] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.052] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_14.jpg [01:37:01.086] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.087] AnimatedImageFrame[aif] :: _init(), END [01:37:01.088] AnimatedImageFrame[aif] :: constructor() [01:37:01.088] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.088] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_15.jpg [01:37:01.124] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.124] AnimatedImageFrame[aif] :: _init(), END [01:37:01.125] AnimatedImageFrame[aif] :: constructor() [01:37:01.125] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.125] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_16.jpg [01:37:01.158] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.159] AnimatedImageFrame[aif] :: _init(), END [01:37:01.159] AnimatedImageFrame[aif] :: constructor() [01:37:01.159] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.159] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_17.jpg [01:37:01.203] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.208] AnimatedImageFrame[aif] :: _init(), END [01:37:01.209] AnimatedImageFrame[aif] :: constructor() [01:37:01.209] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.209] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_18.jpg [01:37:01.244] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.245] AnimatedImageFrame[aif] :: _init(), END [01:37:01.246] AnimatedImageFrame[aif] :: constructor() [01:37:01.246] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.246] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_19.jpg [01:37:01.278] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.279] AnimatedImageFrame[aif] :: _init(), END [01:37:01.280] AnimatedImageFrame[aif] :: constructor() [01:37:01.280] AnimatedImageFrame[aif] :: _init(), BEGIN [01:37:01.280] CanvasClip :: LoadImageWithPromise(), src: 67947FFE-83BB-B762-8A9A-F75B47019847_20.jpg [01:37:01.322] CanvasClip :: LoadImageWithPromise(), loaded, isError: false [01:37:01.323] AnimatedImageFrame[aif] :: _init(), END [01:37:01.324] Overlay[simplefadedisplay] :: _animate() [01:37:01.325] KenBurnsSlideshow[simplefadedisplay] :: _init(), END [01:37:01.325] CanvasStream[simplefadedisplay] :: _init(), p.then() [01:37:01.326] CanvasStream[canvas_871933741327] :: _init(), promise.all.then() [01:37:01.328] CanvasStream[canvas_871933741327] :: _init(), END [01:37:01.329] StreamMangaer :: init(), stream[canvas_871933741327].then() [01:37:01.329] Vidbot :: StreamMgr.on( 'STREAM_INITED' ), data: { streamID: 'canvas_871933741327', progress: 1 } [01:37:01.329] index :: _onStepProgress_vidbot(), percent: 100 [01:37:01.329] StreamManager :: init(), promise.all.then... [01:37:01.329] Vidbot :: StreamMgr.on( 'INITED' ) [01:37:01.329] Vidbot :: _next(), _stepIndex:2 of 4 [01:37:01.329] index :: _onStepCompleted_vidbot(), step: 2 [01:37:01.330] index :: _onStepStarted_vidbot(), step: 3 [01:37:01.330] Vidbot :: step[2], label:Rendering Canvas Streams [01:37:01.330] Vidbot :: StreamMgr.on( 'RENDER_STARTED' ), data: undefined [01:37:01.330] StreamManager :: render() [01:37:01.331] CanvasStream[canvas_871933741327] :: render() [01:37:01.405] index :: _onStepProgress_vidbot(), percent: 0 [01:37:31.061] index :: _onStepProgress_vidbot(), percent: 5 [01:38:09.710] index :: _onStepProgress_vidbot(), percent: 10 [01:38:43.934] index :: _onStepProgress_vidbot(), percent: 15 [01:39:18.705] index :: _onStepProgress_vidbot(), percent: 20 [01:39:59.805] index :: _onStepProgress_vidbot(), percent: 25 [01:40:45.053] index :: _onStepProgress_vidbot(), percent: 30 [01:41:33.783] index :: _onStepProgress_vidbot(), percent: 35 [01:42:20.557] index :: _onStepProgress_vidbot(), percent: 40 [01:43:12.025] index :: _onStepProgress_vidbot(), percent: 45 [01:44:00.976] index :: _onStepProgress_vidbot(), percent: 50 [01:44:49.298] index :: _onStepProgress_vidbot(), percent: 55 [01:45:36.107] index :: _onStepProgress_vidbot(), percent: 60 [01:46:18.731] index :: _onStepProgress_vidbot(), percent: 65 [01:46:55.270] index :: _onStepProgress_vidbot(), percent: 70 [01:47:40.051] index :: _onStepProgress_vidbot(), percent: 75 [01:48:22.353] index :: _onStepProgress_vidbot(), percent: 80 [01:49:15.308] index :: _onStepProgress_vidbot(), percent: 85 [01:49:54.018] index :: _onStepProgress_vidbot(), percent: 90 [01:50:38.931] index :: _onStepProgress_vidbot(), percent: 95 [01:51:31.288] index :: _onStepProgress_vidbot(), percent: 100 [01:51:31.915] StreamManager :: render(), Promise.all.then... [01:51:31.915] Vidbot :: StreamMgr.on( 'RENDER_COMPLETED' ), data: undefined [01:51:31.915] Vidbot :: _next(), _stepIndex:3 of 4 [01:51:31.915] index :: _onStepCompleted_vidbot(), step: 3 [01:51:31.916] index :: _onStepStarted_vidbot(), step: 4 [01:51:31.917] Vidbot :: step[3], label:Encoding Media [01:51:31.920] CanvasFilters :: Overlay() [01:51:31.921] VideoStream[carfax] :: inputOptions() [01:51:31.921] VideoFilters :: Tpad() [01:51:31.922] VideoFilters :: Scale() [01:51:31.922] VideoFilters :: Overlay() [01:51:31.923] AudioStream[audio_vo] :: inputOptions() [01:51:31.923] AudioFilters :: Volume() [01:51:31.923] filter: [3:a]volume=1[3_vol] [01:51:31.924] AudioFilters :: Delay() [01:51:31.924] filter: [3_vol]adelay=0|0[3_del] [01:51:31.924] AudioStream[bg_music] :: inputOptions() [01:51:31.924] AudioFilters :: Volume() [01:51:31.924] filter: [4:a]volume=0.10[4_vol] [01:51:31.924] AudioFilters :: FadeOut() [01:51:31.924] filter: [4_vol]afade=t=out:st=74.63:d=1[4_fadeout] [01:51:31.924] AudioFilters :: Delay() [01:51:31.924] filter: [4_fadeout]adelay=0|0[4_del] [01:51:31.925] VideoStream[carfax] :: inputOptions() [01:51:31.925] AudioFilters :: Volume() [01:51:31.925] filter: [5:a]volume=1[5_vol] [01:51:31.925] AudioFilters :: Delay() [01:51:31.925] filter: [5_vol]adelay=60000|60000[5_del] [01:51:31.925] AudioFilters :: Mix() [01:51:31.925] filter: [3_del][4_del][5_del]amix=inputs=3:duration=longest[a_out] [01:51:31.925] mixed filter: [3_del][4_del][5_del]amix=inputs=3:duration=longest[a_out] [01:51:31.928] hang.time: 60 [01:51:32.105] Vidbot :: ffmpeg.on( 'start' ) [01:51:32.106] ffmpeg -f lavfi -i color=c=000000:s=960x540:r=30:duration=74.63 -r 30 -i ./tmp/canvas_871933741327_%05d.png -to 00:00:14.630 -i file:///var/app/video_ [01:51:32.106] pre_processor/assets/cpo/carfax/carfax_540.mp4 -to 00:01:00.000 -i file:///var/www/html/clients/5110/audio/67947FFE-83BB-B762-8A9A-F75B47019847.mp3 -t [01:51:32.106] o 00:01:14.629 -i file:///var/app/video_pre_processor/assets/vidbot/_files/audio/PushPin.mp3 -to 00:00:14.630 -i file:///var/app/video_pre_processor/a [01:51:32.106] ssets/cpo/carfax/carfax_540.mp4 -y -filter_complex [0:v][1:v]overlay=x=0:y=0[1_out];[2:v]tpad=start_duration=59.95[2_tpad];[2_tpad]scale=w=960:h=540[2 [01:51:32.106] _scaled];[1_out][2_scaled]overlay=x=0:y=0:enable='between(t,60,74.63)'[2_out];[3:a]volume=1[3_vol];[3_vol]adelay=0|0[3_del];[4:a]volume=0.10[4_vol];[4 [01:51:32.106] _vol]afade=t=out:st=74.63:d=1[4_fadeout];[4_fadeout]adelay=0|0[4_del];[5:a]volume=1[5_vol];[5_vol]adelay=60000|60000[5_del];[3_del][4_del][5_del]amix= [01:51:32.106] inputs=3:duration=longest[a_out] -acodec aac -vcodec libx264 -r 30 -f mp4 -map [a_out] -map [2_out] -preset veryfast -crf 18 -movflags frag_keyframe+e [01:51:32.106] mpty_moov -pix_fmt yuv420p /var/www/html/clients/5110/video/67947FFE-83BB-B762-8A9A-F75B47019847.mp4 [01:51:32.547] index :: _onStepProgress_vidbot(), percent: -2783396030 [01:51:32.896] index :: _onStepProgress_vidbot(), percent: 1 [01:51:34.961] index :: _onStepProgress_vidbot(), percent: 5 [01:51:37.509] index :: _onStepProgress_vidbot(), percent: 10 [01:51:40.566] index :: _onStepProgress_vidbot(), percent: 16 [01:51:42.602] index :: _onStepProgress_vidbot(), percent: 20 [01:51:44.626] index :: _onStepProgress_vidbot(), percent: 25 [01:51:46.638] index :: _onStepProgress_vidbot(), percent: 30 [01:51:48.670] index :: _onStepProgress_vidbot(), percent: 35 [01:51:50.202] index :: _onStepProgress_vidbot(), percent: 40 [01:51:52.238] index :: _onStepProgress_vidbot(), percent: 45 [01:51:54.255] index :: _onStepProgress_vidbot(), percent: 51 [01:51:55.271] index :: _onStepProgress_vidbot(), percent: 55 [01:51:56.797] index :: _onStepProgress_vidbot(), percent: 61 [01:51:58.313] index :: _onStepProgress_vidbot(), percent: 66 [01:51:59.857] index :: _onStepProgress_vidbot(), percent: 71 [01:52:01.358] index :: _onStepProgress_vidbot(), percent: 75 [01:52:02.866] index :: _onStepProgress_vidbot(), percent: 80 [01:52:03.872] index :: _onStepProgress_vidbot(), percent: 85 [01:52:04.884] index :: _onStepProgress_vidbot(), percent: 91 [01:52:05.888] index :: _onStepProgress_vidbot(), percent: 97 [01:52:06.389] index :: _onStepProgress_vidbot(), percent: 100 [01:52:06.528] Vidbot :: ffmpeg.on( 'end' ), Done! [01:52:06.529] StreamManager :: dispose() [01:52:06.529] CanvasStream[canvas_871933741327] :: dispose() [01:52:06.535] Vidbot :: fflog.on( 'finish' ) [01:52:06.535] fflog.path: /var/www/html/clients/5110/video/67947FFE-83BB-B762-8A9A-F75B47019847.mp4.fflog [01:52:06.535] Vidbot :: _next(), _stepIndex:4 of 4 [01:52:06.535] index :: _onStepCompleted_vidbot(), step: 4 [01:52:06.536] index :: _onComplete_vidbot(), data: { stepTime: 0, appTime: 906.162, output: '/var/www/html/clients/5110/video/67947FFE-83BB-B762-8A9A-F75B47019847.mp4', duration: 74.63 } --------------------------------------------------------------------------------------------------------------- Output File : /var/app/video_pre_processor/jobs/postp//var/www/html/clients/5110/video/67947FFE-83BB-B762-8A9A-F75B47019847.mp4 Media Duration : 00:01:14.629 Generation Time : 00:15:06.162 ---------------------------------------------------------------------------------------------------------------