Changes of Revision 7
ffmpeg-3.changes
Changed
x
1
2
-------------------------------------------------------------------
3
-Tue Dec 12 12:12:12 UTC 2023 - olaf@aepfle.de
4
+Mon Mar 3 03:03:03 UTC 2025 - olaf@aepfle.de
5
6
-- Version update to 3.4.13
7
+- Version update to 3.4.14
8
9
-------------------------------------------------------------------
10
Sun Oct 1 15:31:56 UTC 2023 - Manfred Hollstein <manfred.h@gmx.net>
11
ffmpeg-3.spec
Changed
10
1
2
%define _major_version 3
3
%define _major_expected 4
4
Name: ffmpeg-3
5
-Version: 3.4.13
6
+Version: 3.4.14
7
Release: 0
8
Summary: Library for working with various multimedia formats
9
License: LGPL-2.1-or-later AND GPL-2.0-or-later
10
_service
Changed
10
1
2
<services>
3
<service name="tar_scm" mode="disabled">
4
<param name="filename">ffmpeg-3</param>
5
- <param name="revision">c7210207555effd194b60dee424fd5632bb388f4</param>
6
+ <param name="revision">62e1c442633e8a09a1407a789cd2b50611850788</param>
7
<param name="scm">git</param>
8
<param name="submodules">disable</param>
9
<param name="url">https://git.ffmpeg.org/ffmpeg.git</param>
10
ffmpeg-3-3.4.13.tar.xz/Changelog -> ffmpeg-3-3.4.14.tar.xz/Changelog
Changed
255
1
2
Entries are sorted chronologically from oldest to youngest within each release,
3
releases are sorted from youngest to oldest.
4
5
+version 3.4.14:
6
+ configure: update copyright year
7
+ avfilter/bwdif: account for chroma sub-sampling in min size calculation
8
+ avformat/iff: Check that we have a stream in read_dst_frame()
9
+ avformat/mlvdec: fix size checks
10
+ avcodec/h263dec: Check against previous dimensions instead of coded
11
+ avformat/mxfdec: Check avio_read() success in mxf_decrypt_triplet()
12
+ avcodec/huffyuvdec: Initialize whole output for decode_gray_bitstream()
13
+ avformat/ipmovie: Check signature_buffer read
14
+ avformat/wtvdec: Initialize buf
15
+ avformat/vqf: Propagate errors from add_metadata()
16
+ avformat/vqf: Check avio_read() in add_metadata()
17
+ avutil/avstring: dont mess with NULL pointers in av_match_list()
18
+ avcodec/mpegvideo_enc: Check FLV1 resolution limits
19
+ avcodec/ffv1enc: Fix handling of 32bit unsigned symbols
20
+ avcodec/vc1dec: Clear block_index in vc1_decode_reset()
21
+ avcodec/aacsbr_template: Clear n_q on error
22
+ swscale/output: Fix undefined overflow in yuv2rgba64_full_X_c_template()
23
+ avfilter/af_pan: Fix sscanf() use
24
+ avformat/rmdec: check that buf if completely filled
25
+ avformat/mxfdec: Check that key was read sucessfull
26
+ avformat/rpl: Fix check for negative values
27
+ avformat/mlvdec: Check avio_read()
28
+ avcodec/utils: Fix block align overflow for ADPCM_IMA_WAV
29
+ avformat/matroskadec: Check pre_ns for overflow
30
+ avcodec/webp: Check ref_x/y
31
+ avformat/dxa: check bpc
32
+ swscale/slice: clear allocated memory in alloc_lines()
33
+ avformat/icodec: fix integer overflow with nb_pal
34
+ doc/developer: Document relationship between git accounts and MAINTAINERS
35
+ avformat/ilbc: Check avio_read() for failure
36
+ avformat/nistspheredec: Clear buffer
37
+ INSTALL: explain the circular dependency issue and solution
38
+ avformat/mpegts: Initialize predefined_SLConfigDescriptor_seen
39
+ avcodec/rangecoder: only perform renorm check/loop for callers that need it
40
+ avcodec/ffv1dec: Fix end computation with ec=2
41
+ avcodec/ffv1enc: Prevent generation of files with broken slices
42
+ avformat/matroskadec: Check desc_bytes so bits fit in 64bit
43
+ avcodec/ffv1enc: Correct error message about unsupported version
44
+ avcodec/ffv1enc: Slice combination is unsupported
45
+ avcodec/ffv1enc: 2Pass mode is not possible with golomb coding
46
+ avcodec/ffv1enc: Fix >8bit context size
47
+ avcodec/xan: Add basic input size check
48
+ avcodec/svq3: Check for minimum size input
49
+ avcodec/jfdctint_template: use unsigned z* in row_fdct()
50
+ avformat/mxfdec: More offset_temp checks
51
+ swscale/output: Fix undefined integer overflow in yuv2rgba64_2_c_template()
52
+ swscale/swscale: Use unsigned operation to avoid undefined behavior
53
+ avcodec/vc2enc: basic sanity check on slice_max_bytes
54
+ avcodec/wmavoice: Do not use uninitialized pitch0
55
+ avformat/apetag: Check APETAGEX
56
+ avcodec/avcodec: Warn about data returned from get_buffer*()
57
+ avcodec/aic: Clear slice_data
58
+ avcodec/shorten: clear padding
59
+ avformat/mpeg: Check an avio_read() for failure
60
+ avformat/segafilm: Set keyframe
61
+ avcodec/dxva2: initialize hr in ff_dxva2_common_end_frame()
62
+ avcodec/dxva2: initialize validate
63
+ avcodec/dxva2: Initialize ConfigBitstreamRaw
64
+ avcodec/dxva2: Initialize dxva_size and check it
65
+ avformat/lmlm4: Eliminate some AVERROR(EIO)
66
+ avformat/wtvdec: Check length of read mpeg2_descriptor
67
+ avformat/wtvdec: clear sectors
68
+ avcodec/parser: ensure input padding is zeroed
69
+ avformat/img2dec: Clear padding data after EOF
70
+ avformat/wavdec: Check if there are 16 bytes before testing them
71
+ avcodec/snow: Fix off by 1 error in run_buffer
72
+ avcodec/utils: apply the same alignment to YUV410 as we do to YUV420 for snow
73
+ avcodec/vaapi_encode: Check hwctx
74
+ avcodec/proresdec: Consider negative bits left
75
+ avcodec/hevc/hevcdec: Do not allow slices to depend on failed slices
76
+ avutil/slicethread: Check pthread_*_init() for failure
77
+ avutil/frame: Check log2_crop_align
78
+ avutil/buffer: Check ff_mutex_init() for failure
79
+ avformat/xmv: Check this_packet_size
80
+ avformat/tty: Check avio_size()
81
+ avformat/siff: Basic pkt_size check
82
+ avformat/sauce: Check avio_size() for failure
83
+ avformat/sapdec: Check ffurl_get_file_handle() for error
84
+ avformat/nsvdec: Check asize for PCM
85
+ avformat/mp3dec: Check header_filesize
86
+ avformat/mp3dec; Check for avio_size() failure
87
+ avformat/mov: Use 64bit for str_size
88
+ avformat/mm: Check length
89
+ avformat/hnm: Check *chunk_size
90
+ avformat/asfdec_o: Check size of index object
91
+ swscale/output: Fix integer overflows in yuv2rgba64_X_c_template
92
+ avcodec/utvideoenc: Use unsigned shift to build flags
93
+ avcodec/vc2enc: Fix overflows with storing large values
94
+ avcodec/mpegvideo_enc: Do not duplicate pictures on shifting
95
+ avdevice/dshow: Check device_filter_unique_name before use
96
+ avdevice/dshow_filter: Use wcscpy_s()
97
+ avcodec/flac_parser: Assert that we do not overrun the link_penalty array
98
+ avcodec/pixlet: Simplify pfx computation
99
+ avcodec/motion_est: Fix score squaring overflow
100
+ avcodec/loco: Check loco_get_rice() for failure
101
+ avcodec/loco: check get_ur_golomb_jpegls() for failure
102
+ avcodec/iff: Use signed count
103
+ avcodec/golomb: Assert that k is in the supported range for get_ur/sr_golomb()
104
+ avcodec/golomb: Document return for get_ur_golomb_jpegls() and get_sr_golomb_flac()
105
+ avcodec/xsubdec: Check parse_timecode()
106
+ avutil/imgutils: av_image_check_size2() ensure width and height fit in 32bit
107
+ avcodec/proresenc_kostya: use unsigned alpha for rotation
108
+ avformat/rtmppkt: Simplify and deobfuscate amf_tag_skip() slightly
109
+ avformat/rmdec: use 64bit for audio_framesize checks
110
+ avutil/hwcontext_d3d11va: correct sizeof IDirect3DSurface9
111
+ avutil/hwcontext_d3d11va: correct sizeof AVD3D11FrameDescriptor
112
+ avformat/tls_schannel: Initialize ret
113
+ avformat/subfile: Assert that whence is a known case
114
+ avformat/rtsp: Check that lower transport is handled in one of the if()
115
+ avformat/rtsp: initialize reply1
116
+ avformat/rtsp: use < 0 for error check
117
+ avformat/rtpenc_vc2hq: Check sizes
118
+ avfilter/af_pan: check nb_output_channels before use
119
+ tools/coverity: Phase 1 study of anti-halicogenic for coverity av_rescale()
120
+ avfilter/vf_avgblur: Check plane instead of AVFrame
121
+ avformat/rdt: Check pkt_len
122
+ avformat/mpeg: Check len in mpegps_probe()
123
+ avdevice/dshow: Check ICaptureGraphBuilder2_SetFiltergraph() for failure
124
+ avformat/img2dec: assert no pipe on ts_from_file
125
+ avformat/mov: Check edit list for overflow
126
+ fftools/ffmpeg: Check read() for failure
127
+ swscale/output: Avoid undefined overflow in yuv2rgb_write_full()
128
+ swscale/output: alpha can become negative after scaling, use multiply
129
+ avcodec/targaenc: Allocate space for the palette
130
+ avcodec/r210enc: Use av_rescale for bitrate
131
+ avcodec/jfdctint_template: Fewer integer anomalies
132
+ avcodec/snowenc: MV limits due to mv_penalty table size
133
+ MAINTAINERS: Update the entries for the release maintainer for FFmpeg
134
+ configure: update copyright year
135
+ avfilter/vf_rotate: Check ff_draw_init2() return value
136
+ avformat/img2dec: Move DQT after unrelated if()
137
+ fftools/cmdutils: Add protective () to FLAGS
138
+ avformat/sdp: Check before appending ","
139
+ avcodec/vp8: Check cond init
140
+ avcodec/vp8: Check mutex init
141
+ avcodec/tests/dct: Use 64bit in intermediate for error computation
142
+ avcodec/wavpackenc: Use unsigned for potential 31bit shift
143
+ avcodec/tests/jpeg2000dwt: Use 64bit in comparission
144
+ avcodec/tests/jpeg2000dwt: Use 64bit in err2 computation
145
+ avformat/ape: Use 64bit for final frame size
146
+ swscale/yuv2rgb: Use 64bit for brightness computation
147
+ avutil/tests/opt: Check av_set_options_string() for failure
148
+ avutil/tests/dict: Check av_dict_set() before get for failure
149
+ avdevice/dshow: fix badly indented line
150
+ avcodec/mpegvideo_enc: Fix potential overflow in RD
151
+ avcodec/mpeg4videodec: assert impossible wrap points
152
+ avcodec/vble: Check av_image_get_buffer_size() for failure
153
+ avcodec/jpeg2000dec: remove ST=3 case
154
+ avcodec/fmvc: remove dead assignment
155
+ avcodec/lpc: copy levenson coeffs only when they have been computed
156
+ avutil/tests/base64: Check with too short output array
157
+ libavutil/base64: Try not to write over the array end
158
+ avcodec/mpegvideo_enc: Fix 1 line and one column images
159
+ swscale/output: Fix integer overflow in yuv2rgba64_full_1_c_template()
160
+ swscale/output: Fix integer overflow in yuv2rgba64_1_c_template
161
+ avcodec/hevcdec: Check ref frame
162
+ avfilter/signature_lookup: Dont copy uninitialized stuff around
163
+ avfilter/signature_lookup: Fix 2 differences to the refernce SW
164
+ ffbuild: Avoid using the --preprocessor argument to windres
165
+ vp9: recon: Use emulated edge to prevent buffer overflows
166
+ arm: vp9mc: Load only 12 pixels in the 4 pixel wide horizontal filter
167
+ aarch64: vp9mc: Load only 12 pixels in the 4 pixel wide horizontal filter
168
+ fate/subtitles: Ignore line endings for sub-scc test
169
+ avformat/mxfdec: Check index_edit_rate
170
+ swscale/utils: Fix xInc overflow
171
+ avformat/mxfdec: Make edit_unit_byte_count unsigned
172
+ avformat/movenc: Check that cts fits in 32bit
173
+ avformat/mxfdec: Check first case of offset_temp computation for overflow
174
+ avfilter/vf_signature: Dont crash on no frames
175
+ avformat/westwood_vqa: Fix 2g packets
176
+ avformat/matroskadec: Check timescale
177
+ avformat/sbgdec: Check for negative duration
178
+ avformat/rpl: Use 64bit for total_audio_size and check it
179
+ avformat/timecode: use 64bit for intermediate for rounding in fps_from_frame_rate()
180
+ avcodec/truemotion1: Height not being a multiple of 4 is unsupported
181
+ avformat/cafdec: Check that data chunk end fits within 64bit
182
+ avformat/dxa: Adjust order of operations around block align
183
+ avformat/cafdec: dont seek beyond 64bit
184
+ avformat/id3v2: read_uslt() check for the amount read
185
+ avcodec/proresenc_kostya: Remove bug similarity text
186
+ avcodec/vorbisdec: Check remaining data in vorbis_residue_decode_internal()
187
+ libswscale/utils: Fix bayer to yuvj
188
+ swscale/swscale: Check srcSliceH for bayer
189
+ swscale/utils: Allocate more dithererror
190
+ avcodec/indeo3: Round dimensions up in allocate_frame_buffers()
191
+ avutil/rational: Document what is to be expected from av_d2q() of doubles representing rational numbers
192
+ avfilter/signature_lookup: Do not dereference NULL pointers after malloc failure
193
+ avfilter/signature_lookup: dont leave uncleared pointers in sll_free()
194
+ avcodec/mpegvideo_enc: Use ptrdiff_t for stride
195
+ avcodec/mpegvideo_enc: Dont copy beyond the image
196
+ avfilter/vf_minterpolate: Check pts before division
197
+ avformat/flacdec: Avoid double AVERRORS
198
+ avfilter/vf_vidstabdetect: Avoid double AVERRORS
199
+ avfilter/vf_swaprect: round coordinates down
200
+ avfilter/vf_swaprect: Use height for vertical variables
201
+ avfilter/vf_swaprect: assert that rectangles are within memory
202
+ avfilter/af_alimiter: Check nextpos before use
203
+ avfilter/af_stereowiden: Check length
204
+ avfilter/vf_gradfun: Do not overread last line
205
+ avformat/mov: do not set sign bit for chunk_offsets
206
+ avcodec/jpeglsdec: Check Jpeg-LS LSE
207
+ configure: Enable section_data_rel_ro for FreeBSD and NetBSD aarch64 / arm
208
+ avformat/mov: Ignore duplicate ftyp
209
+ seek: Fix crashes in ff_seek_frame_binary if built with latest Clang 14
210
+ avcodec/4xm: Check for cfrm exhaustion
211
+ avformat/mov: Disallow FTYP after streams
212
+ doc/html: fix styling issue with Texinfo 7.0
213
+ doc/html: support texinfo 7.0
214
+ doc/t2h.pm: fix missing TOC with texinfo 6.8 and above
215
+ doc/t2h.pm: fix missing CSS with texinfo 6.8 and above
216
+ avformat/matroskadec: Fix declaration-after-statement warnings
217
+ avformat/rtsp: Use rtsp_st->stream_index
218
+ avcodec/jpeg2000dec: Check image offset
219
+ avcodec/h2645_parse: Avoid EAGAIN
220
+ avcodec/xvididct: Make c* unsigned to avoid undefined overflows
221
+ avformat/tmv: Check video chunk size
222
+ avformat/xwma: sanity check bits_per_coded_sample
223
+ avformat/matroskadec: Check prebuffered_ns for overflow
224
+ avformat/wavdec: Check left avio_tell for overflow
225
+ avformat/tta: Better totalframes check
226
+ avformat/rpl: Check for number_of_chunks overflow
227
+ avformat/mov: compute absolute dts difference without overflow in mov_find_next_sample()
228
+ avformat/jacosubdec: Check timeres
229
+ avcodec/escape124: Do not return random numbers
230
+ avformat/avs: Check if return code is representable
231
+ avcodec/lcldec: Make PNG filter addressing match the code afterwards
232
+ avformat/westwood_vqa: Check chunk size
233
+ avformat/sbgdec: Check for period overflow
234
+ avcodec/xvididct: Fix integer overflow in idct_row()
235
+ avcodec/celp_math: avoid overflow in shift
236
+ avformat/format: Stop reading data at EOF during probing
237
+ avcodec/huffyuvdec: avoid undefined behavior with get_vlc2() failure
238
+ avcodec/hevcdec: Fix undefined memcpy()
239
+ avcodec/mpeg4videodec: more unsigned in amv computation
240
+ avcodec/tta: fix signed overflow in decorrelate
241
+ avcodec/xvididct: Fix integer overflow in idct_row()
242
+ avformat/avr: Check sample rate
243
+ avcodec/jpeg2000dec: Check for reduction factor and image offset
244
+ avutil/softfloat: Basic documentation for av_sincos_sf()
245
+ avutil/softfloat: fix av_sincos_sf()
246
+ avcodec/utils: fix 2 integer overflows in get_audio_frame_duration()
247
+ avcodec/hevcdec: Avoid null pointer dereferences in MC
248
+ avcodec/takdsp: Fix integer overflows
249
+ avcodec: Ignoring errors is only possible before the input end
250
+
251
+
252
version 3.4.13:
253
avcodec/noise_bsf: Check for wrapped frames
254
avcodec/pngdec: Do not pass AVFrame into global header decode
255
ffmpeg-3-3.4.13.tar.xz/INSTALL.md -> ffmpeg-3-3.4.14.tar.xz/INSTALL.md
Changed
13
1
2
------
3
4
- Non system dependencies (e.g. libx264, libvpx) are disabled by default.
5
+
6
+NOTICE for Package Maintainers
7
+------------------------------
8
+
9
+ - It is recommended to build FFmpeg twice, first with minimal external dependencies so
10
+ that 3rd party packages, which depend on FFmpegs libavutil/libavfilter/libavcodec/libavformat
11
+ can then be built. And last build FFmpeg with full dependancies (which may in turn depend on
12
+ some of these 3rd party packages). This avoids circular dependencies during build.
13
ffmpeg-3-3.4.13.tar.xz/MAINTAINERS -> ffmpeg-3-3.4.14.tar.xz/MAINTAINERS
Changed
17
1
2
Releases
3
========
4
5
+7.0 Michael Niedermayer
6
+6.1 Michael Niedermayer
7
+5.1 Michael Niedermayer
8
+4.4 Michael Niedermayer
9
+3.4 Michael Niedermayer
10
2.8 Michael Niedermayer
11
-2.7 Michael Niedermayer
12
-2.6 Michael Niedermayer
13
-2.5 Michael Niedermayer
14
15
If you want to maintain an older release, please contact us
16
17
ffmpeg-3-3.4.13.tar.xz/RELEASE -> ffmpeg-3-3.4.14.tar.xz/RELEASE
Changed
4
1
2
-3.4.13
3
+3.4.14
4
ffmpeg-3-3.4.13.tar.xz/configure -> ffmpeg-3-3.4.14.tar.xz/configure
Changed
34
1
2
;;
3
netbsd)
4
disable symver
5
+ enable section_data_rel_ro
6
oss_indev_extralibs="-lossaudio"
7
oss_outdev_extralibs="-lossaudio"
8
enabled gcc || check_ldflags -Wl,-zmuldefs
9
10
disable symver
11
;;
12
freebsd)
13
+ enable section_data_rel_ro
14
;;
15
bsd/os)
16
add_extralibs -lpoll -lgnugetopt
17
18
LD_PATH=$LD_PATH
19
DLLTOOL=$dlltool
20
WINDRES=$windres
21
-DEPWINDRES=$dep_cc
22
DOXYGEN=$doxygen
23
LDFLAGS=$LDFLAGS
24
LDEXEFLAGS=$LDEXEFLAGS
25
26
#define FFMPEG_CONFIG_H
27
#define FFMPEG_CONFIGURATION "$(c_escape $FFMPEG_CONFIGURATION)"
28
#define FFMPEG_LICENSE "$(c_escape $license)"
29
-#define CONFIG_THIS_YEAR 2023
30
+#define CONFIG_THIS_YEAR 2025
31
#define FFMPEG_DATADIR "$(eval c_escape $datadir)"
32
#define AVCONV_DATADIR "$(eval c_escape $datadir)"
33
#define CC_IDENT "$(c_escape ${cc_ident:-Unknown compiler})"
34
ffmpeg-3-3.4.13.tar.xz/doc/Doxyfile -> ffmpeg-3-3.4.14.tar.xz/doc/Doxyfile
Changed
10
1
2
# could be handy for archiving the generated documentation or if some version
3
# control system is used.
4
5
-PROJECT_NUMBER = 3.4.13
6
+PROJECT_NUMBER = 3.4.14
7
8
# Using the PROJECT_BRIEF tag one can provide an optional one line description
9
# for a project that appears at the top of each page and should give viewer a
10
ffmpeg-3-3.4.13.tar.xz/doc/bootstrap.min.css -> ffmpeg-3-3.4.14.tar.xz/doc/bootstrap.min.css
Changed
7
1
2
* Bootstrap v3.2.0 (http://getbootstrap.com)
3
* Copyright 2011-2014 Twitter, Inc.
4
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5
- *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not(controls){display:none;height:0}hidden,template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbrtitle{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html inputtype=button,inputtype=reset,inputtype=submit{-webkit-appearance:button;cursor:pointer}buttondisabled,html inputdisabled{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}inputtype=checkbox,inputtype=radio{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}inputtype=number::-webkit-inner-spin-button,inputtype=number::-webkit-outer-spin-button{height:auto}inputtype=search{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}inputtype=search::-webkit-search-cancel-button,inputtype=search::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}ahref:after{content:" (" attr(href) ")"}abbrtitle:after{content:" (" attr(title) ")"}ahref^="javascript:":after,ahref^="#":after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbrtitle,abbrdata-original-title{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table colclass*=col-{position:static;display:table-column;float:none}table tdclass*=col-,table thclass*=col-{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}inputtype=search{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}inputtype=radio,inputtype=checkbox{margin:4px 0 0;margin-top:1px \9;line-height:normal}inputtype=file{display:block}inputtype=range{display:block;width:100%}selectmultiple,selectsize{height:auto}inputtype=file:focus,inputtype=radio:focus,inputtype=checkbox:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-controldisabled,.form-controlreadonly,fieldsetdisabled .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}inputtype=search{-webkit-appearance:none}inputtype=date,inputtype=time,inputtype=datetime-local,inputtype=month{line-height:34px;line-height:1.42857143 \0}inputtype=date.input-sm,inputtype=time.input-sm,inputtype=datetime-local.input-sm,inputtype=month.input-sm{line-height:30px}inputtype=date.input-lg,inputtype=time.input-lg,inputtype=datetime-local.input-lg,inputtype=month.input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio inputtype=radio,.radio-inline inputtype=radio,.checkbox inputtype=checkbox,.checkbox-inline inputtype=checkbox{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}inputtype=radiodisabled,inputtype=checkboxdisabled,inputtype=radio.disabled,inputtype=checkbox.disabled,fieldsetdisabled inputtype=radio,fieldsetdisabled inputtype=checkbox{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldsetdisabled .radio-inline,fieldsetdisabled .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldsetdisabled .radio label,fieldsetdisabled .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,selectmultiple.input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,selectmultiple.input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio inputtype=radio,.form-inline .checkbox inputtype=checkbox{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btndisabled,fieldsetdisabled .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-defaultdisabled,fieldsetdisabled .btn-default,.btn-default.disabled:hover,.btn-defaultdisabled:hover,fieldsetdisabled .btn-default:hover,.btn-default.disabled:focus,.btn-defaultdisabled:focus,fieldsetdisabled .btn-default:focus,.btn-default.disabled:active,.btn-defaultdisabled:active,fieldsetdisabled .btn-default:active,.btn-default.disabled.active,.btn-defaultdisabled.active,fieldsetdisabled .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primarydisabled,fieldsetdisabled .btn-primary,.btn-primary.disabled:hover,.btn-primarydisabled:hover,fieldsetdisabled .btn-primary:hover,.btn-primary.disabled:focus,.btn-primarydisabled:focus,fieldsetdisabled .btn-primary:focus,.btn-primary.disabled:active,.btn-primarydisabled:active,fieldsetdisabled .btn-primary:active,.btn-primary.disabled.active,.btn-primarydisabled.active,fieldsetdisabled .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-successdisabled,fieldsetdisabled .btn-success,.btn-success.disabled:hover,.btn-successdisabled:hover,fieldsetdisabled .btn-success:hover,.btn-success.disabled:focus,.btn-successdisabled:focus,fieldsetdisabled .btn-success:focus,.btn-success.disabled:active,.btn-successdisabled:active,fieldsetdisabled .btn-success:active,.btn-success.disabled.active,.btn-successdisabled.active,fieldsetdisabled .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-infodisabled,fieldsetdisabled .btn-info,.btn-info.disabled:hover,.btn-infodisabled:hover,fieldsetdisabled .btn-info:hover,.btn-info.disabled:focus,.btn-infodisabled:focus,fieldsetdisabled .btn-info:focus,.btn-info.disabled:active,.btn-infodisabled:active,fieldsetdisabled .btn-info:active,.btn-info.disabled.active,.btn-infodisabled.active,fieldsetdisabled .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warningdisabled,fieldsetdisabled .btn-warning,.btn-warning.disabled:hover,.btn-warningdisabled:hover,fieldsetdisabled .btn-warning:hover,.btn-warning.disabled:focus,.btn-warningdisabled:focus,fieldsetdisabled .btn-warning:focus,.btn-warning.disabled:active,.btn-warningdisabled:active,fieldsetdisabled .btn-warning:active,.btn-warning.disabled.active,.btn-warningdisabled.active,fieldsetdisabled .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-dangerdisabled,fieldsetdisabled .btn-danger,.btn-danger.disabled:hover,.btn-dangerdisabled:hover,fieldsetdisabled .btn-danger:hover,.btn-danger.disabled:focus,.btn-dangerdisabled:focus,fieldsetdisabled .btn-danger:focus,.btn-danger.disabled:active,.btn-dangerdisabled:active,fieldsetdisabled .btn-danger:active,.btn-danger.disabled.active,.btn-dangerdisabled.active,fieldsetdisabled .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-linkdisabled,fieldsetdisabled .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-linkdisabled:hover,fieldsetdisabled .btn-link:hover,.btn-linkdisabled:focus,fieldsetdisabled .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}inputtype=submit.btn-block,inputtype=reset.btn-block,inputtype=button.btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}data-toggle=buttons>.btn>inputtype=radio,data-toggle=buttons>.btn>inputtype=checkbox{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-groupclass*=col-{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,selectmultiple.input-group-lg>.form-control,selectmultiple.input-group-lg>.input-group-addon,selectmultiple.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,selectmultiple.input-group-sm>.form-control,selectmultiple.input-group-sm>.input-group-addon,selectmultiple.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon inputtype=radio,.input-group-addon inputtype=checkbox{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio inputtype=radio,.navbar-form .checkbox inputtype=checkbox{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-linkdisabled:hover,fieldsetdisabled .navbar-default .btn-link:hover,.navbar-default .btn-linkdisabled:focus,fieldsetdisabled .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-linkdisabled:hover,fieldsetdisabled .navbar-inverse .btn-link:hover,.navbar-inverse .btn-linkdisabled:focus,fieldsetdisabled .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-defaulthref:hover,.label-defaulthref:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primaryhref:hover,.label-primaryhref:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-successhref:hover,.label-successhref:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-infohref:hover,.label-infohref:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warninghref:hover,.label-warninghref:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-dangerhref:hover,.label-dangerhref:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bararia-valuenow="1",.progress-bararia-valuenow="2"{min-width:30px}.progress-bararia-valuenow="0"{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
6
+ *//*! normalize.css v3.0.1 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not(controls){display:none;height:0}hidden,template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbrtitle{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html inputtype=button,inputtype=reset,inputtype=submit{-webkit-appearance:button;cursor:pointer}buttondisabled,html inputdisabled{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}inputtype=checkbox,inputtype=radio{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}inputtype=number::-webkit-inner-spin-button,inputtype=number::-webkit-outer-spin-button{height:auto}inputtype=search{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}inputtype=search::-webkit-search-cancel-button,inputtype=search::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}ahref:after{content:" (" attr(href) ")"}abbrtitle:after{content:" (" attr(title) ")"}ahref^="javascript:":after,ahref^="#":after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered th,.table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:hover,a:focus{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;width:100% \9;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;width:100% \9;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}cite{font-style:normal}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbrtitle,abbrdata-original-title{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}blockquote:before,blockquote:after{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table colclass*=col-{position:static;display:table-column;float:none}table tdclass*=col-,table thclass*=col-{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}inputtype=search{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}inputtype=radio,inputtype=checkbox{margin:4px 0 0;margin-top:1px \9;line-height:normal}inputtype=file{display:block}inputtype=range{display:block;width:100%}selectmultiple,selectsize{height:auto}inputtype=file:focus,inputtype=radio:focus,inputtype=checkbox:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#777;opacity:1}.form-control:-ms-input-placeholder{color:#777}.form-control::-webkit-input-placeholder{color:#777}.form-controldisabled,.form-controlreadonly,fieldsetdisabled .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}inputtype=search{-webkit-appearance:none}inputtype=date,inputtype=time,inputtype=datetime-local,inputtype=month{line-height:34px;line-height:1.42857143 \0}inputtype=date.input-sm,inputtype=time.input-sm,inputtype=datetime-local.input-sm,inputtype=month.input-sm{line-height:30px}inputtype=date.input-lg,inputtype=time.input-lg,inputtype=datetime-local.input-lg,inputtype=month.input-lg{line-height:46px}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;min-height:20px;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio inputtype=radio,.radio-inline inputtype=radio,.checkbox inputtype=checkbox,.checkbox-inline inputtype=checkbox{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}inputtype=radiodisabled,inputtype=checkboxdisabled,inputtype=radio.disabled,inputtype=checkbox.disabled,fieldsetdisabled inputtype=radio,fieldsetdisabled inputtype=checkbox{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldsetdisabled .radio-inline,fieldsetdisabled .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldsetdisabled .radio label,fieldsetdisabled .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-horizontal .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,selectmultiple.input-sm{height:auto}.input-lg,.form-horizontal .form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,selectmultiple.input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:25px;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center}.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio inputtype=radio,.form-inline .checkbox inputtype=checkbox{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btndisabled,fieldsetdisabled .btn{pointer-events:none;cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-defaultdisabled,fieldsetdisabled .btn-default,.btn-default.disabled:hover,.btn-defaultdisabled:hover,fieldsetdisabled .btn-default:hover,.btn-default.disabled:focus,.btn-defaultdisabled:focus,fieldsetdisabled .btn-default:focus,.btn-default.disabled:active,.btn-defaultdisabled:active,fieldsetdisabled .btn-default:active,.btn-default.disabled.active,.btn-defaultdisabled.active,fieldsetdisabled .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#3071a9;border-color:#285e8e}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primarydisabled,fieldsetdisabled .btn-primary,.btn-primary.disabled:hover,.btn-primarydisabled:hover,fieldsetdisabled .btn-primary:hover,.btn-primary.disabled:focus,.btn-primarydisabled:focus,fieldsetdisabled .btn-primary:focus,.btn-primary.disabled:active,.btn-primarydisabled:active,fieldsetdisabled .btn-primary:active,.btn-primary.disabled.active,.btn-primarydisabled.active,fieldsetdisabled .btn-primary.active{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-successdisabled,fieldsetdisabled .btn-success,.btn-success.disabled:hover,.btn-successdisabled:hover,fieldsetdisabled .btn-success:hover,.btn-success.disabled:focus,.btn-successdisabled:focus,fieldsetdisabled .btn-success:focus,.btn-success.disabled:active,.btn-successdisabled:active,fieldsetdisabled .btn-success:active,.btn-success.disabled.active,.btn-successdisabled.active,fieldsetdisabled .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-infodisabled,fieldsetdisabled .btn-info,.btn-info.disabled:hover,.btn-infodisabled:hover,fieldsetdisabled .btn-info:hover,.btn-info.disabled:focus,.btn-infodisabled:focus,fieldsetdisabled .btn-info:focus,.btn-info.disabled:active,.btn-infodisabled:active,fieldsetdisabled .btn-info:active,.btn-info.disabled.active,.btn-infodisabled.active,fieldsetdisabled .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warningdisabled,fieldsetdisabled .btn-warning,.btn-warning.disabled:hover,.btn-warningdisabled:hover,fieldsetdisabled .btn-warning:hover,.btn-warning.disabled:focus,.btn-warningdisabled:focus,fieldsetdisabled .btn-warning:focus,.btn-warning.disabled:active,.btn-warningdisabled:active,fieldsetdisabled .btn-warning:active,.btn-warning.disabled.active,.btn-warningdisabled.active,fieldsetdisabled .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-dangerdisabled,fieldsetdisabled .btn-danger,.btn-danger.disabled:hover,.btn-dangerdisabled:hover,fieldsetdisabled .btn-danger:hover,.btn-danger.disabled:focus,.btn-dangerdisabled:focus,fieldsetdisabled .btn-danger:focus,.btn-danger.disabled:active,.btn-dangerdisabled:active,fieldsetdisabled .btn-danger:active,.btn-danger.disabled.active,.btn-dangerdisabled.active,fieldsetdisabled .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-linkdisabled,fieldsetdisabled .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-linkdisabled:hover,fieldsetdisabled .btn-link:hover,.btn-linkdisabled:focus,fieldsetdisabled .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}inputtype=submit.btn-block,inputtype=reset.btn-block,inputtype=button.btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#428bca;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group>.btn:focus,.btn-group-vertical>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}data-toggle=buttons>.btn>inputtype=radio,data-toggle=buttons>.btn>inputtype=checkbox{position:absolute;z-index:-1;filter:alpha(opacity=0);opacity:0}.input-group{position:relative;display:table;border-collapse:separate}.input-groupclass*=col-{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,selectmultiple.input-group-lg>.form-control,selectmultiple.input-group-lg>.input-group-addon,selectmultiple.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,selectmultiple.input-group-sm>.form-control,selectmultiple.input-group-sm>.input-group-addon,selectmultiple.input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon inputtype=radio,.input-group-addon inputtype=checkbox{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio inputtype=radio,.navbar-form .checkbox inputtype=checkbox{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-linkdisabled:hover,fieldsetdisabled .navbar-default .btn-link:hover,.navbar-default .btn-linkdisabled:focus,fieldsetdisabled .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#777}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#777}.navbar-inverse .navbar-nav>li>a{color:#777}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#777}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#777}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-linkdisabled:hover,fieldsetdisabled .navbar-inverse .btn-link:hover,.navbar-inverse .btn-linkdisabled:focus,fieldsetdisabled .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#428bca;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#428bca;border-color:#428bca}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-defaulthref:hover,.label-defaulthref:focus{background-color:#5e5e5e}.label-primary{background-color:#428bca}.label-primaryhref:hover,.label-primaryhref:focus{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-successhref:hover,.label-successhref:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-infohref:hover,.label-infohref:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warninghref:hover,.label-warninghref:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-dangerhref:hover,.label-dangerhref:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}a.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bararia-valuenow="1",.progress-bararia-valuenow="2"{min-width:30px}.progress-bararia-valuenow="0"{min-width:30px;color:#777;background-color:transparent;background-image:none;-webkit-box-shadow:none;box-shadow:none}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#428bca}.panel-primary>.panel-heading .badge{color:#428bca;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate3d(0,-25%,0);-o-transform:translate3d(0,-25%,0);transform:translate3d(0,-25%,0)}.modal.in .modal-dialog{-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{min-height:16.43px;padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-size:12px;line-height:1.4;visibility:visible;filter:alpha(opacity=0);opacity:0}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;margin-top:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-15px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed;-webkit-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}
7
ffmpeg-3-3.4.13.tar.xz/doc/developer.texi -> ffmpeg-3-3.4.14.tar.xz/doc/developer.texi
Changed
27
1
2
@code{--target-exec='valgrind <your_custom_valgrind_options>} option in
3
your configure line instead.
4
5
+@anchor{Maintenance}
6
+@chapter Maintenance process
7
+
8
+@anchor{MAINTAINERS}
9
+@section MAINTAINERS
10
+
11
+The developers maintaining each part of the codebase are listed in @file{MAINTAINERS}.
12
+Being listed in @file{MAINTAINERS}, gives one the right to have git write access to
13
+the specific repository.
14
+
15
+@anchor{Becoming a maintainer}
16
+@section Becoming a maintainer
17
+
18
+People add themselves to @file{MAINTAINERS} by sending a patch like any other code
19
+change. These get reviewed by the community like any other patch. It is expected
20
+that, if someone has an objection to a new maintainer, she is willing to object
21
+in public with her full name and is willing to take over maintainership for the area.
22
+
23
+
24
@anchor{Release process}
25
@section Release process
26
27
ffmpeg-3-3.4.13.tar.xz/doc/t2h.pm -> ffmpeg-3-3.4.14.tar.xz/doc/t2h.pm
Changed
213
1
2
# License along with FFmpeg; if not, write to the Free Software
3
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
4
5
+# Texinfo 7.0 changed the syntax of various functions.
6
+# Provide a shim for older versions.
7
+sub ff_set_from_init_file($$) {
8
+ my $key = shift;
9
+ my $value = shift;
10
+ if (exists &{'texinfo_set_from_init_file'}) {
11
+ texinfo_set_from_init_file($key, $value);
12
+ } else {
13
+ set_from_init_file($key, $value);
14
+ }
15
+}
16
+
17
+sub ff_get_conf($) {
18
+ my $key = shift;
19
+ if (exists &{'texinfo_get_conf'}) {
20
+ texinfo_get_conf($key);
21
+ } else {
22
+ get_conf($key);
23
+ }
24
+}
25
+
26
+sub get_formatting_function($$) {
27
+ my $obj = shift;
28
+ my $func = shift;
29
+
30
+ my $sub = $obj->can('formatting_function');
31
+ if ($sub) {
32
+ return $obj->formatting_function($func);
33
+ } else {
34
+ return $obj->{$func};
35
+ }
36
+}
37
+
38
+# determine texinfo version
39
+my $program_version_num = version->declare(ff_get_conf('PACKAGE_VERSION'))->numify;
40
+my $program_version_6_8 = $program_version_num >= 6.008000;
41
+
42
# no navigation elements
43
-set_from_init_file('HEADERS', 0);
44
+ff_set_from_init_file('HEADERS', 0);
45
46
sub ffmpeg_heading_command($$$$$)
47
{
48
49
$element = $command->{'parent'};
50
}
51
if ($element) {
52
- $result .= &{$self->{'format_element_header'}}($self, $cmdname,
53
+ $result .= &{get_formatting_function($self, 'format_element_header')}($self, $cmdname,
54
$command, $element);
55
}
56
57
58
$cmdname
59
= $Texinfo::Common::level_to_structuring_command{$cmdname}->$heading_level;
60
}
61
- $result .= &{$self->{'format_heading_text'}}(
62
+ # format_heading_text expects an array of headings for texinfo >= 7.0
63
+ if ($program_version_num >= 7.000000) {
64
+ $heading = $heading;
65
+ }
66
+ $result .= &{get_formatting_function($self,'format_heading_text')}(
67
$self, $cmdname, $heading,
68
$heading_level +
69
$self->get_conf('CHAPTER_HEADER_LEVEL') - 1, $command);
70
71
}
72
73
# print the TOC where @contents is used
74
-set_from_init_file('INLINE_CONTENTS', 1);
75
+if ($program_version_6_8) {
76
+ ff_set_from_init_file('CONTENTS_OUTPUT_LOCATION', 'inline');
77
+} else {
78
+ ff_set_from_init_file('INLINE_CONTENTS', 1);
79
+}
80
81
# make chapters <h2>
82
-set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
83
+ff_set_from_init_file('CHAPTER_HEADER_LEVEL', 2);
84
85
# Do not add <hr>
86
-set_from_init_file('DEFAULT_RULE', '');
87
-set_from_init_file('BIG_RULE', '');
88
+ff_set_from_init_file('DEFAULT_RULE', '');
89
+ff_set_from_init_file('BIG_RULE', '');
90
91
# Customized file beginning
92
sub ffmpeg_begin_file($$$)
93
94
my ($title, $description, $encoding, $date, $css_lines,
95
$doctype, $bodytext, $copying_comment, $after_body_open,
96
$extra_head, $program_and_version, $program_homepage,
97
- $program, $generator) = $self->_file_header_informations($command);
98
+ $program, $generator);
99
+ if ($program_version_num >= 7.000000) {
100
+ ($title, $description, $encoding, $date, $css_lines,
101
+ $doctype, $bodytext, $copying_comment, $after_body_open,
102
+ $extra_head, $program_and_version, $program_homepage,
103
+ $program, $generator) = $self->_file_header_information($command);
104
+ } else {
105
+ ($title, $description, $encoding, $date, $css_lines,
106
+ $doctype, $bodytext, $copying_comment, $after_body_open,
107
+ $extra_head, $program_and_version, $program_homepage,
108
+ $program, $generator) = $self->_file_header_informations($command);
109
+ }
110
111
my $links = $self->_get_links ($filename, $element);
112
113
114
115
return $head1 . $head_title . $head2 . $head_title . $head3;
116
}
117
-texinfo_register_formatting_function('begin_file', \&ffmpeg_begin_file);
118
+if ($program_version_6_8) {
119
+ texinfo_register_formatting_function('format_begin_file', \&ffmpeg_begin_file);
120
+} else {
121
+ texinfo_register_formatting_function('begin_file', \&ffmpeg_begin_file);
122
+}
123
124
sub ffmpeg_program_string($)
125
{
126
127
$self->gdt('This document was generated automatically.'));
128
}
129
}
130
-texinfo_register_formatting_function('program_string', \&ffmpeg_program_string);
131
+if ($program_version_6_8) {
132
+ texinfo_register_formatting_function('format_program_string', \&ffmpeg_program_string);
133
+} else {
134
+ texinfo_register_formatting_function('program_string', \&ffmpeg_program_string);
135
+}
136
137
# Customized file ending
138
sub ffmpeg_end_file($)
139
{
140
my $self = shift;
141
- my $program_string = &{$self->{'format_program_string'}}($self);
142
+ my $program_string = &{get_formatting_function($self,'format_program_string')}($self);
143
my $program_text = <<EOT;
144
<p style="font-size: small;">
145
$program_string
146
147
EOT
148
return $program_text . $footer;
149
}
150
-texinfo_register_formatting_function('end_file', \&ffmpeg_end_file);
151
+if ($program_version_6_8) {
152
+ texinfo_register_formatting_function('format_end_file', \&ffmpeg_end_file);
153
+} else {
154
+ texinfo_register_formatting_function('end_file', \&ffmpeg_end_file);
155
+}
156
157
# Dummy title command
158
# Ignore title. Title is handled through ffmpeg_begin_file().
159
-set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
160
+ff_set_from_init_file('USE_TITLEPAGE_FOR_TITLE', 1);
161
sub ffmpeg_title($$$$)
162
{
163
return '';
164
165
my $args = shift;
166
my $content = shift;
167
168
- my ($caption, $prepended) = Texinfo::Common::float_name_caption($self,
169
- $command);
170
+ my ($caption, $prepended);
171
+ if ($program_version_num >= 7.000000) {
172
+ ($caption, $prepended) = Texinfo::Convert::Converter::float_name_caption($self,
173
+ $command);
174
+ } else {
175
+ ($caption, $prepended) = Texinfo::Common::float_name_caption($self,
176
+ $command);
177
+ }
178
my $caption_text = '';
179
my $prepended_text;
180
my $prepended_save = '';
181
182
$caption->{'args'}->0, 'float caption');
183
}
184
if ($prepended_text.$caption_text ne '') {
185
- $prepended_text = $self->_attribute_class('div','float-caption'). '>'
186
- . $prepended_text;
187
+ if ($program_version_num >= 7.000000) {
188
+ $prepended_text = $self->html_attribute_class('div','float-caption'). '>'
189
+ . $prepended_text;
190
+ } else {
191
+ $prepended_text = $self->_attribute_class('div','float-caption'). '>'
192
+ . $prepended_text;
193
+ }
194
$caption_text .= '</div>';
195
}
196
my $html_class = '';
197
198
$prepended_text = '';
199
$caption_text = '';
200
}
201
- return $self->_attribute_class('div', $html_class). '>' . "\n" .
202
- $prepended_text . $caption_text . $content . '</div>';
203
+ if ($program_version_num >= 7.000000) {
204
+ return $self->html_attribute_class('div', $html_class). '>' . "\n" .
205
+ $prepended_text . $caption_text . $content . '</div>';
206
+ } else {
207
+ return $self->_attribute_class('div', $html_class). '>' . "\n" .
208
+ $prepended_text . $caption_text . $content . '</div>';
209
+ }
210
}
211
212
texinfo_register_command_formatting('float',
213
ffmpeg-3-3.4.13.tar.xz/ffbuild/common.mak -> ffmpeg-3-3.4.14.tar.xz/ffbuild/common.mak
Changed
10
1
2
-$(if $(ASMSTRIPFLAGS), $(STRIP) $(ASMSTRIPFLAGS) $@)
3
4
%.o: %.rc
5
- $(WINDRES) $(IFLAGS) --preprocessor "$(DEPWINDRES) -E -xc-header -DRC_INVOKED $(CC_DEPFLAGS)" -o $@ $<
6
+ $(WINDRES) $(IFLAGS) $(foreach ARG,$(CC_DEPFLAGS),--preprocessor-arg "$(ARG)") -o $@ $<
7
8
%.i: %.c
9
$(CC) $(CCFLAGS) $(CC_E) $<
10
ffmpeg-3-3.4.13.tar.xz/fftools/cmdutils.c -> ffmpeg-3-3.4.14.tar.xz/fftools/cmdutils.c
Changed
10
1
2
return o;
3
}
4
5
-#define FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg0=='-' || arg0=='+')) ? AV_DICT_APPEND : 0
6
+#define FLAGS ((o->type == AV_OPT_TYPE_FLAGS && (arg0=='-' || arg0=='+')) ? AV_DICT_APPEND : 0)
7
int opt_default(void *optctx, const char *opt, const char *arg)
8
{
9
const AVOption *o;
10
ffmpeg-3-3.4.13.tar.xz/fftools/ffmpeg.c -> ffmpeg-3-3.4.14.tar.xz/fftools/ffmpeg.c
Changed
13
1
2
}
3
//Read it
4
if(nchars != 0) {
5
- read(0, &ch, 1);
6
- return ch;
7
+ if (read(0, &ch, 1) == 1)
8
+ return ch;
9
+ return 0;
10
}else{
11
return -1;
12
}
13
ffmpeg-3-3.4.13.tar.xz/libavcodec/4xm.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/4xm.c
Changed
10
1
2
}
3
4
if (i >= CFRAME_BUFFER_COUNT) {
5
+ if (free_index < 0)
6
+ return AVERROR_INVALIDDATA;
7
i = free_index;
8
f->cfrmi.id = id;
9
}
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/aacsbr_template.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/aacsbr_template.c
Changed
9
1
2
3
if (sbr->n_q > 5) {
4
av_log(ac->avctx, AV_LOG_ERROR, "Too many noise floor scale factors: %d\n", sbr->n_q);
5
+ sbr->n_q = 1;
6
return -1;
7
}
8
9
ffmpeg-3-3.4.13.tar.xz/libavcodec/aarch64/vp9mc_neon.S -> ffmpeg-3-3.4.14.tar.xz/libavcodec/aarch64/vp9mc_neon.S
Changed
27
1
2
// reduced dst stride
3
.if \size >= 16
4
sub x1, x1, x5
5
+.elseif \size == 4
6
+ add x12, x2, #8
7
+ add x13, x7, #8
8
.endif
9
// size >= 16 loads two qwords and increments x2,
10
// for size 4/8 it's enough with one qword and no
11
12
.if \size >= 16
13
ld1 {v4.8b, v5.8b, v6.8b}, x2, #24
14
ld1 {v16.8b, v17.8b, v18.8b}, x7, #24
15
-.else
16
+.elseif \size == 8
17
ld1 {v4.8b, v5.8b}, x2
18
ld1 {v16.8b, v17.8b}, x7
19
+.else // \size == 4
20
+ ld1 {v4.8b}, x2
21
+ ld1 {v16.8b}, x7
22
+ ld1 {v5.s}0, x12, x3
23
+ ld1 {v17.s}0, x13, x3
24
.endif
25
uxtl v4.8h, v4.8b
26
uxtl v5.8h, v5.8b
27
ffmpeg-3-3.4.13.tar.xz/libavcodec/aic.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/aic.c
Changed
11
1
2
}
3
}
4
5
- ctx->slice_data = av_malloc_array(ctx->slice_width, AIC_BAND_COEFFS
6
- * sizeof(*ctx->slice_data));
7
+ ctx->slice_data = av_calloc(ctx->slice_width, AIC_BAND_COEFFS * sizeof(*ctx->slice_data));
8
if (!ctx->slice_data) {
9
av_log(avctx, AV_LOG_ERROR, "Error allocating slice buffer\n");
10
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/arm/vp9mc_neon.S -> ffmpeg-3-3.4.14.tar.xz/libavcodec/arm/vp9mc_neon.S
Changed
33
1
2
sub r1, r1, r5
3
.endif
4
@ size >= 16 loads two qwords and increments r2,
5
- @ for size 4/8 it's enough with one qword and no
6
- @ postincrement
7
+ @ size 4 loads 1 d word, increments r2 and loads 1 32-bit lane
8
+ @ for size 8 it's enough with one qword and no postincrement
9
.if \size >= 16
10
sub r3, r3, r5
11
sub r3, r3, #8
12
+.elseif \size == 4
13
+ sub r3, r3, #8
14
.endif
15
@ Load the filter vector
16
vld1.16 {q0}, r12,:128
17
18
.if \size >= 16
19
vld1.8 {d18, d19, d20}, r2!
20
vld1.8 {d24, d25, d26}, r7!
21
-.else
22
+.elseif \size == 8
23
vld1.8 {q9}, r2
24
vld1.8 {q12}, r7
25
+.else @ size == 4
26
+ vld1.8 {d18}, r2!
27
+ vld1.8 {d24}, r7!
28
+ vld1.32 {d190}, r2
29
+ vld1.32 {d250}, r7
30
.endif
31
vmovl.u8 q8, d18
32
vmovl.u8 q9, d19
33
ffmpeg-3-3.4.13.tar.xz/libavcodec/avcodec.h -> ffmpeg-3-3.4.14.tar.xz/libavcodec/avcodec.h
Changed
12
1
2
* this callback and filled with the extra buffers if there are more
3
* buffers than buf can hold. extended_buf will be freed in
4
* av_frame_unref().
5
+ * Decoders will generally initialize the whole buffer before it is output
6
+ * but it can in rare error conditions happen that uninitialized data is passed
7
+ * through. \important The buffers returned by get_buffer* should thus not contain sensitive
8
+ * data.
9
*
10
* If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
11
* avcodec_default_get_buffer2() instead of providing buffers allocated by
12
ffmpeg-3-3.4.13.tar.xz/libavcodec/celp_math.h -> ffmpeg-3-3.4.14.tar.xz/libavcodec/celp_math.h
Changed
10
1
2
*
3
* @return value << offset, if offset>=0; value >> -offset - otherwise
4
*/
5
-static inline int bidir_sal(int value, int offset)
6
+static inline unsigned bidir_sal(unsigned value, int offset)
7
{
8
if(offset < 0) return value >> -offset;
9
else return value << offset;
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/dxva2.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/dxva2.c
Changed
46
1
2
3
for (i = 0; i < cfg_count; i++) {
4
unsigned score;
5
- UINT ConfigBitstreamRaw;
6
+ UINT ConfigBitstreamRaw = 0;
7
GUID guidConfigBitstreamEncryption;
8
9
#if CONFIG_D3D11VA
10
11
*decoder_guid = ff_GUID_NULL;
12
for (i = 0; dxva_modesi.guid; i++) {
13
const dxva_mode *mode = &dxva_modesi;
14
- int validate;
15
+ int validate = 0;
16
if (!dxva_check_codec_compatibility(avctx, mode))
17
continue;
18
19
20
unsigned type, const void *data, unsigned size,
21
unsigned mb_count)
22
{
23
- void *dxva_data;
24
+ void *dxva_data = NULL;
25
unsigned dxva_size;
26
int result;
27
HRESULT hr = 0;
28
29
type, (unsigned)hr);
30
return -1;
31
}
32
- if (size <= dxva_size) {
33
+ if (dxva_data && size <= dxva_size) {
34
memcpy(dxva_data, data, size);
35
36
#if CONFIG_D3D11VA
37
38
#endif
39
DECODER_BUFFER_DESC *buffer = NULL, *buffer_slice = NULL;
40
int result, runs = 0;
41
- HRESULT hr;
42
+ HRESULT hr = -1;
43
unsigned type;
44
FFDXVASharedContext *sctx = DXVA_SHARED_CONTEXT(avctx);
45
46
ffmpeg-3-3.4.13.tar.xz/libavcodec/escape124.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/escape124.c
Changed
19
1
2
if ((ret = av_frame_ref(frame, s->frame)) < 0)
3
return ret;
4
5
- return frame_size;
6
+ return 0;
7
}
8
9
for (i = 0; i < 3; i++) {
10
11
12
*got_frame = 1;
13
14
- return frame_size;
15
+ return 0;
16
}
17
18
19
ffmpeg-3-3.4.13.tar.xz/libavcodec/ffv1.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/ffv1.c
Changed
15
1
2
return 0;
3
}
4
5
+int ff_need_new_slices(int width, int num_h_slices, int chroma_shift) {
6
+ int mpw = 1<<chroma_shift;
7
+ int i = width * (int64_t)(num_h_slices - 1) / num_h_slices;
8
+
9
+ return width % mpw && (width - i) % mpw == 0;
10
+}
11
+
12
av_cold int ff_ffv1_init_slice_contexts(FFV1Context *f)
13
{
14
int i;
15
ffmpeg-3-3.4.13.tar.xz/libavcodec/ffv1.h -> ffmpeg-3-3.4.14.tar.xz/libavcodec/ffv1.h
Changed
9
1
2
int ff_ffv1_allocate_initial_states(FFV1Context *f);
3
void ff_ffv1_clear_slice_state(FFV1Context *f, FFV1Context *fs);
4
int ff_ffv1_close(AVCodecContext *avctx);
5
+int ff_need_new_slices(int width, int num_h_slices, int chroma_shift);
6
7
static av_always_inline int fold(int diff, int bits)
8
{
9
ffmpeg-3-3.4.13.tar.xz/libavcodec/ffv1dec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/ffv1dec.c
Changed
10
1
2
if (fs->ac != AC_GOLOMB_RICE && f->version > 2) {
3
int v;
4
get_rac(&fs->c, (uint8_t) { 129 });
5
- v = fs->c.bytestream_end - fs->c.bytestream - 2 - 5*f->ec;
6
+ v = fs->c.bytestream_end - fs->c.bytestream - 2 - 5*!!f->ec;
7
if (v) {
8
av_log(f->avctx, AV_LOG_ERROR, "bytestream end mismatching by %d\n", v);
9
fs->slice_damaged = 1;
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/ffv1enc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/ffv1enc.c
Changed
83
1
2
} while (0)
3
4
if (v) {
5
- const int a = FFABS(v);
6
+ const unsigned a = is_signed ? FFABS(v) : v;
7
const int e = av_log2(a);
8
put_rac(c, state + 0, 0);
9
if (e <= 9) {
10
11
avctx->slices > 1)
12
s->version = FFMAX(s->version, 2);
13
14
+ if ((avctx->flags & (AV_CODEC_FLAG_PASS1 | AV_CODEC_FLAG_PASS2)) && s->ac == AC_GOLOMB_RICE) {
15
+ av_log(avctx, AV_LOG_ERROR, "2 Pass mode is not possible with golomb coding\n");
16
+ return AVERROR(EINVAL);
17
+ }
18
+
19
// Unspecified level & slices, we choose version 1.2+ to ensure multithreaded decodability
20
if (avctx->slices == 0 && avctx->level < 0 && avctx->width * avctx->height > 720*576)
21
s->version = FFMAX(s->version, 2);
22
23
s->version = FFMAX(s->version, 3);
24
25
if ((s->version == 2 || s->version>3) && avctx->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) {
26
- av_log(avctx, AV_LOG_ERROR, "Version 2 needed for requested features but version 2 is experimental and not enabled\n");
27
+ av_log(avctx, AV_LOG_ERROR, "Version 2 or 4 needed for requested features but version 2 or 4 is experimental and not enabled\n");
28
return AVERROR_INVALIDDATA;
29
}
30
31
32
s->quant_tables12i= 11*11*quant5 i;
33
s->quant_tables13i= 5*11*11*quant5 i;
34
s->quant_tables14i= 5*5*11*11*quant5 i;
35
+ s->context_count0 = (11 * 11 * 11 + 1) / 2;
36
+ s->context_count1 = (11 * 11 * 5 * 5 * 5 + 1) / 2;
37
} else {
38
s->quant_tables00i= quant9_10biti;
39
- s->quant_tables01i= 11*quant9_10biti;
40
- s->quant_tables02i= 11*11*quant9_10biti;
41
+ s->quant_tables01i= 9*quant9_10biti;
42
+ s->quant_tables02i= 9*9*quant9_10biti;
43
s->quant_tables10i= quant9_10biti;
44
- s->quant_tables11i= 11*quant9_10biti;
45
- s->quant_tables12i= 11*11*quant5_10biti;
46
- s->quant_tables13i= 5*11*11*quant5_10biti;
47
- s->quant_tables14i= 5*5*11*11*quant5_10biti;
48
+ s->quant_tables11i= 9*quant9_10biti;
49
+ s->quant_tables12i= 9*9*quant5_10biti;
50
+ s->quant_tables13i= 5*9*9*quant5_10biti;
51
+ s->quant_tables14i= 5*5*9*9*quant5_10biti;
52
+ s->context_count0 = (9 * 9 * 9 + 1) / 2;
53
+ s->context_count1 = (9 * 9 * 5 * 5 * 5 + 1) / 2;
54
}
55
}
56
- s->context_count0 = (11 * 11 * 11 + 1) / 2;
57
- s->context_count1 = (11 * 11 * 5 * 5 * 5 + 1) / 2;
58
memcpy(s->quant_table, s->quant_tabless->context_model,
59
sizeof(s->quant_table));
60
61
62
continue;
63
if (maxw * maxh * (int64_t)(s->bits_per_raw_sample+1) * plane_count > 8<<24)
64
continue;
65
+ if (s->version < 4)
66
+ if ( ff_need_new_slices(avctx->width , s->num_h_slices, s->chroma_h_shift)
67
+ ||ff_need_new_slices(avctx->height, s->num_v_slices, s->chroma_v_shift))
68
+ continue;
69
if (avctx->slices == s->num_h_slices * s->num_v_slices && avctx->slices <= MAX_SLICES || !avctx->slices)
70
goto slices_ok;
71
}
72
73
74
put_symbol(c, state, (fs->slice_x +1)*f->num_h_slices / f->width , 0);
75
put_symbol(c, state, (fs->slice_y +1)*f->num_v_slices / f->height , 0);
76
- put_symbol(c, state, (fs->slice_width +1)*f->num_h_slices / f->width -1, 0);
77
- put_symbol(c, state, (fs->slice_height+1)*f->num_v_slices / f->height-1, 0);
78
+ put_symbol(c, state, 0, 0);
79
+ put_symbol(c, state, 0, 0);
80
for (j=0; j<f->plane_count; j++) {
81
put_symbol(c, state, f->planej.quant_table_index, 0);
82
av_assert0(f->planej.quant_table_index == f->context_model);
83
ffmpeg-3-3.4.13.tar.xz/libavcodec/flac_parser.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/flac_parser.c
Changed
10
1
2
for (i = 0; i < FLAC_MAX_SEQUENTIAL_HEADERS && curr != child; i++)
3
curr = curr->next;
4
5
+ av_assert0(i < FLAC_MAX_SEQUENTIAL_HEADERS);
6
+
7
if (header->link_penaltyi < FLAC_HEADER_CRC_FAIL_PENALTY ||
8
header->link_penaltyi == FLAC_HEADER_NOT_PENALIZED_YET) {
9
FLACHeaderMarker *start, *end;
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/fmvc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/fmvc.c
Changed
9
1
2
continue;
3
}
4
}
5
- repeat = 0;
6
}
7
repeat = 1;
8
}
9
ffmpeg-3-3.4.13.tar.xz/libavcodec/g729postfilter.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/g729postfilter.c
Changed
19
1
2
int16_t ff_g729_adaptive_gain_control(int gain_before, int gain_after, int16_t *speech,
3
int subframe_size, int16_t gain_prev)
4
{
5
- int gain; // (3.12)
6
+ unsigned gain; // (3.12)
7
int n;
8
int exp_before, exp_after;
9
10
11
gain = ((gain_before - gain_after) << 14) / gain_after + 0x4000;
12
gain = bidir_sal(gain, exp_after - exp_before);
13
}
14
- gain = av_clip_int16(gain);
15
+ gain = FFMIN(gain, 32767);
16
gain = (gain * G729_AGC_FAC1 + 0x4000) >> 15; // gain * (1-0.9875)
17
} else
18
gain = 0;
19
ffmpeg-3-3.4.13.tar.xz/libavcodec/golomb.h -> ffmpeg-3-3.4.14.tar.xz/libavcodec/golomb.h
Changed
27
1
2
log = av_log2(buf);
3
4
if (log > 31 - limit) {
5
+ av_assert2(log >= k);
6
buf >>= log - k;
7
buf += (30U - log) << k;
8
LAST_SKIP_BITS(re, gb, 32 + k - log);
9
10
11
/**
12
* read unsigned golomb rice code (jpegls).
13
+ *
14
+ * @returns -1 on error
15
*/
16
static inline int get_ur_golomb_jpegls(GetBitContext *gb, int k, int limit,
17
int esc_len)
18
19
20
/**
21
* read signed golomb rice code (flac).
22
+ *
23
+ * @returns INT_MIN on error
24
*/
25
static inline int get_sr_golomb_flac(GetBitContext *gb, int k, int limit,
26
int esc_len)
27
ffmpeg-3-3.4.13.tar.xz/libavcodec/h263dec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/h263dec.c
Changed
47
1
2
ff_er_add_slice(&s->er, s->resync_mb_x, s->resync_mb_y,
3
s->mb_x, s->mb_y, ER_MB_ERROR & part_mask);
4
5
- if (s->avctx->err_recognition & AV_EF_IGNORE_ERR)
6
+ if ((s->avctx->err_recognition & AV_EF_IGNORE_ERR) && get_bits_left(&s->gb) > 0)
7
continue;
8
return AVERROR_INVALIDDATA;
9
}
10
11
MpegEncContext *s = avctx->priv_data;
12
int ret;
13
int slice_ret = 0;
14
+
15
AVFrame *pict = data;
16
+ int bak_width, bak_height;
17
18
/* no supplementary picture */
19
if (buf_size == 0) {
20
21
// we need the idct permutation for reading a custom matrix
22
ff_mpv_idct_init(s);
23
24
+ bak_width = s->width;
25
+ bak_height = s->height;
26
+
27
/* let's go :-) */
28
if (CONFIG_WMV2_DECODER && s->msmpeg4_version == 5) {
29
ret = ff_wmv2_decode_picture_header(s);
30
31
}
32
33
if (ret < 0 || ret == FRAME_SKIPPED) {
34
- if ( s->width != avctx->coded_width
35
- || s->height != avctx->coded_height) {
36
+ if ( s->width != bak_width
37
+ || s->height != bak_height) {
38
av_log(s->avctx, AV_LOG_WARNING, "Reverting picture dimensions change due to header decoding failure\n");
39
- s->width = avctx->coded_width;
40
- s->height= avctx->coded_height;
41
+ s->width = bak_width;
42
+ s->height= bak_height;
43
+
44
}
45
}
46
if (ret == FRAME_SKIPPED)
47
ffmpeg-3-3.4.13.tar.xz/libavcodec/h2645_parse.h -> ffmpeg-3-3.4.14.tar.xz/libavcodec/h2645_parse.h
Changed
10
1
2
3
if (*buf_index >= buf_size - nal_length_size) {
4
// the end of the buffer is reached, refill it
5
- return AVERROR(EAGAIN);
6
+ return AVERROR_INVALIDDATA;
7
}
8
9
for (i = 0; i < nal_length_size; i++)
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/hevcdec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/hevcdec.c
Changed
79
1
2
3
if (s->ps.pps->dependent_slice_segments_enabled_flag)
4
sh->dependent_slice_segment_flag = get_bits1(gb);
5
+ if (sh->dependent_slice_segment_flag && !s->slice_initialized) {
6
+ av_log(s->avctx, AV_LOG_ERROR, "Independent slice segment missing.\n");
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
10
slice_address_length = av_ceil_log2(s->ps.sps->ctb_width *
11
s->ps.sps->ctb_height);
12
13
} else {
14
sh->slice_loop_filter_across_slices_enabled_flag = s->ps.pps->seq_loop_filter_across_slices_enabled_flag;
15
}
16
- } else if (!s->slice_initialized) {
17
- av_log(s->avctx, AV_LOG_ERROR, "Independent slice segment missing.\n");
18
- return AVERROR_INVALIDDATA;
19
}
20
21
sh->num_entry_point_offsets = 0;
22
23
24
if (x_off < QPEL_EXTRA_BEFORE || y_off < QPEL_EXTRA_AFTER ||
25
x_off >= pic_width - block_w - QPEL_EXTRA_AFTER ||
26
- y_off >= pic_height - block_h - QPEL_EXTRA_AFTER) {
27
+ y_off >= pic_height - block_h - QPEL_EXTRA_AFTER ||
28
+ ref == s->frame) {
29
const ptrdiff_t edge_emu_stride = EDGE_EMU_BUFFER_STRIDE << s->ps.sps->pixel_shift;
30
int offset = QPEL_EXTRA_BEFORE * srcstride + (QPEL_EXTRA_BEFORE << s->ps.sps->pixel_shift);
31
int buf_offset = QPEL_EXTRA_BEFORE * edge_emu_stride + (QPEL_EXTRA_BEFORE << s->ps.sps->pixel_shift);
32
33
intptr_t my = av_mod_uintp2(mv->y, 2 + vshift);
34
intptr_t _mx = mx << (1 - hshift);
35
intptr_t _my = my << (1 - vshift);
36
+ int emu = src0 == s->frame->data1 || src0 == s->frame->data2;
37
38
x_off += mv->x >> (2 + hshift);
39
y_off += mv->y >> (2 + vshift);
40
41
42
if (x_off < EPEL_EXTRA_BEFORE || y_off < EPEL_EXTRA_AFTER ||
43
x_off >= pic_width - block_w - EPEL_EXTRA_AFTER ||
44
- y_off >= pic_height - block_h - EPEL_EXTRA_AFTER) {
45
+ y_off >= pic_height - block_h - EPEL_EXTRA_AFTER ||
46
+ emu) {
47
const int edge_emu_stride = EDGE_EMU_BUFFER_STRIDE << s->ps.sps->pixel_shift;
48
int offset0 = EPEL_EXTRA_BEFORE * (srcstride + (1 << s->ps.sps->pixel_shift));
49
int buf_offset0 = EPEL_EXTRA_BEFORE *
50
51
52
if (current_mv.pred_flag & PF_L0) {
53
ref0 = refPicList0.refcurrent_mv.ref_idx0;
54
- if (!ref0)
55
+ if (!ref0 || !ref0->frame)
56
return;
57
hevc_await_progress(s, ref0, ¤t_mv.mv0, y0, nPbH);
58
}
59
if (current_mv.pred_flag & PF_L1) {
60
ref1 = refPicList1.refcurrent_mv.ref_idx1;
61
- if (!ref1)
62
+ if (!ref1 || !ref1->frame)
63
return;
64
hevc_await_progress(s, ref1, ¤t_mv.mv1, y0, nPbH);
65
}
66
67
case HEVC_NAL_RASL_N:
68
case HEVC_NAL_RASL_R:
69
ret = hls_slice_header(s);
70
- if (ret < 0)
71
+ if (ret < 0) {
72
+ // hls_slice_header() does not cleanup on failure thus the state now is inconsistant so we cannot use it on depandant slices
73
+ s->slice_initialized = 0;
74
return ret;
75
+ }
76
if (ret == 1) {
77
ret = AVERROR_INVALIDDATA;
78
goto fail;
79
ffmpeg-3-3.4.13.tar.xz/libavcodec/huffyuvdec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/huffyuvdec.c
Changed
19
1
2
}
3
}
4
if( width&1 && get_bits_left(&s->gb)>0 ) {
5
- int dst = get_vlc2(&s->gb, s->vlcplane.table, VLC_BITS, 3)<<2;
6
+ int dst = (unsigned)get_vlc2(&s->gb, s->vlcplane.table, VLC_BITS, 3)<<2;
7
s->temp160width-1 = dst + get_bits(&s->gb, 2);
8
}
9
}
10
11
for (i = 0; i < count && BITS_LEFT(re, &s->gb) > 0; i++) {
12
READ_2PIX(s->temp02 * i, s->temp02 * i + 1, 0);
13
}
14
+ for (; i < count; i++)
15
+ s->temp02 * i = s->temp02 * i + 1 = 0;
16
} else {
17
for (i = 0; i < count; i++) {
18
READ_2PIX(s->temp02 * i, s->temp02 * i + 1, 0);
19
ffmpeg-3-3.4.13.tar.xz/libavcodec/iff.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/iff.c
Changed
19
1
2
GetByteContext *gb)
3
{
4
GetByteContext cmds;
5
- unsigned count;
6
+ int count;
7
int i, y_pos = 0, x_pos = 0;
8
9
if (bytestream2_get_be32(gb) != MKBETAG('V', 'D', 'A', 'T'))
10
11
12
bytestream2_skip(gb, 4);
13
count = bytestream2_get_be16(gb) - 2;
14
- if (bytestream2_get_bytes_left(gb) < count)
15
+ if (count < 0 || bytestream2_get_bytes_left(gb) < count)
16
return 0;
17
18
bytestream2_init(&cmds, gb->buffer, count);
19
ffmpeg-3-3.4.13.tar.xz/libavcodec/indeo3.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/indeo3.c
Changed
11
1
2
int luma_size, chroma_size;
3
ptrdiff_t luma_pitch, chroma_pitch;
4
5
+ luma_width = FFALIGN(luma_width , 2);
6
+ luma_height = FFALIGN(luma_height, 2);
7
+
8
if (luma_width < 16 || luma_width > 640 ||
9
luma_height < 16 || luma_height > 480 ||
10
luma_width & 3 || luma_height & 3) {
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/jfdctint_template.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/jfdctint_template.c
Changed
37
1
2
#define GLOBAL(x) x
3
#define RIGHT_SHIFT(x, n) ((x) >> (n))
4
#define MULTIPLY16C16(var,const) ((var)*(const))
5
-#define DESCALE(x,n) RIGHT_SHIFT((x) + (1 << ((n) - 1)), n)
6
+#define DESCALE(x,n) RIGHT_SHIFT((int)(x) + (1 << ((n) - 1)), n)
7
8
9
/*
10
11
#if BITS_IN_JSAMPLE == 8 && CONST_BITS<=13 && PASS1_BITS<=2
12
#define MULTIPLY(var,const) MULTIPLY16C16(var,const)
13
#else
14
-#define MULTIPLY(var,const) ((var) * (const))
15
+#define MULTIPLY(var,const) (int)((var) * (unsigned)(const))
16
#endif
17
18
19
20
{
21
int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
22
int tmp10, tmp11, tmp12, tmp13;
23
- int z1, z2, z3, z4, z5;
24
+ unsigned z1, z2, z3, z4, z5;
25
int16_t *dataptr;
26
int ctr;
27
28
29
{
30
int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
31
int tmp10, tmp11, tmp12, tmp13;
32
- int z1, z2, z3, z4, z5;
33
+ unsigned z1, z2, z3, z4, z5;
34
int16_t *dataptr;
35
int ctr;
36
37
ffmpeg-3-3.4.13.tar.xz/libavcodec/jpeg2000dec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/jpeg2000dec.c
Changed
28
1
2
return AVERROR_INVALIDDATA;
3
}
4
5
+ if (s->image_offset_x >= s->width || s->image_offset_y >= s->height) {
6
+ av_log(s->avctx, AV_LOG_ERROR, "image offsets outside image");
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
+
10
+ if (s->reduction_factor && (s->image_offset_x || s->image_offset_y) ){
11
+ av_log(s->avctx, AV_LOG_ERROR, "reduction factor with image offsets is not fully implemented");
12
+ return AVERROR_PATCHWELCOME;
13
+ }
14
+
15
s->ncomponents = ncomponents;
16
17
if (s->tile_width <= 0 || s->tile_height <= 0) {
18
19
case 2:
20
bytestream2_get_be16(&s->g);
21
break;
22
- case 3:
23
- bytestream2_get_be32(&s->g);
24
- break;
25
}
26
if (SP == 0) {
27
bytestream2_get_be16(&s->g);
28
ffmpeg-3-3.4.13.tar.xz/libavcodec/jpeglsdec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/jpeglsdec.c
Changed
21
1
2
state->T3 = s->t3;
3
state->reset = s->reset;
4
ff_jpegls_reset_coding_parameters(state, 0);
5
+
6
+ /* Testing parameters here, we cannot test in LSE or SOF because
7
+ * these interdepend and are allowed in either order
8
+ */
9
+ if (state->maxval >= (1<<state->bpp) ||
10
+ state->T1 > state->T2 ||
11
+ state->T2 > state->T3 ||
12
+ state->T3 > state->maxval ||
13
+ state->reset > FFMAX(255, state->maxval)) {
14
+ ret = AVERROR_INVALIDDATA;
15
+ goto end;
16
+ }
17
+
18
ff_jpegls_init_state(state);
19
20
if (s->bits <= 8)
21
ffmpeg-3-3.4.13.tar.xz/libavcodec/lcldec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/lcldec.c
Changed
50
1
2
break;
3
case COMP_MSZH_NOCOMP: {
4
int bppx2;
5
+ int aligned_width = width;
6
switch (c->imgtype) {
7
case IMGTYPE_YUV111:
8
case IMGTYPE_RGB24:
9
bppx2 = 6;
10
break;
11
case IMGTYPE_YUV422:
12
+ aligned_width &= ~3;
13
case IMGTYPE_YUV211:
14
bppx2 = 4;
15
break;
16
case IMGTYPE_YUV411:
17
+ aligned_width &= ~3;
18
case IMGTYPE_YUV420:
19
bppx2 = 3;
20
break;
21
22
bppx2 = 0; // will error out below
23
break;
24
}
25
- if (len < ((width * height * bppx2) >> 1))
26
+ if (len < ((aligned_width * height * bppx2) >> 1))
27
return AVERROR_INVALIDDATA;
28
break;
29
}
30
31
}
32
break;
33
case IMGTYPE_YUV422:
34
+ pixel_ptr = 0;
35
for (row = 0; row < height; row++) {
36
- pixel_ptr = row * width * 2;
37
yq = uq = vq =0;
38
for (col = 0; col < width/4; col++) {
39
encodedpixel_ptr = yq -= encodedpixel_ptr;
40
41
}
42
break;
43
case IMGTYPE_YUV411:
44
+ pixel_ptr = 0;
45
for (row = 0; row < height; row++) {
46
- pixel_ptr = row * width / 2 * 3;
47
yq = uq = vq =0;
48
for (col = 0; col < width/4; col++) {
49
encodedpixel_ptr = yq -= encodedpixel_ptr;
50
ffmpeg-3-3.4.13.tar.xz/libavcodec/loco.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/loco.c
Changed
27
1
2
return 0;
3
}
4
v = get_ur_golomb_jpegls(&r->gb, loco_get_rice_param(r), INT_MAX, 0);
5
+ if (v == -1)
6
+ return INT_MIN;
7
loco_update_rice_param(r, (v + 1) >> 1);
8
if (!v) {
9
if (r->save >= 0) {
10
- r->run = get_ur_golomb_jpegls(&r->gb, 2, INT_MAX, 0);
11
+ int run = get_ur_golomb_jpegls(&r->gb, 2, INT_MAX, 0);
12
+ if (run == -1)
13
+ return INT_MIN;
14
+ r->run = run;
15
if (r->run > 1)
16
r->save += r->run + 1;
17
else
18
19
20
/* restore top left pixel */
21
val = loco_get_rice(&rc);
22
+ if (val == INT_MIN)
23
+ return AVERROR_INVALIDDATA;
24
data0 = 128 + val;
25
/* restore top line */
26
for (i = 1; i < width; i++) {
27
ffmpeg-3-3.4.13.tar.xz/libavcodec/lpc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/lpc.c
Changed
14
1
2
double av_uninit(weight);
3
memset(var, 0, FFALIGN(MAX_LPC_ORDER+1,4)*sizeof(*var));
4
5
- for(j=0; j<max_order; j++)
6
- m0.coeffmax_order-1j = -lpcmax_order-1j;
7
+ /* Avoids initializing with an unused value when lpc_passes == 1 */
8
+ if (lpc_passes > 1)
9
+ for(j=0; j<max_order; j++)
10
+ m0.coeffmax_order-1j = -lpcmax_order-1j;
11
12
for(; pass<lpc_passes; pass++){
13
avpriv_init_lls(&mpass&1, max_order);
14
ffmpeg-3-3.4.13.tar.xz/libavcodec/motion_est.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/motion_est.c
Changed
10
1
2
s->b_direct_mv_tablemot_xy0= 0;
3
s->b_direct_mv_tablemot_xy1= 0;
4
5
- return 256*256*256*64;
6
+ return 256*256*256*64-1;
7
}
8
9
c->xmin= xmin;
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/mpeg4videodec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/mpeg4videodec.c
Changed
37
1
2
ctx->sprite_shift0 = alpha + beta + rho - min_ab;
3
ctx->sprite_shift1 = alpha + beta + rho - min_ab + 2;
4
break;
5
+ default:
6
+ av_assert0(0);
7
}
8
/* try to simplify the situation */
9
if (sprite_delta00 == a << ctx->sprite_shift0 &&
10
11
for (y = 0; y < 16; y++) {
12
int v;
13
14
- v = mb_v + dy * y;
15
+ v = mb_v + (unsigned)dy * y;
16
// FIXME optimize
17
for (x = 0; x < 16; x++) {
18
sum += v >> shift;
19
20
if (SHOW_UBITS(re, &s->gb, 1) == 0) {
21
av_log(s->avctx, AV_LOG_ERROR,
22
"1. marker bit missing in 3. esc\n");
23
- if (!(s->avctx->err_recognition & AV_EF_IGNORE_ERR))
24
+ if (!(s->avctx->err_recognition & AV_EF_IGNORE_ERR) || get_bits_left(&s->gb) <= 0)
25
return -1;
26
}
27
SKIP_CACHE(re, &s->gb, 1);
28
29
if (SHOW_UBITS(re, &s->gb, 1) == 0) {
30
av_log(s->avctx, AV_LOG_ERROR,
31
"2. marker bit missing in 3. esc\n");
32
- if (!(s->avctx->err_recognition & AV_EF_IGNORE_ERR))
33
+ if (!(s->avctx->err_recognition & AV_EF_IGNORE_ERR) || get_bits_left(&s->gb) <= 0)
34
return -1;
35
}
36
37
ffmpeg-3-3.4.13.tar.xz/libavcodec/mpegvideo_enc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/mpegvideo_enc.c
Changed
67
1
2
av_log(avctx, AV_LOG_ERROR, "H.263 does not support resolutions above 2048x1152\n");
3
return -1;
4
}
5
+ if (s->codec_id == AV_CODEC_ID_FLV1 &&
6
+ (avctx->width > 65535 ||
7
+ avctx->height > 65535 )) {
8
+ av_log(avctx, AV_LOG_ERROR, "FLV does not support resolutions above 16bit\n");
9
+ return AVERROR(EINVAL);
10
+ }
11
if ((s->codec_id == AV_CODEC_ID_H263 ||
12
s->codec_id == AV_CODEC_ID_H263P) &&
13
((avctx->width &3) ||
14
15
&v_chroma_shift);
16
17
for (i = 0; i < 3; i++) {
18
- int src_stride = pic_arg->linesizei;
19
- int dst_stride = i ? s->uvlinesize : s->linesize;
20
+ ptrdiff_t src_stride = pic_arg->linesizei;
21
+ ptrdiff_t dst_stride = i ? s->uvlinesize : s->linesize;
22
int h_shift = i ? h_chroma_shift : 0;
23
int v_shift = i ? v_chroma_shift : 0;
24
- int w = s->width >> h_shift;
25
- int h = s->height >> v_shift;
26
+ int w = AV_CEIL_RSHIFT(s->width , h_shift);
27
+ int h = AV_CEIL_RSHIFT(s->height, v_shift);
28
uint8_t *src = pic_arg->datai;
29
uint8_t *dst = pic->f->datai;
30
int vpad = 16;
31
32
dst += INPLACE_OFFSET;
33
34
if (src_stride == dst_stride)
35
- memcpy(dst, src, src_stride * h);
36
+ memcpy(dst, src, src_stride * h - src_stride + w);
37
else {
38
int h2 = h;
39
uint8_t *dst2 = dst;
40
41
/* shift buffer entries */
42
for (i = flush_offset; i < MAX_PICTURE_COUNT /*s->encoding_delay + 1*/; i++)
43
s->input_picturei - flush_offset = s->input_picturei;
44
+ for (int i = MAX_B_FRAMES + 1 - flush_offset; i <= MAX_B_FRAMES; i++)
45
+ s->input_picturei = NULL;
46
47
s->input_pictureencoding_delay = (Picture*) pic;
48
49
50
goto fail;
51
}
52
53
- rd += (out_size * lambda2) >> (FF_LAMBDA_SHIFT - 3);
54
+ rd += (out_size * (uint64_t)lambda2) >> (FF_LAMBDA_SHIFT - 3);
55
}
56
57
/* get the delayed frames */
58
59
ret = out_size;
60
goto fail;
61
}
62
- rd += (out_size * lambda2) >> (FF_LAMBDA_SHIFT - 3);
63
+ rd += (out_size * (uint64_t)lambda2) >> (FF_LAMBDA_SHIFT - 3);
64
65
rd += c->error0 + c->error1 + c->error2;
66
67
ffmpeg-3-3.4.13.tar.xz/libavcodec/parser.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/parser.c
Changed
9
1
2
}
3
pc->buffer = new_buffer;
4
memcpy(&pc->bufferpc->index, *buf, *buf_size);
5
+ memset(&pc->bufferpc->index + *buf_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
6
pc->index += *buf_size;
7
return -1;
8
}
9
ffmpeg-3-3.4.13.tar.xz/libavcodec/pixlet.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/pixlet.c
Changed
12
1
2
if (cnt1 >= length) {
3
cnt1 = get_bits(b, nbits);
4
} else {
5
- pfx = 14 + ((((uint64_t)(value - 14)) >> 32) & (value - 14));
6
- if (pfx < 1 || pfx > 25)
7
+ pfx = FFMIN(value, 14);
8
+ if (pfx < 1)
9
return AVERROR_INVALIDDATA;
10
cnt1 *= (1 << pfx) - 1;
11
shbits = show_bits(b, pfx);
12
ffmpeg-3-3.4.13.tar.xz/libavcodec/proresdec2.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/proresdec2.c
Changed
10
1
2
3
for (pos = block_mask;;) {
4
bits_left = gb->size_in_bits - re_index;
5
- if (!bits_left || (bits_left < 32 && !SHOW_UBITS(re, gb, bits_left)))
6
+ if (bits_left <= 0 || (bits_left < 32 && !SHOW_UBITS(re, gb, bits_left)))
7
break;
8
9
DECODE_CODEWORD(run, run_to_cbFFMIN(run, 15), LAST_SKIP_BITS);
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/proresenc_kostya.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/proresenc_kostya.c
Changed
20
1
2
*
3
* Copyright (c) 2012 Konstantin Shishkov
4
*
5
- * This encoder appears to be based on Anatoliy Wassermans considering
6
- * similarities in the bugs.
7
- *
8
* This file is part of FFmpeg.
9
*
10
* FFmpeg is free software; you can redistribute it and/or
11
12
13
static void get_alpha_data(ProresContext *ctx, const uint16_t *src,
14
ptrdiff_t linesize, int x, int y, int w, int h,
15
- int16_t *blocks, int mbs_per_slice, int abits)
16
+ uint16_t *blocks, int mbs_per_slice, int abits)
17
{
18
const int slice_width = 16 * mbs_per_slice;
19
int i, j, copy_w, copy_h;
20
ffmpeg-3-3.4.13.tar.xz/libavcodec/r210enc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/r210enc.c
Changed
10
1
2
3
avctx->bits_per_coded_sample = 32;
4
if (avctx->width > 0)
5
- avctx->bit_rate = ff_guess_coded_bitrate(avctx) * aligned_width / avctx->width;
6
+ avctx->bit_rate = av_rescale(ff_guess_coded_bitrate(avctx), aligned_width, avctx->width);
7
8
return 0;
9
}
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/rangecoder.h -> ffmpeg-3-3.4.14.tar.xz/libavcodec/rangecoder.h
Changed
27
1
2
static inline void renorm_encoder(RangeCoder *c)
3
{
4
// FIXME: optimize
5
- while (c->range < 0x100) {
6
if (c->outstanding_byte < 0) {
7
c->outstanding_byte = c->low >> 8;
8
} else if (c->low <= 0xFF00) {
9
10
11
c->low = (c->low & 0xFF) << 8;
12
c->range <<= 8;
13
- }
14
}
15
16
static inline int get_rac_count(RangeCoder *c)
17
18
*state = c->one_state*state;
19
}
20
21
- renorm_encoder(c);
22
+ while (c->range < 0x100)
23
+ renorm_encoder(c);
24
}
25
26
static inline void refill(RangeCoder *c)
27
ffmpeg-3-3.4.13.tar.xz/libavcodec/shorten.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/shorten.c
Changed
9
1
2
buf = &s->bitstreams->bitstream_index;
3
buf_size += s->bitstream_size;
4
s->bitstream_size = buf_size;
5
+ memset(buf + buf_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
6
7
/* do not decode until buffer has at least max_framesize bytes or
8
* the end of the file has been reached */
9
ffmpeg-3-3.4.13.tar.xz/libavcodec/snow.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/snow.c
Changed
10
1
2
FF_ALLOCZ_ARRAY_OR_GOTO(avctx, s->spatial_dwt_buffer, width, height * sizeof(DWTELEM), fail); //FIXME this does not belong here
3
FF_ALLOCZ_ARRAY_OR_GOTO(avctx, s->temp_dwt_buffer, width, sizeof(DWTELEM), fail);
4
FF_ALLOCZ_ARRAY_OR_GOTO(avctx, s->temp_idwt_buffer, width, sizeof(IDWTELEM), fail);
5
- FF_ALLOC_ARRAY_OR_GOTO(avctx, s->run_buffer, ((width + 1) >> 1), ((height + 1) >> 1) * sizeof(*s->run_buffer), fail);
6
+ FF_ALLOC_ARRAY_OR_GOTO(avctx, s->run_buffer, ((width + 1) >> 1) * ((height + 1) >> 1) + 1, sizeof(*s->run_buffer), fail);
7
8
for(i=0; i<MAX_REF_FRAMES; i++) {
9
for(j=0; j<MAX_REF_FRAMES; j++)
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/snowenc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/snowenc.c
Changed
21
1
2
int my_context= av_log2(2*FFABS(left->my - top->my));
3
int s_context= 2*left->level + 2*top->level + tl->level + tr->level;
4
int ref, best_ref, ref_score, ref_mx, ref_my;
5
+ int range = MAX_MV >> (1 + qpel);
6
7
av_assert0(sizeof(s->block_state) >= 256);
8
if(s->keyframe){
9
10
c->xmax = - (x+1)*block_w + (w<<(LOG2_MB_SIZE - s->block_max_depth)) + 16-3;
11
c->ymax = - (y+1)*block_w + (h<<(LOG2_MB_SIZE - s->block_max_depth)) + 16-3;
12
13
+ c->xmin = FFMAX(c->xmin,-range);
14
+ c->xmax = FFMIN(c->xmax, range);
15
+ c->ymin = FFMAX(c->ymin,-range);
16
+ c->ymax = FFMIN(c->ymax, range);
17
+
18
if(P_LEFT0 > (c->xmax<<shift)) P_LEFT0 = (c->xmax<<shift);
19
if(P_LEFT1 > (c->ymax<<shift)) P_LEFT1 = (c->ymax<<shift);
20
if(P_TOP0 > (c->xmax<<shift)) P_TOP0 = (c->xmax<<shift);
21
ffmpeg-3-3.4.13.tar.xz/libavcodec/svq3.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/svq3.c
Changed
11
1
2
if (svq3_decode_slice_header(avctx))
3
return -1;
4
5
+ if (avpkt->size < s->mb_width * s->mb_height / 8)
6
+ return AVERROR_INVALIDDATA;
7
+
8
s->pict_type = s->slice_type;
9
10
if (s->pict_type != AV_PICTURE_TYPE_B)
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/takdsp.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/takdsp.c
Changed
41
1
2
int i;
3
4
for (i = 0; i < length; i++) {
5
- int32_t a = p1i;
6
- int32_t b = p2i;
7
+ uint32_t a = p1i;
8
+ uint32_t b = p2i;
9
p2i = a + b;
10
}
11
}
12
13
int i;
14
15
for (i = 0; i < length; i++) {
16
- int32_t a = p1i;
17
- int32_t b = p2i;
18
+ uint32_t a = p1i;
19
+ uint32_t b = p2i;
20
p1i = b - a;
21
}
22
}
23
24
int i;
25
26
for (i = 0; i < length; i++) {
27
- int32_t a = p1i;
28
+ uint32_t a = p1i;
29
int32_t b = p2i;
30
a -= b >> 1;
31
p1i = a;
32
33
int i;
34
35
for (i = 0; i < length; i++) {
36
- int32_t a = p1i;
37
+ uint32_t a = p1i;
38
int32_t b = p2i;
39
b = (unsigned)((int)(dfactor * (unsigned)(b >> dshift) + 128) >> 8) << dshift;
40
p1i = b - a;
41
ffmpeg-3-3.4.13.tar.xz/libavcodec/targaenc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/targaenc.c
Changed
30
1
2
3
#include <string.h>
4
5
+#include "libavutil/avassert.h"
6
#include "libavutil/imgutils.h"
7
#include "libavutil/internal.h"
8
#include "libavutil/intreadwrite.h"
9
10
TargaContext *s = avctx->priv_data;
11
int bpp, picsize, datasize = -1, ret, i;
12
uint8_t *out;
13
+ int maxpal = 32*32;
14
15
picsize = av_image_get_buffer_size(avctx->pix_fmt,
16
avctx->width, avctx->height, 1);
17
- if ((ret = ff_alloc_packet2(avctx, pkt, picsize + 45, 0)) < 0)
18
+ if ((ret = ff_alloc_packet2(avctx, pkt, picsize + 45 + maxpal, 0)) < 0)
19
return ret;
20
21
/* zero out the header and only set applicable fields */
22
23
AV_WL24(pkt->data + 18 + 3 * i, *(uint32_t *)(p->data1 + i * 4));
24
}
25
out += 32 * pal_bpp; /* skip past the palette we just output */
26
+ av_assert0(32 * pal_bpp <= maxpal);
27
break;
28
}
29
case AV_PIX_FMT_GRAY8:
30
ffmpeg-3-3.4.13.tar.xz/libavcodec/tests/dct.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/tests/dct.c
Changed
12
1
2
v = abs(err);
3
if (v > err_inf)
4
err_inf = v;
5
- err2_matrixi += v * v;
6
- err2 += v * v;
7
+ err2_matrixi += v * (int64_t)v;
8
+ err2 += v * (int64_t)v;
9
sysErri += blocki - block1i;
10
blockSumErr += v;
11
if (abs(blocki) > maxout)
12
ffmpeg-3-3.4.13.tar.xz/libavcodec/tests/jpeg2000dwt.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/tests/jpeg2000dwt.c
Changed
16
1
2
return 1;
3
}
4
for (j = 0; j<MAX_W * MAX_W; j++) {
5
- if (FFABS(arrayj - refj) > max_diff) {
6
+ if (FFABS(arrayj - (int64_t)refj) > max_diff) {
7
fprintf(stderr, "missmatch at %d (%d != %d) decomp:%d border %d %d %d %d\n",
8
j, arrayj, refj,decomp_levels, border00, border01, border10, border11);
9
return 2;
10
}
11
- err2 += (arrayj - refj) * (arrayj - refj);
12
+ err2 += (arrayj - refj) * (int64_t)(arrayj - refj);
13
arrayj = refj;
14
}
15
ff_dwt_destroy(s);
16
ffmpeg-3-3.4.13.tar.xz/libavcodec/truemotion1.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/truemotion1.c
Changed
13
1
2
return AVERROR_PATCHWELCOME;
3
}
4
5
+ if (s->h & 3) {
6
+ avpriv_request_sample(s->avctx, "Frame with height not being a multiple of 4");
7
+ return AVERROR_PATCHWELCOME;
8
+ }
9
+
10
if (s->w != s->avctx->width || s->h != s->avctx->height ||
11
new_pix_fmt != s->avctx->pix_fmt) {
12
av_frame_unref(s->frame);
13
ffmpeg-3-3.4.13.tar.xz/libavcodec/tta.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/tta.c
Changed
10
1
2
if (s->channels > 1) {
3
int32_t *r = p - 1;
4
for (*p += *r / 2; r > (int32_t*)p - s->channels; r--)
5
- *r = *(r + 1) - *r;
6
+ *r = *(r + 1) - (unsigned)*r;
7
}
8
cur_chan = 0;
9
i++;
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/utils.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/utils.c
Changed
32
1
2
if (s->codec_id == AV_CODEC_ID_SVQ1) {
3
w_align = 64;
4
h_align = 64;
5
+ } else if (s->codec_id == AV_CODEC_ID_SNOW) {
6
+ w_align = 16;
7
+ h_align = 16;
8
}
9
break;
10
case AV_PIX_FMT_RGB555:
11
12
if (sr > 0) {
13
/* calc from sample rate */
14
if (id == AV_CODEC_ID_TTA)
15
- return 256 * sr / 245;
16
+ return 256ll * sr / 245;
17
else if (id == AV_CODEC_ID_DST)
18
- return 588 * sr / 44100;
19
+ return 588ll * sr / 44100;
20
21
if (ch > 0) {
22
/* calc from sample rate and channels */
23
24
case AV_CODEC_ID_ADPCM_IMA_WAV:
25
if (bps < 2 || bps > 5)
26
return 0;
27
- tmp = blocks * (1LL + (ba - 4 * ch) / (bps * ch) * 8);
28
+ tmp = blocks * (1LL + (ba - 4 * ch) / (bps * ch) * 8LL);
29
break;
30
case AV_CODEC_ID_ADPCM_IMA_DK3:
31
tmp = blocks * (((ba - 16LL) * 2 / 3 * 4) / ch);
32
ffmpeg-3-3.4.13.tar.xz/libavcodec/utvideoenc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/utvideoenc.c
Changed
10
1
2
* - Compression mode (none/huff)
3
* And write the flags.
4
*/
5
- c->flags = (c->slices - 1) << 24;
6
+ c->flags = (c->slices - 1U) << 24;
7
c->flags |= 0 << 11; // bit field to signal interlaced encoding mode
8
c->flags |= c->compression;
9
10
ffmpeg-3-3.4.13.tar.xz/libavcodec/vaapi_encode.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vaapi_encode.c
Changed
18
1
2
}
3
4
if (ctx->va_context != VA_INVALID_ID) {
5
- vaDestroyContext(ctx->hwctx->display, ctx->va_context);
6
+ if (ctx->hwctx)
7
+ vaDestroyContext(ctx->hwctx->display, ctx->va_context);
8
ctx->va_context = VA_INVALID_ID;
9
}
10
11
if (ctx->va_config != VA_INVALID_ID) {
12
- vaDestroyConfig(ctx->hwctx->display, ctx->va_config);
13
+ if (ctx->hwctx)
14
+ vaDestroyConfig(ctx->hwctx->display, ctx->va_config);
15
ctx->va_config = VA_INVALID_ID;
16
}
17
18
ffmpeg-3-3.4.13.tar.xz/libavcodec/vble.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vble.c
Changed
11
1
2
ctx->size = av_image_get_buffer_size(avctx->pix_fmt,
3
avctx->width, avctx->height, 1);
4
5
+ if (ctx->size < 0)
6
+ return ctx->size;
7
+
8
ctx->val = av_malloc_array(ctx->size, sizeof(*ctx->val));
9
10
if (!ctx->val) {
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/vc1dec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vc1dec.c
Changed
9
1
2
av_freep(&v->hrd_rate);
3
av_freep(&v->hrd_buffer);
4
ff_mpv_common_end(&v->s);
5
+ memset(v->s.block_index, 0, sizeof(v->s.block_index));
6
av_freep(&v->mv_type_mb_plane);
7
av_freep(&v->direct_mb_plane);
8
av_freep(&v->forward_mb_plane);
9
ffmpeg-3-3.4.13.tar.xz/libavcodec/vc2enc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vc2enc.c
Changed
36
1
2
static av_always_inline void put_vc2_ue_uint(PutBitContext *pb, uint32_t val)
3
{
4
int i;
5
- int pbits = 0, bits = 0, topbit = 1, maxval = 1;
6
+ int bits = 0;
7
+ unsigned topbit = 1, maxval = 1;
8
+ uint64_t pbits = 0;
9
10
if (!val++) {
11
put_bits(pb, 1, 1);
12
13
14
for (i = 0; i < bits; i++) {
15
topbit >>= 1;
16
+ av_assert2(pbits <= UINT64_MAX>>3);
17
pbits <<= 2;
18
if (val & topbit)
19
pbits |= 0x1;
20
}
21
22
- put_bits(pb, bits*2 + 1, (pbits << 1) | 1);
23
+ put_bits64(pb, bits*2 + 1, (pbits << 1) | 1);
24
}
25
26
static av_always_inline int count_vc2_ue_uint(uint32_t val)
27
28
29
s->slice_max_bytes = SSIZE_ROUND(s->slice_max_bytes);
30
s->slice_min_bytes = s->slice_max_bytes - s->slice_max_bytes*(s->tolerance/100.0f);
31
- if (s->slice_min_bytes < 0)
32
+ if (s->slice_min_bytes < 0 || s->slice_max_bytes > INT_MAX >> 3)
33
return AVERROR(EINVAL);
34
35
ret = encode_frame(s, avpkt, frame, aux_data, header_size, s->interlaced);
36
ffmpeg-3-3.4.13.tar.xz/libavcodec/vorbisdec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vorbisdec.c
Changed
11
1
2
unsigned step = FASTDIV(vr->partition_size << 1, dim << 1);
3
vorbis_codebook codebook = vc->codebooksvqbook;
4
5
+ if (get_bits_left(gb) <= 0)
6
+ return AVERROR_INVALIDDATA;
7
+
8
if (vr_type == 0) {
9
10
voffs = voffset+j*vlen;
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/vp8.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vp8.c
Changed
20
1
2
return AVERROR(ENOMEM);
3
}
4
#if HAVE_THREADS
5
- pthread_mutex_init(&s->thread_datai.lock, NULL);
6
- pthread_cond_init(&s->thread_datai.cond, NULL);
7
+ ret = pthread_mutex_init(&s->thread_datai.lock, NULL);
8
+ if (ret) {
9
+ free_buffers(s);
10
+ return AVERROR(ret);
11
+ }
12
+ ret = pthread_cond_init(&s->thread_datai.cond, NULL);
13
+ if (ret) {
14
+ free_buffers(s);
15
+ return AVERROR(ret);
16
+ }
17
#endif
18
}
19
20
ffmpeg-3-3.4.13.tar.xz/libavcodec/vp9recon.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/vp9recon.c
Changed
25
1
2
// The arm/aarch64 _hv filters read one more row than what actually is
3
// needed, so switch to emulated edge one pixel sooner vertically
4
// (!!my * 5) than horizontally (!!mx * 4).
5
+ // The arm/aarch64 _h filters read one more pixel than what actually is
6
+ // needed, so switch to emulated edge if that would read beyond the bottom
7
+ // right block.
8
if (x < !!mx * 3 || y < !!my * 3 ||
9
+ ((ARCH_AARCH64 || ARCH_ARM) && (x + !!mx * 5 > w - bw) && (y + !!my * 5 + 1 > h - bh)) ||
10
x + !!mx * 4 > w - bw || y + !!my * 5 > h - bh) {
11
s->vdsp.emulated_edge_mc(td->edge_emu_buffer,
12
ref - !!my * 3 * ref_stride - !!mx * 3 * bytesperpixel,
13
14
// The arm/aarch64 _hv filters read one more row than what actually is
15
// needed, so switch to emulated edge one pixel sooner vertically
16
// (!!my * 5) than horizontally (!!mx * 4).
17
+ // The arm/aarch64 _h filters read one more pixel than what actually is
18
+ // needed, so switch to emulated edge if that would read beyond the bottom
19
+ // right block.
20
if (x < !!mx * 3 || y < !!my * 3 ||
21
+ ((ARCH_AARCH64 || ARCH_ARM) && (x + !!mx * 5 > w - bw) && (y + !!my * 5 + 1 > h - bh)) ||
22
x + !!mx * 4 > w - bw || y + !!my * 5 > h - bh) {
23
s->vdsp.emulated_edge_mc(td->edge_emu_buffer,
24
ref_u - !!my * 3 * src_stride_u - !!mx * 3 * bytesperpixel,
25
ffmpeg-3-3.4.13.tar.xz/libavcodec/wavpackenc.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/wavpackenc.c
Changed
19
1
2
put_bits(pb, 31, 0x7FFFFFFF);
3
cbits -= 31;
4
} else {
5
- put_bits(pb, cbits, (1 << cbits) - 1);
6
+ put_bits(pb, cbits, (1U << cbits) - 1);
7
cbits = 0;
8
}
9
} while (cbits);
10
11
put_bits(pb, 31, 0x7FFFFFFF);
12
cbits -= 31;
13
} else {
14
- put_bits(pb, cbits, (1 << cbits) - 1);
15
+ put_bits(pb, cbits, (1U << cbits) - 1);
16
cbits = 0;
17
}
18
} while (cbits);
19
ffmpeg-3-3.4.13.tar.xz/libavcodec/webp.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/webp.c
Changed
11
1
2
ref_x = FFMAX(0, ref_x);
3
ref_y = FFMAX(0, ref_y);
4
5
+ if (ref_y == y && ref_x >= x)
6
+ return AVERROR_INVALIDDATA;
7
+
8
/* copy pixels
9
* source and dest regions can overlap and wrap lines, so just
10
* copy per-pixel */
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/wmavoice.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/wmavoice.c
Changed
20
1
2
/* Parse frame type ("frame header"), see frame_descs */
3
int bd_idx = s->vbm_treeget_vlc2(gb, frame_type_vlc.table, 6, 3), block_nsamples;
4
5
+ pitch0 = INT_MAX;
6
+
7
if (bd_idx < 0) {
8
av_log(ctx, AV_LOG_ERROR,
9
"Invalid frame type VLC code, skipping\n");
10
11
double i_lspsMAX_LSPS;
12
float lpcsMAX_LSPS;
13
14
+ if(frame_descsbd_idx.fcb_type >= FCB_TYPE_AW_PULSES && pitch0 == INT_MAX)
15
+ return AVERROR_INVALIDDATA;
16
+
17
for (n = 0; n < s->lsps; n++) // LSF -> LSP
18
i_lspsn = cos(0.5 * (prev_lspsn + lspsn));
19
ff_acelp_lspd2lpc(i_lsps, lpcs, s->lsps >> 1);
20
ffmpeg-3-3.4.13.tar.xz/libavcodec/xan.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/xan.c
Changed
11
1
2
return AVERROR_INVALIDDATA;
3
}
4
5
+ if (buf_size < 9)
6
+ return AVERROR_INVALIDDATA;
7
+
8
if ((ret = ff_get_buffer(avctx, frame, AV_GET_BUFFER_FLAG_REF)) < 0)
9
return ret;
10
11
ffmpeg-3-3.4.13.tar.xz/libavcodec/xsubdec.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/xsubdec.c
Changed
26
1
2
int64_t packet_time = 0;
3
GetBitContext gb;
4
int has_alpha = avctx->codec_tag == MKTAG('D','X','S','A');
5
+ int64_t start_display_time, end_display_time;
6
7
// check that at least header fits
8
if (buf_size < 27 + 7 * 2 + 4 * (3 + has_alpha)) {
9
10
}
11
if (avpkt->pts != AV_NOPTS_VALUE)
12
packet_time = av_rescale_q(avpkt->pts, AV_TIME_BASE_Q, (AVRational){1, 1000});
13
- sub->start_display_time = parse_timecode(buf + 1, packet_time);
14
- sub->end_display_time = parse_timecode(buf + 14, packet_time);
15
+
16
+ sub->start_display_time = start_display_time = parse_timecode(buf + 1, packet_time);
17
+ sub->end_display_time = end_display_time = parse_timecode(buf + 14, packet_time);
18
+ if (sub->start_display_time != start_display_time ||
19
+ sub-> end_display_time != end_display_time) {
20
+ av_log(avctx, AV_LOG_ERROR, "time code not representable in 32bit\n");
21
+ return -1;
22
+ }
23
buf += 27;
24
25
// read header
26
ffmpeg-3-3.4.13.tar.xz/libavcodec/xvididct.c -> ffmpeg-3-3.4.14.tar.xz/libavcodec/xvididct.c
Changed
78
1
2
3
static int idct_row(short *in, const int *const tab, int rnd)
4
{
5
- const int c1 = tab0;
6
- const int c2 = tab1;
7
- const int c3 = tab2;
8
- const int c4 = tab3;
9
- const int c5 = tab4;
10
- const int c6 = tab5;
11
- const int c7 = tab6;
12
+ const unsigned c1 = tab0;
13
+ const unsigned c2 = tab1;
14
+ const unsigned c3 = tab2;
15
+ const unsigned c4 = tab3;
16
+ const unsigned c5 = tab4;
17
+ const unsigned c6 = tab5;
18
+ const unsigned c7 = tab6;
19
20
const int right = in5 | in6 | in7;
21
const int left = in1 | in2 | in3;
22
if (!(right | in4)) {
23
const int k = c4 * in0 + rnd;
24
if (left) {
25
- const int a0 = k + c2 * in2;
26
- const int a1 = k + c6 * in2;
27
- const int a2 = k - c6 * in2;
28
- const int a3 = k - c2 * in2;
29
+ const unsigned a0 = k + c2 * in2;
30
+ const unsigned a1 = k + c6 * in2;
31
+ const unsigned a2 = k - c6 * in2;
32
+ const unsigned a3 = k - c2 * in2;
33
34
const int b0 = c1 * in1 + c3 * in3;
35
const int b1 = c3 * in1 - c7 * in3;
36
const int b2 = c5 * in1 - c1 * in3;
37
const int b3 = c7 * in1 - c5 * in3;
38
39
- in0 = (a0 + b0) >> ROW_SHIFT;
40
- in1 = (a1 + b1) >> ROW_SHIFT;
41
- in2 = (a2 + b2) >> ROW_SHIFT;
42
- in3 = (a3 + b3) >> ROW_SHIFT;
43
- in4 = (a3 - b3) >> ROW_SHIFT;
44
- in5 = (a2 - b2) >> ROW_SHIFT;
45
- in6 = (a1 - b1) >> ROW_SHIFT;
46
- in7 = (a0 - b0) >> ROW_SHIFT;
47
+ in0 = (int)(a0 + b0) >> ROW_SHIFT;
48
+ in1 = (int)(a1 + b1) >> ROW_SHIFT;
49
+ in2 = (int)(a2 + b2) >> ROW_SHIFT;
50
+ in3 = (int)(a3 + b3) >> ROW_SHIFT;
51
+ in4 = (int)(a3 - b3) >> ROW_SHIFT;
52
+ in5 = (int)(a2 - b2) >> ROW_SHIFT;
53
+ in6 = (int)(a1 - b1) >> ROW_SHIFT;
54
+ in7 = (int)(a0 - b0) >> ROW_SHIFT;
55
} else {
56
const int a0 = k >> ROW_SHIFT;
57
if (a0) {
58
59
return 0;
60
}
61
} else if (!(left | right)) {
62
- const int a0 = (rnd + c4 * (in0 + in4)) >> ROW_SHIFT;
63
- const int a1 = (rnd + c4 * (in0 - in4)) >> ROW_SHIFT;
64
+ const int a0 = (int)(rnd + c4 * (in0 + in4)) >> ROW_SHIFT;
65
+ const int a1 = (int)(rnd + c4 * (in0 - in4)) >> ROW_SHIFT;
66
67
in0 = a0;
68
in3 = a0;
69
70
in5 = a1;
71
in6 = a1;
72
} else {
73
- const int k = c4 * in0 + rnd;
74
+ const unsigned int k = c4 * in0 + rnd;
75
const unsigned int a0 = k + c2 * in2 + c4 * in4 + c6 * in6;
76
const unsigned int a1 = k + c6 * in2 - c4 * in4 - c2 * in6;
77
const unsigned int a2 = k - c6 * in2 - c4 * in4 + c2 * in6;
78
ffmpeg-3-3.4.13.tar.xz/libavdevice/dshow.c -> ffmpeg-3-3.4.14.tar.xz/libavdevice/dshow.c
Changed
23
1
2
goto error;
3
}
4
}
5
- if (ctx->device_filterotherDevType) {
6
+ if (ctx->device_filterotherDevType) {
7
// avoid adding add two instances of the same device to the graph, one for video, one for audio
8
// a few devices don't support this (could also do this check earlier to avoid double crossbars, etc. but they seem OK)
9
- if (strcmp(device_filter_unique_name, ctx->device_unique_nameotherDevType) == 0) {
10
+ if (!device_filter_unique_name || strcmp(device_filter_unique_name, ctx->device_unique_nameotherDevType) == 0) {
11
av_log(avctx, AV_LOG_DEBUG, "reusing previous graph capture filter... %s\n", device_filter_unique_name);
12
IBaseFilter_Release(device_filter);
13
device_filter = ctx->device_filterotherDevType;
14
15
av_log(avctx, AV_LOG_ERROR, "Could not create CaptureGraphBuilder2\n");
16
goto error;
17
}
18
- ICaptureGraphBuilder2_SetFiltergraph(graph_builder2, graph);
19
+ r = ICaptureGraphBuilder2_SetFiltergraph(graph_builder2, graph);
20
if (r != S_OK) {
21
av_log(avctx, AV_LOG_ERROR, "Could not set graph for CaptureGraphBuilder2\n");
22
goto error;
23
ffmpeg-3-3.4.13.tar.xz/libavdevice/dshow_filter.c -> ffmpeg-3-3.4.14.tar.xz/libavdevice/dshow_filter.c
Changed
10
1
2
3
this->info.pGraph = graph;
4
if (name)
5
- wcscpy(this->info.achName, name);
6
+ wcscpy_s(this->info.achName, sizeof(this->info.achName) / sizeof(wchar_t), name);
7
8
return S_OK;
9
}
10
ffmpeg-3-3.4.13.tar.xz/libavfilter/af_alimiter.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/af_alimiter.c
Changed
16
1
2
} else {
3
for (i = s->nextiter; i < s->nextiter + s->nextlen; i++) {
4
int j = i % buffer_size;
5
- double ppeak, pdelta;
6
+ double ppeak = 0, pdelta;
7
8
- ppeak = fabs(buffernextposj) > fabs(buffernextposj + 1) ?
9
- fabs(buffernextposj) : fabs(buffernextposj + 1);
10
+ if (nextposj >= 0)
11
+ ppeak = fabs(buffernextposj) > fabs(buffernextposj + 1) ?
12
+ fabs(buffernextposj) : fabs(buffernextposj + 1);
13
pdelta = (limit / peak - limit / ppeak) / (((buffer_size - nextposj + s->pos) % buffer_size) / channels);
14
if (pdelta < nextdeltaj) {
15
nextdeltaj = pdelta;
16
ffmpeg-3-3.4.13.tar.xz/libavfilter/af_pan.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/af_pan.c
Changed
25
1
2
if (ret < 0)
3
goto fail;
4
5
+ if (pan->nb_output_channels > MAX_CHANNELS) {
6
+ av_log(ctx, AV_LOG_ERROR,
7
+ "af_pan supports a maximum of %d channels. "
8
+ "Feel free to ask for a higher limit.\n", MAX_CHANNELS);
9
+ ret = AVERROR_PATCHWELCOME;
10
+ goto fail;
11
+ }
12
+
13
/* parse channel specifications */
14
while ((arg = arg0 = av_strtok(NULL, "|", &tokenizer))) {
15
/* channel name */
16
17
sign = 1;
18
while (1) {
19
gain = 1;
20
- if (sscanf(arg, "%lf%n *%n", &gain, &len, &len))
21
+ if (sscanf(arg, "%lf%n *%n", &gain, &len, &len) >= 1)
22
arg += len;
23
if (parse_channel_name(&arg, &in_ch_id, &named)){
24
av_log(ctx, AV_LOG_ERROR,
25
ffmpeg-3-3.4.13.tar.xz/libavfilter/af_stereowiden.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/af_stereowiden.c
Changed
10
1
2
3
s->length = s->delay * inlink->sample_rate / 1000;
4
s->length *= 2;
5
+ if (s->length == 0)
6
+ return AVERROR(EINVAL);
7
s->buffer = av_calloc(s->length, sizeof(*s->buffer));
8
if (!s->buffer)
9
return AVERROR(ENOMEM);
10
ffmpeg-3-3.4.13.tar.xz/libavfilter/signature_lookup.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/signature_lookup.c
Changed
94
1
2
#define STATUS_END_REACHED 1
3
#define STATUS_BEGIN_REACHED 2
4
5
+static void sll_free(MatchingInfo **sll)
6
+{
7
+ while (*sll) {
8
+ MatchingInfo *tmp = *sll;
9
+ *sll = tmp->next;
10
+ tmp->next = NULL;
11
+ av_free(tmp);
12
+ }
13
+}
14
+
15
static void fill_l1distlut(uint8_t lut)
16
{
17
int i, j, tmp_i, tmp_j,count;
18
19
if (!c->next)
20
av_log(ctx, AV_LOG_FATAL, "Could not allocate memory");
21
c = c->next;
22
+
23
+ }
24
+ if (!c) {
25
+ sll_free(&cands);
26
+ goto error;
27
}
28
c->framerateratio = (i+1.0) / 30;
29
c->score = hspaceij.score;
30
31
}
32
}
33
}
34
+ error:
35
for (i = 0; i < MAX_FRAMERATE; i++) {
36
av_freep(&hspacei);
37
}
38
39
}
40
41
if (tolerancecount > 2) {
42
- a = aprev;
43
- b = bprev;
44
if (dir == DIR_NEXT) {
45
/* turn around */
46
a = infos->first;
47
b = infos->second;
48
dir = DIR_PREV;
49
} else {
50
+ a = aprev;
51
+ b = bprev;
52
break;
53
}
54
}
55
56
continue; /* matching sequence is too short */
57
if ((double) goodfcount / (double) fcount < sc->thit)
58
continue;
59
- if ((double) goodfcount*0.5 < FFMAX(gooda, goodb))
60
+ if ((double) goodfcount*0.5 <= FFMAX(gooda, goodb))
61
continue;
62
63
- meandist = (double) goodfcount / (double) distsum;
64
+ meandist = (double) distsum / (double) goodfcount;
65
66
if (meandist < minmeandist ||
67
status == STATUS_END_REACHED | STATUS_BEGIN_REACHED ||
68
69
return bestmatch;
70
}
71
72
-static void sll_free(MatchingInfo *sll)
73
-{
74
- void *tmp;
75
- while (sll) {
76
- tmp = sll;
77
- sll = sll->next;
78
- av_freep(&tmp);
79
- }
80
-}
81
-
82
static MatchingInfo lookup_signatures(AVFilterContext *ctx, SignatureContext *sc, StreamContext *first, StreamContext *second, int mode)
83
{
84
CoarseSignature *cs, *cs2;
85
86
"ratio %f, offset %d, score %d, %d frames matching\n",
87
bestmatch.first->index, bestmatch.second->index,
88
bestmatch.framerateratio, bestmatch.offset, bestmatch.score, bestmatch.matchframes);
89
- sll_free(infos);
90
+ sll_free(&infos);
91
}
92
} while (find_next_coarsecandidate(sc, second->coarsesiglist, &cs, &cs2, 0) && !bestmatch.whole);
93
return bestmatch;
94
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_avgblur.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_avgblur.c
Changed
10
1
2
const int width = s->planewidthplane;
3
4
if (!(s->planes & (1 << plane))) {
5
- if (out != in)
6
+ if (out->dataplane != in->dataplane)
7
av_image_copy_plane(out->dataplane, out->linesizeplane,
8
in->dataplane, in->linesizeplane,
9
width * ((s->depth + 7) / 8), height);
10
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_bwdif.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_bwdif.c
Changed
18
1
2
if(s->mode&1)
3
link->frame_rate = av_mul_q(link->src->inputs0->frame_rate, (AVRational){2,1});
4
5
- if (link->w < 3 || link->h < 4) {
6
- av_log(ctx, AV_LOG_ERROR, "Video of less than 3 columns or 4 lines is not supported\n");
7
+ s->csp = av_pix_fmt_desc_get(link->format);
8
+
9
+ if (AV_CEIL_RSHIFT(link->w, s->csp->log2_chroma_w) < 3 || AV_CEIL_RSHIFT(link->h, s->csp->log2_chroma_h) < 4) {
10
+ av_log(ctx, AV_LOG_ERROR, "Video with planes less than 3 columns or 4 lines is not supported\n");
11
return AVERROR(EINVAL);
12
}
13
14
- s->csp = av_pix_fmt_desc_get(link->format);
15
if (s->csp->comp0.depth > 8) {
16
s->filter_intra = filter_intra_16bit;
17
s->filter_line = filter_line_c_16bit;
18
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_gradfun.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_gradfun.c
Changed
10
1
2
for (y = 0; y < r; y++)
3
ctx->blur_line(dc, buf + y * bstride, buf + (y - 1) * bstride, src + 2 * y * src_linesize, src_linesize, width / 2);
4
for (;;) {
5
- if (y < height - r) {
6
+ if (y + 1 < height - r) {
7
int mod = ((y + r) / 2) % r;
8
uint16_t *buf0 = buf + mod * bstride;
9
uint16_t *buf1 = buf + (mod ? mod - 1 : r - 1) * bstride;
10
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_minterpolate.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_minterpolate.c
Changed
17
1
2
pts = av_rescale(avf_out->pts, (int64_t) ALPHA_MAX * outlink->time_base.num * inlink->time_base.den,
3
(int64_t) outlink->time_base.den * inlink->time_base.num);
4
5
- alpha = (pts - mi_ctx->frames1.avf->pts * ALPHA_MAX) / (mi_ctx->frames2.avf->pts - mi_ctx->frames1.avf->pts);
6
- alpha = av_clip(alpha, 0, ALPHA_MAX);
7
+ if (mi_ctx->frames2.avf->pts > mi_ctx->frames1.avf->pts) {
8
+ alpha = (pts - mi_ctx->frames1.avf->pts * ALPHA_MAX) / (mi_ctx->frames2.avf->pts - mi_ctx->frames1.avf->pts);
9
+ alpha = av_clip(alpha, 0, ALPHA_MAX);
10
+ } else {
11
+ av_log(ctx, AV_LOG_DEBUG, "duplicate input PTS detected\n");
12
+ alpha = 0;
13
+ }
14
15
if (alpha == 0 || alpha == ALPHA_MAX) {
16
av_frame_copy(avf_out, alpha ? mi_ctx->frames2.avf : mi_ctx->frames1.avf);
17
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_rotate.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_rotate.c
Changed
12
1
2
double res;
3
char *expr;
4
5
- ff_draw_init(&rot->draw, inlink->format, 0);
6
+ ret = ff_draw_init(&rot->draw, inlink->format, 0);
7
+ if (ret < 0)
8
+ return ret;
9
ff_draw_color(&rot->draw, &rot->color, rot->fillcolor);
10
11
rot->hsub = pixdesc->log2_chroma_w;
12
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_signature.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_signature.c
Changed
11
1
2
FILE* f;
3
unsigned int pot35 = { 3*3*3*3, 3*3*3, 3*3, 3, 1 };
4
5
+ if (!sc->coarseend->last)
6
+ return AVERROR(EINVAL); // No frames ?
7
+
8
f = fopen(filename, "w");
9
if (!f) {
10
int err = AVERROR(EINVAL);
11
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_swaprect.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_swaprect.c
Changed
47
1
2
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3
*/
4
5
+#include "libavutil/avassert.h"
6
#include "libavutil/avstring.h"
7
#include "libavutil/eval.h"
8
#include "libavutil/imgutils.h"
9
10
w = dw; h = dh; x10 = dx1; y10 = dy1; x20 = dx2; y20 = dy2;
11
12
x10 = av_clip(x10, 0, inlink->w - 1);
13
- y10 = av_clip(y10, 0, inlink->w - 1);
14
+ y10 = av_clip(y10, 0, inlink->h - 1);
15
16
x20 = av_clip(x20, 0, inlink->w - 1);
17
- y20 = av_clip(y20, 0, inlink->w - 1);
18
+ y20 = av_clip(y20, 0, inlink->h - 1);
19
20
ah1 = ah2 = FF_CEIL_RSHIFT(h, s->desc->log2_chroma_h);
21
ah0 = ah3 = h;
22
23
lw1 = lw2 = FF_CEIL_RSHIFT(inlink->w, s->desc->log2_chroma_w);
24
lw0 = lw3 = inlink->w;
25
26
- x11 = x12 = FF_CEIL_RSHIFT(x10, s->desc->log2_chroma_w);
27
+ x11 = x12 = (x10 >> s->desc->log2_chroma_w);
28
x10 = x13 = x10;
29
- y11 = y12 = FF_CEIL_RSHIFT(y10, s->desc->log2_chroma_h);
30
+ y11 = y12 = (y10 >> s->desc->log2_chroma_h);
31
y10 = y13 = y10;
32
33
- x21 = x22 = FF_CEIL_RSHIFT(x20, s->desc->log2_chroma_w);
34
+ x21 = x22 = (x20 >> s->desc->log2_chroma_w);
35
x20 = x23 = x20;
36
- y21 = y22 = FF_CEIL_RSHIFT(y20, s->desc->log2_chroma_h);
37
+ y21 = y22 = (y20 >> s->desc->log2_chroma_h);
38
y20 = y23 = y20;
39
40
+
41
+ av_assert0(FFMAX(x11, x21) + pw1 <= lw1);
42
+ av_assert0(FFMAX(y11, y21) + ph1 <= lh1);
43
+
44
for (p = 0; p < s->nb_planes; p++) {
45
if (php == ahp && pwp == awp) {
46
uint8_t *src = in->datap + y1p * in->linesizep + x1p * s->pixstepsp;
47
ffmpeg-3-3.4.13.tar.xz/libavfilter/vf_vidstabdetect.c -> ffmpeg-3-3.4.14.tar.xz/libavfilter/vf_vidstabdetect.c
Changed
10
1
2
}
3
if (vsMotionDetection(md, &localmotions, &frame) != VS_OK) {
4
av_log(ctx, AV_LOG_ERROR, "motion detection failed");
5
- return AVERROR(AVERROR_EXTERNAL);
6
+ return AVERROR_EXTERNAL;
7
} else {
8
if (vsWriteToFile(md, s->f, &localmotions) != VS_OK) {
9
int ret = AVERROR(errno);
10
ffmpeg-3-3.4.13.tar.xz/libavformat/ape.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/ape.c
Changed
10
1
2
final_size -= final_size & 3;
3
}
4
if (file_size <= 0 || final_size <= 0)
5
- final_size = ape->finalframeblocks * 8;
6
+ final_size = ape->finalframeblocks * 8LL;
7
ape->framesape->totalframes - 1.size = final_size;
8
9
for (i = 0; i < ape->totalframes; i++) {
10
ffmpeg-3-3.4.13.tar.xz/libavformat/apetag.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/apetag.c
Changed
11
1
2
3
avio_seek(pb, file_size - APE_TAG_FOOTER_BYTES, SEEK_SET);
4
5
- avio_read(pb, buf, 8); /* APETAGEX */
6
+ if(avio_read(pb, buf, 8) != 8) /* APETAGEX */
7
+ return 0;
8
if (strncmp(buf, APE_TAG_PREAMBLE, 8)) {
9
return 0;
10
}
11
ffmpeg-3-3.4.13.tar.xz/libavformat/asfdec_o.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/asfdec_o.c
Changed
11
1
2
int64_t offset;
3
uint64_t size = avio_rl64(pb);
4
5
+ if (size < 24)
6
+ return AVERROR_INVALIDDATA;
7
+
8
// simple index objects should be ordered by stream number, this loop tries to find
9
// the first not indexed video stream
10
for (i = 0; i < asf->nb_streams; i++) {
11
ffmpeg-3-3.4.13.tar.xz/libavformat/avr.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/avr.c
Changed
11
1
2
avio_skip(s->pb, 1); // replay speed
3
4
st->codecpar->sample_rate = avio_rb24(s->pb);
5
+ if (st->codecpar->sample_rate == 0)
6
+ return AVERROR_INVALIDDATA;
7
+
8
avio_skip(s->pb, 4 * 3);
9
avio_skip(s->pb, 2 * 3);
10
avio_skip(s->pb, 20);
11
ffmpeg-3-3.4.13.tar.xz/libavformat/avs.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/avs.c
Changed
12
1
2
return 0; /* this indicate EOS */
3
if (ret < 0)
4
return ret;
5
+ if (size != (int)size) {
6
+ av_packet_unref(pkt);
7
+ return AVERROR(EDOM);
8
+ }
9
10
pkt->stream_index = avs->st_audio->index;
11
pkt->flags |= AV_PKT_FLAG_KEY;
12
ffmpeg-3-3.4.13.tar.xz/libavformat/cafdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/cafdec.c
Changed
20
1
2
}
3
}
4
5
- if (avio_tell(pb) - ccount > size) {
6
+ if (avio_tell(pb) - ccount > size || size > INT64_MAX - ccount) {
7
av_log(s, AV_LOG_ERROR, "error reading packet table\n");
8
return AVERROR_INVALIDDATA;
9
}
10
11
avio_skip(pb, 4); /* edit count */
12
caf->data_start = avio_tell(pb);
13
caf->data_size = size < 0 ? -1 : size - 4;
14
+ if (caf->data_start < 0 || caf->data_size > INT64_MAX - caf->data_start)
15
+ return AVERROR_INVALIDDATA;
16
+
17
if (caf->data_size > 0 && (pb->seekable & AVIO_SEEKABLE_NORMAL))
18
avio_skip(pb, caf->data_size);
19
found_data = 1;
20
ffmpeg-3-3.4.13.tar.xz/libavformat/dxa.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/dxa.c
Changed
15
1
2
avio_skip(pb, fsize);
3
}
4
c->bpc = (fsize + (int64_t)c->frames - 1) / c->frames;
5
+ if (c->bpc < 0)
6
+ return AVERROR_INVALIDDATA;
7
if(ast->codecpar->block_align) {
8
if (c->bpc > INT_MAX - ast->codecpar->block_align + 1)
9
return AVERROR_INVALIDDATA;
10
- c->bpc = ((c->bpc + ast->codecpar->block_align - 1) / ast->codecpar->block_align) * ast->codecpar->block_align;
11
+ c->bpc = ((c->bpc - 1 + ast->codecpar->block_align) / ast->codecpar->block_align) * ast->codecpar->block_align;
12
}
13
c->bytes_left = fsize;
14
c->wavpos = avio_tell(pb);
15
ffmpeg-3-3.4.13.tar.xz/libavformat/flacdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/flacdec.c
Changed
10
1
2
/* process metadata blocks */
3
while (!avio_feof(s->pb) && !metadata_last) {
4
if (avio_read(s->pb, header, 4) != 4)
5
- return AVERROR(AVERROR_INVALIDDATA);
6
+ return AVERROR_INVALIDDATA;
7
flac_parse_block_header(header, &metadata_last, &metadata_type,
8
&metadata_size);
9
switch (metadata_type) {
10
ffmpeg-3-3.4.13.tar.xz/libavformat/format.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/format.c
Changed
26
1
2
int ret = 0, probe_size, buf_offset = 0;
3
int score = 0;
4
int ret2;
5
+ int eof = 0;
6
7
if (!max_probe_size)
8
max_probe_size = PROBE_BUF_MAX;
9
10
}
11
#endif
12
13
- for (probe_size = PROBE_BUF_MIN; probe_size <= max_probe_size && !*fmt;
14
+ for (probe_size = PROBE_BUF_MIN; probe_size <= max_probe_size && !*fmt && !eof;
15
probe_size = FFMIN(probe_size << 1,
16
FFMAX(max_probe_size, probe_size + 1))) {
17
score = probe_size < max_probe_size ? AVPROBE_SCORE_RETRY : 0;
18
19
20
score = 0;
21
ret = 0; /* error was end of file, nothing read */
22
+ eof = 1;
23
}
24
buf_offset += ret;
25
if (buf_offset < offset)
26
ffmpeg-3-3.4.13.tar.xz/libavformat/hnm.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/hnm.c
Changed
19
1
2
if (hnm->superchunk_remaining == 0) {
3
/* parse next superchunk */
4
superchunk_size = avio_rl24(pb);
5
+ if (superchunk_size < 4)
6
+ return AVERROR_INVALIDDATA;
7
avio_skip(pb, 1);
8
9
hnm->superchunk_remaining = superchunk_size - 4;
10
11
chunk_id = avio_rl16(pb);
12
avio_skip(pb, 2);
13
14
- if (chunk_size > hnm->superchunk_remaining || !chunk_size) {
15
+ if (chunk_size > hnm->superchunk_remaining || chunk_size < 8) {
16
av_log(s, AV_LOG_ERROR,
17
"invalid chunk size: %"PRIu32", offset: %"PRId64"\n",
18
chunk_size, avio_tell(pb));
19
ffmpeg-3-3.4.13.tar.xz/libavformat/icodec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/icodec.c
Changed
10
1
2
AV_WL32(buf + 32, image->nb_pal);
3
}
4
5
- if (image->nb_pal > INT_MAX / 4 - 14 - 40)
6
+ if (image->nb_pal > INT_MAX / 4 - 14 - 40U)
7
return AVERROR_INVALIDDATA;
8
9
AV_WL32(buf - 4, 14 + 40 + image->nb_pal * 4);
10
ffmpeg-3-3.4.13.tar.xz/libavformat/id3v2.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/id3v2.c
Changed
10
1
2
int encoding;
3
int ok = 0;
4
5
- if (taglen < 1)
6
+ if (taglen < 4)
7
goto error;
8
9
encoding = avio_r8(pb);
10
ffmpeg-3-3.4.13.tar.xz/libavformat/iff.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/iff.c
Changed
11
1
2
uint64_t chunk_pos, data_pos, data_size;
3
int ret = AVERROR_EOF;
4
5
+ if (s->nb_streams < 1)
6
+ return AVERROR_INVALIDDATA;
7
+
8
while (!avio_feof(pb)) {
9
chunk_pos = avio_tell(pb);
10
if (chunk_pos >= iff->body_end)
11
ffmpeg-3-3.4.13.tar.xz/libavformat/ilbc.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/ilbc.c
Changed
11
1
2
AVStream *st;
3
uint8_t header9;
4
5
- avio_read(pb, header, 9);
6
+ if (avio_read(pb, header, 9) != 9)
7
+ return AVERROR_INVALIDDATA;
8
9
st = avformat_new_stream(s, NULL);
10
if (!st)
11
ffmpeg-3-3.4.13.tar.xz/libavformat/img2dec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/img2dec.c
Changed
41
1
2
#define _DEFAULT_SOURCE
3
#define _BSD_SOURCE
4
#include <sys/stat.h>
5
+#include "libavutil/avassert.h"
6
#include "libavutil/avstring.h"
7
#include "libavutil/log.h"
8
#include "libavutil/opt.h"
9
10
pkt->flags |= AV_PKT_FLAG_KEY;
11
if (s->ts_from_file) {
12
struct stat img_stat;
13
+ av_assert0(!s->is_pipe); // The ts_from_file option is not supported by piped input demuxers
14
if (stat(filename, &img_stat)) {
15
res = AVERROR(EIO);
16
goto fail;
17
18
}
19
goto fail;
20
} else {
21
+ memset(pkt->data + pkt->size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
22
s->img_count++;
23
s->img_number++;
24
s->pts++;
25
26
return 0;
27
state = EOI;
28
break;
29
- case DQT:
30
case APP0:
31
case APP1:
32
case APP2:
33
34
case APP13:
35
case APP14:
36
case APP15:
37
+ case DQT: /* fallthrough */
38
case COM:
39
i += AV_RB16(&bi + 2) + 1;
40
break;
41
ffmpeg-3-3.4.13.tar.xz/libavformat/ipmovie.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/ipmovie.c
Changed
11
1
2
3
ipmovie->avf = s;
4
5
- avio_read(pb, signature_buffer, sizeof(signature_buffer));
6
+ if (avio_read(pb, signature_buffer, sizeof(signature_buffer)) != sizeof(signature_buffer))
7
+ return AVERROR_INVALIDDATA;
8
while (memcmp(signature_buffer, signature, sizeof(signature))) {
9
memmove(signature_buffer, signature_buffer + 1, sizeof(signature_buffer) - 1);
10
signature_buffersizeof(signature_buffer) - 1 = avio_r8(pb);
11
ffmpeg-3-3.4.13.tar.xz/libavformat/jacosubdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/jacosubdec.c
Changed
23
1
2
}
3
av_bprintf(&header, "#S %s", p);
4
break;
5
- case 'T': // ...but must be placed after TIMERES
6
- jacosub->timeres = strtol(p, NULL, 10);
7
- if (!jacosub->timeres)
8
+ case 'T': { // ...but must be placed after TIMERES
9
+ int64_t timeres = strtol(p, NULL, 10);
10
+ if (timeres <= 0 || timeres > UINT32_MAX) {
11
jacosub->timeres = 30;
12
- else
13
+ } else {
14
+ jacosub->timeres = timeres;
15
av_bprintf(&header, "#T %s", p);
16
+ }
17
break;
18
}
19
+ }
20
}
21
22
/* general/essential directives in the extradata */
23
ffmpeg-3-3.4.13.tar.xz/libavformat/lmlm4.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/lmlm4.c
Changed
20
1
2
3
if (frame_type > LMLM4_MPEG1L2 || frame_type == LMLM4_INVALID) {
4
av_log(s, AV_LOG_ERROR, "invalid or unsupported frame_type\n");
5
- return AVERROR(EIO);
6
+ return AVERROR_INVALIDDATA;
7
}
8
if (packet_size > LMLM4_MAX_PACKET_SIZE || packet_size<=8) {
9
av_log(s, AV_LOG_ERROR, "packet size %d is invalid\n", packet_size);
10
- return AVERROR(EIO);
11
+ return AVERROR_INVALIDDATA;
12
}
13
14
if ((ret = av_get_packet(pb, pkt, frame_size)) <= 0)
15
- return AVERROR(EIO);
16
+ return ret < 0 ? ret : AVERROR(EIO);
17
18
avio_skip(pb, padding);
19
20
ffmpeg-3-3.4.13.tar.xz/libavformat/matroskadec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/matroskadec.c
Changed
56
1
2
3
if (track->time_scale < 0.01)
4
track->time_scale = 1.0;
5
+
6
+ if (matroska->time_scale * track->time_scale > UINT_MAX)
7
+ return AVERROR_INVALIDDATA;
8
+
9
avpriv_set_pts_info(st, 64, matroska->time_scale * track->time_scale,
10
1000 * 1000 * 1000); /* 64 bit pts in ns */
11
12
13
int64_t prebuffer_ns = 1000000000;
14
int64_t time_ns = st->index_entriesi.timestamp * matroska->time_scale;
15
double nano_seconds_per_second = 1000000000.0;
16
- int64_t prebuffered_ns = time_ns + prebuffer_ns;
17
+ int64_t prebuffered_ns;
18
double prebuffer_bytes = 0.0;
19
int64_t temp_prebuffer_ns = prebuffer_ns;
20
int64_t pre_bytes, pre_ns;
21
double pre_sec, prebuffer, bits_per_second;
22
CueDesc desc_beg = get_cue_desc(s, time_ns, cues_start);
23
-
24
// Start with the first Cue.
25
CueDesc desc_end = desc_beg;
26
27
+ if (time_ns > INT64_MAX - prebuffer_ns)
28
+ return -1;
29
+ prebuffered_ns = time_ns + prebuffer_ns;
30
+
31
// Figure out how much data we have downloaded for the prebuffer. This will
32
// be used later to adjust the bits per sample to try.
33
while (desc_end.start_time_ns != -1 && desc_end.end_time_ns < prebuffered_ns) {
34
35
// The prebuffer ends in the last Cue. Estimate how much data was
36
// prebuffered.
37
pre_bytes = desc_end.end_offset - desc_end.start_offset;
38
- pre_ns = desc_end.end_time_ns - desc_end.start_time_ns;
39
- if (pre_ns <= 0)
40
+ if (desc_end.end_time_ns <= desc_end.start_time_ns ||
41
+ desc_end.end_time_ns - (uint64_t)desc_end.start_time_ns > INT64_MAX)
42
return -1;
43
+ pre_ns = desc_end.end_time_ns - desc_end.start_time_ns;
44
pre_sec = pre_ns / nano_seconds_per_second;
45
prebuffer_bytes +=
46
pre_bytes * ((temp_prebuffer_ns / nano_seconds_per_second) / pre_sec);
47
48
int64_t desc_bytes = desc_end.end_offset - desc_beg.start_offset;
49
int64_t desc_ns = desc_end.end_time_ns - desc_beg.start_time_ns;
50
double desc_sec, calc_bits_per_second, percent, mod_bits_per_second;
51
- if (desc_bytes <= 0)
52
+ if (desc_bytes <= 0 || desc_bytes > INT64_MAX/8)
53
return -1;
54
55
desc_sec = desc_ns / nano_seconds_per_second;
56
ffmpeg-3-3.4.13.tar.xz/libavformat/mlvdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mlvdec.c
Changed
49
1
2
static void read_string(AVFormatContext *avctx, AVIOContext *pb, const char *tag, unsigned size)
3
{
4
char * value = av_malloc(size + 1);
5
+ int ret;
6
+
7
if (!value) {
8
avio_skip(pb, size);
9
return;
10
}
11
12
- avio_read(pb, value, size);
13
- if (!value0) {
14
+ ret = avio_read(pb, value, size);
15
+ if (ret != size || !value0) {
16
av_free(value);
17
return;
18
}
19
20
if (size < 16)
21
return AVERROR_INVALIDDATA;
22
avio_skip(pb, 12); //timestamp, frameNumber
23
- if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO)
24
+ size -= 12;
25
+ if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
26
+ if (size < 8)
27
+ return AVERROR_INVALIDDATA;
28
avio_skip(pb, 8); // cropPosX, cropPosY, panPosX, panPosY
29
+ size -= 8;
30
+ }
31
space = avio_rl32(pb);
32
+ if (size < space + 4LL)
33
+ return AVERROR_INVALIDDATA;
34
avio_skip(pb, space);
35
+ size -= space;
36
37
if ((mlv->classst->id & (MLV_CLASS_FLAG_DELTA|MLV_CLASS_FLAG_LZMA))) {
38
ret = AVERROR_PATCHWELCOME;
39
} else if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
40
ret = av_get_packet(pb, pkt, (st->codecpar->width * st->codecpar->height * st->codecpar->bits_per_coded_sample + 7) >> 3);
41
} else { // AVMEDIA_TYPE_AUDIO
42
- if (space > UINT_MAX - 24 || size < (24 + space))
43
- return AVERROR_INVALIDDATA;
44
- ret = av_get_packet(pb, pkt, size - (24 + space));
45
+ ret = av_get_packet(pb, pkt, size - 4);
46
}
47
48
if (ret < 0)
49
ffmpeg-3-3.4.13.tar.xz/libavformat/mm.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mm.c
Changed
10
1
2
type = avio_rl16(pb);
3
length = avio_rl32(pb);
4
5
- if (type != MM_TYPE_HEADER)
6
+ if (type != MM_TYPE_HEADER || length < 10)
7
return AVERROR_INVALIDDATA;
8
9
/* read header */
10
ffmpeg-3-3.4.13.tar.xz/libavformat/mov.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mov.c
Changed
66
1
2
char *str = NULL;
3
const char *key = NULL;
4
uint16_t langcode = 0;
5
- uint32_t data_type = 0, str_size, str_size_alloc;
6
+ uint32_t data_type = 0, str_size_alloc;
7
+ uint64_t str_size;
8
int (*parse)(MOVContext*, AVIOContext*, unsigned, const char*) = NULL;
9
int raw = 0;
10
int num = 0;
11
12
int ret = ffio_read_size(pb, type, 4);
13
if (ret < 0)
14
return ret;
15
+ if (c->fc->nb_streams) {
16
+ if (c->fc->strict_std_compliance >= FF_COMPLIANCE_STRICT)
17
+ return AVERROR_INVALIDDATA;
18
+ av_log(c->fc, AV_LOG_DEBUG, "Ignoring duplicate FTYP\n");
19
+ return 0;
20
+ }
21
22
if (strcmp(type, "qt "))
23
c->isom = 1;
24
25
for (i = 0; i < entries && !pb->eof_reached; i++)
26
sc->chunk_offsetsi = avio_rb32(pb);
27
else if (atom.type == MKTAG('c','o','6','4'))
28
- for (i = 0; i < entries && !pb->eof_reached; i++)
29
+ for (i = 0; i < entries && !pb->eof_reached; i++) {
30
sc->chunk_offsetsi = avio_rb64(pb);
31
+ if (sc->chunk_offsetsi < 0) {
32
+ av_log(c->fc, AV_LOG_WARNING, "Impossible chunk_offset\n");
33
+ sc->chunk_offsetsi = 0;
34
+ }
35
+ }
36
else
37
return AVERROR_INVALIDDATA;
38
39
40
}
41
*edit_list_duration = av_rescale(*edit_list_duration, msc->time_scale,
42
global_timescale);
43
+
44
+ if (*edit_list_duration + (uint64_t)*edit_list_media_time > INT64_MAX)
45
+ *edit_list_duration = 0;
46
+
47
return 1;
48
}
49
50
51
if (msc->pb && msc->current_sample < avst->nb_index_entries) {
52
AVIndexEntry *current_sample = &avst->index_entriesmsc->current_sample;
53
int64_t dts = av_rescale(current_sample->timestamp, AV_TIME_BASE, msc->time_scale);
54
+ uint64_t dtsdiff = best_dts > dts ? best_dts - (uint64_t)dts : ((uint64_t)dts - best_dts);
55
av_log(s, AV_LOG_TRACE, "stream %d, sample %d, dts %"PRId64"\n", i, msc->current_sample, dts);
56
if (!sample || (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL) && current_sample->pos < sample->pos) ||
57
((s->pb->seekable & AVIO_SEEKABLE_NORMAL) &&
58
((msc->pb != s->pb && dts < best_dts) || (msc->pb == s->pb && dts != AV_NOPTS_VALUE &&
59
- ((FFABS(best_dts - dts) <= AV_TIME_BASE && current_sample->pos < sample->pos) ||
60
- (FFABS(best_dts - dts) > AV_TIME_BASE && dts < best_dts)))))) {
61
+ ((dtsdiff <= AV_TIME_BASE && current_sample->pos < sample->pos) ||
62
+ (dtsdiff > AV_TIME_BASE && dts < best_dts)))))) {
63
sample = current_sample;
64
best_dts = dts;
65
*st = avst;
66
ffmpeg-3-3.4.13.tar.xz/libavformat/movenc.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/movenc.c
Changed
14
1
2
if (ret < 0)
3
return ret;
4
5
+ if (pkt->pts != AV_NOPTS_VALUE &&
6
+ (uint64_t)pkt->dts - pkt->pts != (int32_t)((uint64_t)pkt->dts - pkt->pts)) {
7
+ av_log(s, AV_LOG_WARNING, "pts/dts pair unsupported\n");
8
+ return AVERROR_PATCHWELCOME;
9
+ }
10
+
11
if (mov->flags & FF_MOV_FLAG_FRAGMENT) {
12
int ret;
13
if (mov->moov_written || mov->flags & FF_MOV_FLAG_EMPTY_MOOV) {
14
ffmpeg-3-3.4.13.tar.xz/libavformat/mp3dec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mp3dec.c
Changed
22
1
2
int fill_index = (mp3->usetoc || fast_seek) && duration > 0;
3
4
if (!filesize &&
5
- !(filesize = avio_size(s->pb))) {
6
+ (filesize = avio_size(s->pb)) <= 0) {
7
av_log(s, AV_LOG_WARNING, "Cannot determine file size, skipping TOC table.\n");
8
fill_index = 0;
9
+ filesize = 0;
10
}
11
12
for (i = 0; i < XING_TOC_COUNT; i++) {
13
14
if (best_pos < 0)
15
return best_pos;
16
17
- if (mp3->is_cbr && ie == &ie1 && mp3->frames) {
18
+ if (mp3->is_cbr && ie == &ie1 && mp3->frames && mp3->header_filesize > 0) {
19
int frame_duration = av_rescale(st->duration, 1, mp3->frames);
20
ie1.timestamp = frame_duration * av_rescale(best_pos - s->internal->data_offset, mp3->frames, mp3->header_filesize);
21
}
22
ffmpeg-3-3.4.13.tar.xz/libavformat/mpeg.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mpeg.c
Changed
22
1
2
int pes = endpes <= i && check_pes(p->buf + i, p->buf + p->buf_size);
3
int pack = check_pack_header(p->buf + i);
4
5
+ if (len > INT_MAX - i)
6
+ break;
7
+
8
if (code == SYSTEM_HEADER_START_CODE)
9
sys++;
10
else if (code == PACK_START_CODE && pack)
11
12
static const unsigned char avs_seqh4 = { 0, 0, 1, 0xb0 };
13
unsigned char buf8;
14
15
- avio_read(s->pb, buf, 8);
16
+ ret = avio_read(s->pb, buf, 8);
17
+ if (ret != 8)
18
+ return AVERROR_INVALIDDATA;
19
avio_seek(s->pb, -8, SEEK_CUR);
20
if (!memcmp(buf, avs_seqh, 4) && (buf6 != 0 || buf7 != 1))
21
codec_id = AV_CODEC_ID_CAVS;
22
ffmpeg-3-3.4.13.tar.xz/libavformat/mpegts.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mpegts.c
Changed
10
1
2
MP4DescrParseContext d;
3
int ret;
4
5
+ d.predefined_SLConfigDescriptor_seen = 0;
6
+
7
ret = init_MP4DescrParseContext(&d, s, buf, size, descr, max_descr_count);
8
if (ret < 0)
9
return ret;
10
ffmpeg-3-3.4.13.tar.xz/libavformat/mxfdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/mxfdec.c
Changed
68
1
2
typedef struct MXFIndexTableSegment {
3
UID uid;
4
enum MXFMetadataSetType type;
5
- int edit_unit_byte_count;
6
+ unsigned edit_unit_byte_count;
7
int index_sid;
8
int body_sid;
9
AVRational index_edit_rate;
10
11
if (size < 32 || size - 32 < orig_size || (int)orig_size != orig_size)
12
return AVERROR_INVALIDDATA;
13
avio_read(pb, ivec, 16);
14
- avio_read(pb, tmpbuf, 16);
15
+ if (avio_read(pb, tmpbuf, 16) != 16)
16
+ return AVERROR_INVALIDDATA;
17
if (mxf->aesc)
18
av_aes_crypt(mxf->aesc, tmpbuf, tmpbuf, 1, ivec, 1);
19
if (memcmp(tmpbuf, checkv, 16))
20
21
case 0x3F0B:
22
segment->index_edit_rate.num = avio_rb32(pb);
23
segment->index_edit_rate.den = avio_rb32(pb);
24
+ if (segment->index_edit_rate.num <= 0 ||
25
+ segment->index_edit_rate.den <= 0)
26
+ return AVERROR_INVALIDDATA;
27
av_log(NULL, AV_LOG_TRACE, "IndexEditRate %d/%d\n", segment->index_edit_rate.num,
28
segment->index_edit_rate.den);
29
break;
30
31
if (size <= 17)
32
return 0;
33
34
- avio_read(pb, key, 17);
35
+ if (avio_read(pb, key, 17) != 17)
36
+ return AVERROR_INVALIDDATA;
37
/* TODO: handle other types of of indirect values */
38
if (memcmp(key, mxf_indirect_value_utf16le, 17) == 0) {
39
return mxf_read_utf16le_string(pb, size - 17, &tagged_value->value);
40
41
if (edit_unit < s->index_start_position + s->index_duration) {
42
int64_t index = edit_unit - s->index_start_position;
43
44
- if (s->edit_unit_byte_count)
45
+ if (s->edit_unit_byte_count) {
46
+ if (index > INT64_MAX / s->edit_unit_byte_count ||
47
+ s->edit_unit_byte_count * index > INT64_MAX - offset_temp)
48
+ return AVERROR_INVALIDDATA;
49
+
50
offset_temp += s->edit_unit_byte_count * index;
51
- else if (s->nb_index_entries) {
52
+ } else if (s->nb_index_entries) {
53
if (s->nb_index_entries == 2 * s->index_duration + 1)
54
index *= 2; /* Avid index */
55
56
57
return mxf_absolute_bodysid_offset(mxf, index_table->body_sid, offset_temp, offset_out);
58
} else {
59
/* EditUnitByteCount == 0 for VBR indexes, which is fine since they use explicit StreamOffsets */
60
+ if (s->edit_unit_byte_count && (s->index_duration > INT64_MAX / s->edit_unit_byte_count ||
61
+ s->edit_unit_byte_count * s->index_duration > INT64_MAX - offset_temp)
62
+ )
63
+ return AVERROR_INVALIDDATA;
64
+
65
offset_temp += s->edit_unit_byte_count * s->index_duration;
66
}
67
}
68
ffmpeg-3-3.4.13.tar.xz/libavformat/nistspheredec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/nistspheredec.c
Changed
10
1
2
3
static int nist_read_header(AVFormatContext *s)
4
{
5
- char buffer256, coding32 = "pcm", format32 = "01";
6
+ char buffer256= {0}, coding32 = "pcm", format32 = "01";
7
int bps = 0, be = 0;
8
int32_t header_size = -1;
9
AVStream *st;
10
ffmpeg-3-3.4.13.tar.xz/libavformat/nsvdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/nsvdec.c
Changed
10
1
2
pkt = &nsv->aheadNSV_ST_AUDIO;
3
/* read raw audio specific header on the first audio chunk... */
4
/* on ALL audio chunks ?? seems so! */
5
- if (asize && stNSV_ST_AUDIO->codecpar->codec_tag == MKTAG('P', 'C', 'M', ' ')/* && fill_header*/) {
6
+ if (asize >= 4 && stNSV_ST_AUDIO->codecpar->codec_tag == MKTAG('P', 'C', 'M', ' ')/* && fill_header*/) {
7
uint8_t bps;
8
uint8_t channels;
9
uint16_t samplerate;
10
ffmpeg-3-3.4.13.tar.xz/libavformat/rdt.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/rdt.c
Changed
10
1
2
return -1; /* not followed by a data packet */
3
4
pkt_len = AV_RB16(buf+3);
5
+ if (pkt_len > len)
6
+ return AVERROR_INVALIDDATA;
7
buf += pkt_len;
8
len -= pkt_len;
9
consumed += pkt_len;
10
ffmpeg-3-3.4.13.tar.xz/libavformat/rmdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/rmdec.c
Changed
23
1
2
st->codecpar->channels = avio_rb16(pb);
3
if (version == 5) {
4
ast->deint_id = avio_rl32(pb);
5
- avio_read(pb, buf, 4);
6
+ if (avio_read(pb, buf, 4) != 4)
7
+ return AVERROR_INVALIDDATA;
8
buf4 = 0;
9
} else {
10
AV_WL32(buf, 0);
11
12
case DEINT_ID_INT4:
13
if (ast->coded_framesize > ast->audio_framesize ||
14
sub_packet_h <= 1 ||
15
- ast->coded_framesize * (uint64_t)sub_packet_h > (2 + (sub_packet_h & 1)) * ast->audio_framesize)
16
+ ast->coded_framesize * (uint64_t)sub_packet_h > (2LL + (sub_packet_h & 1)) * ast->audio_framesize)
17
return AVERROR_INVALIDDATA;
18
- if (ast->coded_framesize * (uint64_t)sub_packet_h != 2*ast->audio_framesize) {
19
+ if (ast->coded_framesize * (uint64_t)sub_packet_h != 2LL*ast->audio_framesize) {
20
avpriv_request_sample(s, "mismatching interleaver parameters");
21
return AVERROR_INVALIDDATA;
22
}
23
ffmpeg-3-3.4.13.tar.xz/libavformat/rpl.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/rpl.c
Changed
38
1
2
line++;
3
for (; *line>='0' && *line<='9'; line++) {
4
// Truncate any numerator too large to fit into an int64_t
5
- if (num > (INT64_MAX - 9) / 10 || den > INT64_MAX / 10)
6
+ if (num > (INT64_MAX - 9) / 10ULL || den > INT64_MAX / 10ULL)
7
break;
8
num = 10 * num + (*line - '0');
9
den *= 10;
10
11
AVIOContext *pb = s->pb;
12
RPLContext *rpl = s->priv_data;
13
AVStream *vst = NULL, *ast = NULL;
14
- int total_audio_size;
15
+ int64_t total_audio_size;
16
int error = 0;
17
18
uint32_t i;
19
20
"Video stream will be broken!\n", av_fourcc2str(vst->codecpar->codec_tag));
21
22
number_of_chunks = read_line_and_int(pb, &error); // number of chunks in the file
23
+ if (number_of_chunks == INT_MAX)
24
+ return AVERROR_INVALIDDATA;
25
+
26
// The number in the header is actually the index of the last chunk.
27
number_of_chunks++;
28
29
30
if (ast)
31
av_add_index_entry(ast, offset + video_size, total_audio_size,
32
audio_size, audio_size * 8, 0);
33
+ if (total_audio_size/8 + (uint64_t)audio_size >= INT64_MAX/8)
34
+ return AVERROR_INVALIDDATA;
35
total_audio_size += audio_size * 8;
36
}
37
38
ffmpeg-3-3.4.13.tar.xz/libavformat/rtmppkt.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/rtmppkt.c
Changed
25
1
2
{
3
AMFDataType type;
4
unsigned nb = -1;
5
- int parse_key = 1;
6
7
if (bytestream2_get_bytes_left(gb) < 1)
8
return -1;
9
10
bytestream2_skip(gb, 10);
11
return 0;
12
case AMF_DATA_TYPE_ARRAY:
13
- parse_key = 0;
14
case AMF_DATA_TYPE_MIXEDARRAY:
15
nb = bytestream2_get_be32(gb);
16
case AMF_DATA_TYPE_OBJECT:
17
- while (nb-- > 0 || type != AMF_DATA_TYPE_ARRAY) {
18
+ while (type != AMF_DATA_TYPE_ARRAY || nb-- > 0) {
19
int t;
20
- if (parse_key) {
21
+ if (type != AMF_DATA_TYPE_ARRAY) {
22
int size = bytestream2_get_be16(gb);
23
if (!size) {
24
bytestream2_get_byte(gb);
25
ffmpeg-3-3.4.13.tar.xz/libavformat/rtpenc_vc2hq.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/rtpenc_vc2hq.c
Changed
52
1
2
ff_rtp_send_data(ctx, rtp_ctx->buf, RTP_VC2HQ_PL_HEADER_SIZE + info_hdr_size + size, rtp_m);
3
}
4
5
-static void send_picture(AVFormatContext *ctx, const uint8_t *buf, int size, int interlaced)
6
+static int send_picture(AVFormatContext *ctx, const uint8_t *buf, int size, int interlaced)
7
{
8
RTPMuxContext *rtp_ctx = ctx->priv_data;
9
GetBitContext gc;
10
11
uint16_t frag_len;
12
char *info_hdr = &rtp_ctx->buf4;
13
14
+ if (size < DIRAC_PIC_NR_SIZE)
15
+ return AVERROR(EINVAL);
16
+
17
pic_nr = AV_RB32(&buf0);
18
buf += DIRAC_PIC_NR_SIZE;
19
size -= DIRAC_PIC_NR_SIZE;
20
21
send_packet(ctx, DIRAC_RTP_PCODE_HQ_PIC_FRAGMENT, 16, buf, frag_len, interlaced, second_field, size > 0 ? 0 : 1);
22
buf += frag_len;
23
}
24
+ return 0;
25
}
26
27
void ff_rtp_send_vc2hq(AVFormatContext *ctx, const uint8_t *frame_buf, int frame_size, int interlaced)
28
29
parse_code = unit4;
30
unit_size = AV_RB32(&unit5);
31
32
+ if (unit_size > end - unit)
33
+ break;
34
+
35
switch (parse_code) {
36
/* sequence header */
37
/* end of sequence */
38
case DIRAC_PCODE_SEQ_HEADER:
39
case DIRAC_PCODE_END_SEQ:
40
- send_packet(ctx, parse_code, 0, unit + DIRAC_DATA_UNIT_HEADER_SIZE, unit_size - DIRAC_DATA_UNIT_HEADER_SIZE, 0, 0, 0);
41
+ if (unit_size >= DIRAC_DATA_UNIT_HEADER_SIZE)
42
+ send_packet(ctx, parse_code, 0, unit + DIRAC_DATA_UNIT_HEADER_SIZE, unit_size - DIRAC_DATA_UNIT_HEADER_SIZE, 0, 0, 0);
43
break;
44
/* HQ picture */
45
case DIRAC_PCODE_PICTURE_HQ:
46
- send_picture(ctx, unit + DIRAC_DATA_UNIT_HEADER_SIZE, unit_size - DIRAC_DATA_UNIT_HEADER_SIZE, interlaced);
47
+ if (unit_size >= DIRAC_DATA_UNIT_HEADER_SIZE)
48
+ send_picture(ctx, unit + DIRAC_DATA_UNIT_HEADER_SIZE, unit_size - DIRAC_DATA_UNIT_HEADER_SIZE, interlaced);
49
break;
50
/* parse codes without specification */
51
case DIRAC_PCODE_AUX:
52
ffmpeg-3-3.4.13.tar.xz/libavformat/rtsp.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/rtsp.c
Changed
40
1
2
if (rtsp_st->sdp_payload_type == payload_type &&
3
rtsp_st->dynamic_handler &&
4
rtsp_st->dynamic_handler->parse_sdp_a_line) {
5
- rtsp_st->dynamic_handler->parse_sdp_a_line(s, i,
6
+ rtsp_st->dynamic_handler->parse_sdp_a_line(s, rtsp_st->stream_index,
7
rtsp_st->dynamic_protocol_context, line);
8
}
9
}
10
11
cur_auth_type = rt->auth_state.auth_type;
12
if ((ret = rtsp_send_cmd_with_content_async(s, method, url, header,
13
send_content,
14
- send_content_length)))
15
+ send_content_length)) < 0)
16
return ret;
17
18
if ((ret = ff_rtsp_read_reply(s, reply, content_ptr, 0, method) ) < 0)
19
20
char cmd2048;
21
const char *trans_pref;
22
23
+ memset(&reply1, 0, sizeof(reply1));
24
+
25
if (rt->transport == RTSP_TRANSPORT_RDT)
26
trans_pref = "x-pn-tng";
27
else if (rt->transport == RTSP_TRANSPORT_RAW)
28
29
else if (lower_transport == RTSP_LOWER_TRANSPORT_UDP_MULTICAST) {
30
snprintf(transport, sizeof(transport) - 1,
31
"%s/UDP;multicast", trans_pref);
32
+ } else {
33
+ err = AVERROR(EINVAL);
34
+ goto fail; // transport would be uninitialized
35
}
36
+
37
if (s->oformat) {
38
av_strlcat(transport, ";mode=record", sizeof(transport));
39
} else if (rt->server_type == RTSP_SERVER_REAL ||
40
ffmpeg-3-3.4.13.tar.xz/libavformat/sapdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/sapdec.c
Changed
11
1
2
struct pollfd p = {fd, POLLIN, 0};
3
uint8_t recvbufRTP_MAX_PACKET_LENGTH;
4
5
+ if (fd < 0)
6
+ return fd;
7
+
8
if (sap->eof)
9
return AVERROR_EOF;
10
11
ffmpeg-3-3.4.13.tar.xz/libavformat/sauce.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/sauce.c
Changed
15
1
2
AVIOContext *pb = avctx->pb;
3
char buf36;
4
int datatype, filetype, t1, t2, nb_comments;
5
- uint64_t start_pos = avio_size(pb) - 128;
6
+ int64_t start_pos = avio_size(pb);
7
+
8
+ if (start_pos < 128)
9
+ return AVERROR_INVALIDDATA;
10
+
11
+ start_pos -= 128;
12
13
avio_seek(pb, start_pos, SEEK_SET);
14
if (avio_read(pb, buf, 7) != 7)
15
ffmpeg-3-3.4.13.tar.xz/libavformat/sbgdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/sbgdec.c
Changed
22
1
2
case 'L':
3
FORWARD_ERROR(parse_optarg(p, opt, &oarg));
4
r = str_to_time(oarg.s, &p->scs.opt_duration);
5
- if (oarg.e != oarg.s + r) {
6
+ if (oarg.e != oarg.s + r || p->scs.opt_duration < 0) {
7
snprintf(p->err_msg, sizeof(p->err_msg),
8
"syntax error for option -L");
9
return AVERROR_INVALIDDATA;
10
11
/* SBaGen handles the time before and after the extremal events,
12
and the corresponding transitions, as if the sequence were cyclic
13
with a 24-hours period. */
14
- period = s->eventss->nb_events - 1.ts - s->events0.ts;
15
+ period = s->eventss->nb_events - 1.ts - (uint64_t)s->events0.ts;
16
+ if (period < 0)
17
+ return AVERROR_INVALIDDATA;
18
+
19
period = (period + (DAY_TS - 1)) / DAY_TS * DAY_TS;
20
period = FFMAX(period, DAY_TS);
21
22
ffmpeg-3-3.4.13.tar.xz/libavformat/sdp.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/sdp.c
Changed
18
1
2
continue;
3
}
4
if (p != (psets + strlen(pset_string))) {
5
+ if (p - psets >= MAX_PSET_SIZE)
6
+ goto fail_in_loop;
7
*p = ',';
8
p++;
9
}
10
11
}
12
if (!av_base64_encode(p, MAX_PSET_SIZE - (p - psets), r, r1 - r)) {
13
av_log(s, AV_LOG_ERROR, "Cannot Base64-encode %"PTRDIFF_SPECIFIER" %"PTRDIFF_SPECIFIER"!\n", MAX_PSET_SIZE - (p - psets), r1 - r);
14
+fail_in_loop:
15
av_free(psets);
16
av_free(tmpbuf);
17
18
ffmpeg-3-3.4.13.tar.xz/libavformat/segafilm.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/segafilm.c
Changed
9
1
2
else if (film->audio_type != AV_CODEC_ID_NONE)
3
audio_frame_counter += (film->sample_tablei.sample_size /
4
(film->audio_channels * film->audio_bits / 8));
5
+ film->sample_tablei.keyframe = 1;
6
} else {
7
film->sample_tablei.stream = film->video_stream_index;
8
film->sample_tablei.pts = AV_RB32(&scratch8) & 0x7FFFFFFF;
9
ffmpeg-3-3.4.13.tar.xz/libavformat/siff.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/siff.c
Changed
13
1
2
if (c->cur_frame >= c->frames)
3
return AVERROR_EOF;
4
if (c->curstrm == -1) {
5
- c->pktsize = avio_rl32(s->pb) - 4;
6
+ unsigned pktsize = avio_rl32(s->pb);
7
+ if (pktsize < 4)
8
+ return AVERROR_INVALIDDATA;
9
+ c->pktsize = pktsize - 4;
10
c->flags = avio_rl16(s->pb);
11
if (c->flags & VB_HAS_AUDIO && !c->has_audio)
12
return AVERROR_INVALIDDATA;
13
ffmpeg-3-3.4.13.tar.xz/libavformat/subfile.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/subfile.c
Changed
10
1
2
case SEEK_END:
3
new_pos = c->end + c->pos;
4
break;
5
+ default:
6
+ av_assert0(0);
7
}
8
if (new_pos < c->start)
9
return AVERROR(EINVAL);
10
ffmpeg-3-3.4.13.tar.xz/libavformat/tls_schannel.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/tls_schannel.c
Changed
10
1
2
SECURITY_STATUS sspi_ret = SEC_E_OK;
3
SecBuffer inbuf4;
4
SecBufferDesc inbuf_desc;
5
- int size, ret;
6
+ int size, ret = 0;
7
int min_enc_buf_size = len + SCHANNEL_FREE_BUFFER_SIZE;
8
9
/* If we have some left-over data from previous network activity,
10
ffmpeg-3-3.4.13.tar.xz/libavformat/tmv.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/tmv.c
Changed
12
1
2
char_cols = avio_r8(pb);
3
char_rows = avio_r8(pb);
4
tmv->video_chunk_size = char_cols * char_rows * 2;
5
+ if (!tmv->video_chunk_size) {
6
+ av_log(s, AV_LOG_ERROR, "invalid video chunk size\n");
7
+ return AVERROR_INVALIDDATA;
8
+ }
9
10
features = avio_r8(pb);
11
if (features & ~(TMV_PADDING | TMV_STEREO)) {
12
ffmpeg-3-3.4.13.tar.xz/libavformat/tta.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/tta.c
Changed
10
1
2
c->totalframes = nb_samples / c->frame_size + (c->last_frame_size < c->frame_size);
3
c->currentframe = 0;
4
5
- if(c->totalframes >= UINT_MAX/sizeof(uint32_t) || c->totalframes <= 0){
6
+ if(c->totalframes >= (INT_MAX - 4)/sizeof(uint32_t) || c->totalframes <= 0){
7
av_log(s, AV_LOG_ERROR, "totalframes %d invalid\n", c->totalframes);
8
return AVERROR_INVALIDDATA;
9
}
10
ffmpeg-3-3.4.13.tar.xz/libavformat/tty.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/tty.c
Changed
23
1
2
s->chars_per_frame = FFMAX(av_q2d(st->time_base)*s->chars_per_frame, 1);
3
4
if (avctx->pb->seekable & AVIO_SEEKABLE_NORMAL) {
5
- s->fsize = avio_size(avctx->pb);
6
- st->duration = (s->fsize + s->chars_per_frame - 1) / s->chars_per_frame;
7
+ int64_t fsize = avio_size(avctx->pb);
8
+ if (fsize > 0) {
9
+ s->fsize = fsize;
10
+ st->duration = (s->fsize + s->chars_per_frame - 1) / s->chars_per_frame;
11
12
- if (ff_sauce_read(avctx, &s->fsize, 0, 0) < 0)
13
- efi_read(avctx, s->fsize - 51);
14
+ if (ff_sauce_read(avctx, &s->fsize, 0, 0) < 0)
15
+ efi_read(avctx, s->fsize - 51);
16
17
- avio_seek(avctx->pb, 0, SEEK_SET);
18
+ avio_seek(avctx->pb, 0, SEEK_SET);
19
+ }
20
}
21
22
fail:
23
ffmpeg-3-3.4.13.tar.xz/libavformat/utils.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/utils.c
Changed
10
1
2
int64_t target_ts, int flags)
3
{
4
AVInputFormat *avif = s->iformat;
5
- int64_t av_uninit(pos_min), av_uninit(pos_max), pos, pos_limit;
6
+ int64_t pos_min = 0, pos_max = 0, pos, pos_limit;
7
int64_t ts_min, ts_max, ts;
8
int index;
9
int64_t ret;
10
ffmpeg-3-3.4.13.tar.xz/libavformat/vqf.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/vqf.c
Changed
54
1
2
return AVPROBE_SCORE_EXTENSION;
3
}
4
5
-static void add_metadata(AVFormatContext *s, uint32_t tag,
6
+static int add_metadata(AVFormatContext *s, uint32_t tag,
7
unsigned int tag_len, unsigned int remaining)
8
{
9
int len = FFMIN(tag_len, remaining);
10
char *buf, key5 = {0};
11
+ int ret;
12
13
if (len == UINT_MAX)
14
- return;
15
+ return AVERROR_INVALIDDATA;
16
17
buf = av_malloc(len+1);
18
if (!buf)
19
- return;
20
- avio_read(s->pb, buf, len);
21
+ return AVERROR(ENOMEM);
22
+
23
+ ret = avio_read(s->pb, buf, len);
24
+ if (ret < 0)
25
+ return ret;
26
+ if (len != ret)
27
+ return AVERROR_INVALIDDATA;
28
buflen = 0;
29
AV_WL32(key, tag);
30
- av_dict_set(&s->metadata, key, buf, AV_DICT_DONT_STRDUP_VAL);
31
+ return av_dict_set(&s->metadata, key, buf, AV_DICT_DONT_STRDUP_VAL);
32
}
33
34
static const AVMetadataConv vqf_metadata_conv = {
35
36
37
do {
38
int len;
39
+ int ret;
40
chunk_tag = avio_rl32(s->pb);
41
42
if (chunk_tag == MKTAG('D','A','T','A'))
43
44
avio_skip(s->pb, FFMIN(len, header_size));
45
break;
46
default:
47
- add_metadata(s, chunk_tag, len, header_size);
48
+ ret = add_metadata(s, chunk_tag, len, header_size);
49
+ if (ret < 0)
50
+ return ret;
51
break;
52
}
53
54
ffmpeg-3-3.4.13.tar.xz/libavformat/wavdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/wavdec.c
Changed
20
1
2
goto smv_retry;
3
return AVERROR_EOF;
4
}
5
+ if (INT64_MAX - left < avio_tell(s->pb))
6
+ return AVERROR_INVALIDDATA;
7
wav->data_end = avio_tell(s->pb) + left;
8
}
9
10
11
uint8_t guid16;
12
int ret;
13
14
- avio_read(pb, guid, 16);
15
- if (memcmp(guid, ff_w64_guid_riff, 16))
16
+ if (avio_read(pb, guid, 16) != 16 || memcmp(guid, ff_w64_guid_riff, 16))
17
return AVERROR_INVALIDDATA;
18
19
/* riff + wave + fmt + sizes */
20
ffmpeg-3-3.4.13.tar.xz/libavformat/westwood_vqa.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/westwood_vqa.c
Changed
28
1
2
int ret = -1;
3
uint8_t preambleVQA_PREAMBLE_SIZE;
4
uint32_t chunk_type;
5
- uint32_t chunk_size;
6
- int skip_byte;
7
+ int chunk_size;
8
+ unsigned skip_byte;
9
10
while (avio_read(pb, preamble, VQA_PREAMBLE_SIZE) == VQA_PREAMBLE_SIZE) {
11
chunk_type = AV_RB32(&preamble0);
12
chunk_size = AV_RB32(&preamble4);
13
14
+ if (chunk_size < 0)
15
+ return AVERROR_INVALIDDATA;
16
skip_byte = chunk_size & 0x01;
17
18
if ((chunk_type == SND0_TAG) || (chunk_type == SND1_TAG) ||
19
20
break;
21
case SND2_TAG:
22
/* 2 samples/byte, 1 or 2 samples per frame depending on stereo */
23
- pkt->duration = (chunk_size * 2) / wsvqa->channels;
24
+ pkt->duration = (chunk_size * 2LL) / wsvqa->channels;
25
break;
26
}
27
break;
28
ffmpeg-3-3.4.13.tar.xz/libavformat/wtvdec.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/wtvdec.c
Changed
29
1
2
int nb_sectors1 = read_ints(s->pb, sectors1, WTV_SECTOR_SIZE / 4);
3
int i;
4
5
- wf->sectors = av_malloc_array(nb_sectors1, 1 << WTV_SECTOR_BITS);
6
+ wf->sectors = av_calloc(nb_sectors1, 1 << WTV_SECTOR_BITS);
7
if (!wf->sectors) {
8
av_free(wf);
9
return NULL;
10
11
int stream_index = ff_find_stream_index(s, sid);
12
if (stream_index >= 0) {
13
AVStream *st = s->streamsstream_index;
14
- uint8_t buf258;
15
+ uint8_t buf258 = {0};
16
const uint8_t *pbuf = buf;
17
int buf_size;
18
19
20
}
21
22
buf_size = FFMIN(len - consumed, sizeof(buf));
23
- avio_read(pb, buf, buf_size);
24
+ if (avio_read(pb, buf, buf_size) != buf_size)
25
+ return AVERROR_INVALIDDATA;
26
consumed += buf_size;
27
ff_parse_mpeg2_descriptor(s, st, 0, &pbuf, buf + buf_size, NULL, 0, 0, NULL);
28
}
29
ffmpeg-3-3.4.13.tar.xz/libavformat/xmv.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/xmv.c
Changed
10
1
2
/* Initialize the packet context */
3
4
xmv->next_packet_offset = avio_tell(pb);
5
+ if (this_packet_size < xmv->next_packet_offset)
6
+ return AVERROR_INVALIDDATA;
7
xmv->next_packet_size = this_packet_size - xmv->next_packet_offset;
8
xmv->stream_count = xmv->audio_track_count + 1;
9
10
ffmpeg-3-3.4.13.tar.xz/libavformat/xwma.c -> ffmpeg-3-3.4.14.tar.xz/libavformat/xwma.c
Changed
10
1
2
st->codecpar->channels);
3
return AVERROR_INVALIDDATA;
4
}
5
- if (!st->codecpar->bits_per_coded_sample) {
6
+ if (!st->codecpar->bits_per_coded_sample || st->codecpar->bits_per_coded_sample > 64) {
7
av_log(s, AV_LOG_WARNING, "Invalid bits_per_coded_sample: %d\n",
8
st->codecpar->bits_per_coded_sample);
9
return AVERROR_INVALIDDATA;
10
ffmpeg-3-3.4.13.tar.xz/libavutil/avstring.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/avstring.c
Changed
16
1
2
if (k && (!pk || pk == separator))
3
return 1;
4
q = strchr(q, separator);
5
- q += !!q;
6
+ if(q)
7
+ q++;
8
}
9
p = strchr(p, separator);
10
- p += !!p;
11
+ if (p)
12
+ p++;
13
}
14
15
return 0;
16
ffmpeg-3-3.4.13.tar.xz/libavutil/base64.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/base64.c
Changed
16
1
2
}
3
4
out3:
5
- *dst++ = v >> 10;
6
+ if (end - dst)
7
+ *dst++ = v >> 10;
8
v <<= 2;
9
out2:
10
- *dst++ = v >> 4;
11
+ if (end - dst)
12
+ *dst++ = v >> 4;
13
out1:
14
out0:
15
return bits & 1 ? AVERROR_INVALIDDATA : dst - out;
16
ffmpeg-3-3.4.13.tar.xz/libavutil/buffer.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/buffer.c
Changed
25
1
2
if (!pool)
3
return NULL;
4
5
- ff_mutex_init(&pool->mutex, NULL);
6
+ if (ff_mutex_init(&pool->mutex, NULL)) {
7
+ av_free(pool);
8
+ return NULL;
9
+ }
10
11
pool->size = size;
12
pool->opaque = opaque;
13
14
if (!pool)
15
return NULL;
16
17
- ff_mutex_init(&pool->mutex, NULL);
18
+ if (ff_mutex_init(&pool->mutex, NULL)) {
19
+ av_free(pool);
20
+ return NULL;
21
+ }
22
23
pool->size = size;
24
pool->alloc = alloc ? alloc : av_buffer_alloc;
25
ffmpeg-3-3.4.13.tar.xz/libavutil/frame.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/frame.c
Changed
10
1
2
if (log2_crop_align < min_log2_align)
3
return AVERROR_BUG;
4
5
- if (min_log2_align < 5) {
6
+ if (min_log2_align < 5 && log2_crop_align != INT_MAX) {
7
frame->crop_left &= ~((1 << (5 + log2_crop_align - min_log2_align)) - 1);
8
calc_cropping_offsets(offsets, frame, desc);
9
}
10
ffmpeg-3-3.4.13.tar.xz/libavutil/hwcontext_d3d11va.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/hwcontext_d3d11va.c
Changed
10
1
2
desc->texture = tex;
3
desc->index = index;
4
5
- buf = av_buffer_create((uint8_t *)desc, sizeof(desc), free_texture, tex, 0);
6
+ buf = av_buffer_create((uint8_t *)desc, sizeof(*desc), free_texture, tex, 0);
7
if (!buf) {
8
ID3D11Texture2D_Release(tex);
9
av_free(desc);
10
ffmpeg-3-3.4.13.tar.xz/libavutil/hwcontext_dxva2.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/hwcontext_dxva2.c
Changed
10
1
2
if (s->nb_surfaces_used < hwctx->nb_surfaces) {
3
s->nb_surfaces_used++;
4
return av_buffer_create((uint8_t*)s->surfaces_internals->nb_surfaces_used - 1,
5
- sizeof(*hwctx->surfaces), dxva2_pool_release_dummy, 0, 0);
6
+ sizeof(**hwctx->surfaces), dxva2_pool_release_dummy, 0, 0);
7
}
8
9
return NULL;
10
ffmpeg-3-3.4.13.tar.xz/libavutil/imgutils.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/imgutils.c
Changed
10
1
2
stride = 8LL*w;
3
stride += 128*8;
4
5
- if ((int)w<=0 || (int)h<=0 || stride >= INT_MAX || stride*(uint64_t)(h+128) >= INT_MAX) {
6
+ if (w==0 || h==0 || w > INT32_MAX || h > INT32_MAX || stride >= INT_MAX || stride*(h + 128ULL) >= INT_MAX) {
7
av_log(&imgutils, AV_LOG_ERROR, "Picture size %ux%u is invalid\n", w, h);
8
return AVERROR(EINVAL);
9
}
10
ffmpeg-3-3.4.13.tar.xz/libavutil/rational.h -> ffmpeg-3-3.4.14.tar.xz/libavutil/rational.h
Changed
12
1
2
* In case of infinity, the returned value is expressed as `{1, 0}` or
3
* `{-1, 0}` depending on the sign.
4
*
5
+ * In general rational numbers with |num| <= 1<<26 && |den| <= 1<<26
6
+ * can be recovered exactly from their double representation.
7
+ * (no exceptions were found within 1B random ones)
8
+ *
9
* @param d `double` to convert
10
* @param max Maximum allowed numerator and denominator
11
* @return `d` in AVRational form
12
ffmpeg-3-3.4.13.tar.xz/libavutil/slicethread.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/slicethread.c
Changed
51
1
2
{
3
AVSliceThread *ctx;
4
int nb_workers, i;
5
+ int ret;
6
7
#if HAVE_W32THREADS
8
w32thread_init();
9
10
11
atomic_init(&ctx->first_job, 0);
12
atomic_init(&ctx->current_job, 0);
13
- pthread_mutex_init(&ctx->done_mutex, NULL);
14
- pthread_cond_init(&ctx->done_cond, NULL);
15
+ ret = pthread_mutex_init(&ctx->done_mutex, NULL);
16
+ if (ret) {
17
+ av_freep(&ctx->workers);
18
+ av_freep(pctx);
19
+ return AVERROR(ret);
20
+ }
21
+ ret = pthread_cond_init(&ctx->done_cond, NULL);
22
+ if (ret) {
23
+ ctx->nb_threads = main_func ? 0 : 1;
24
+ avpriv_slicethread_free(pctx);
25
+ return AVERROR(ret);
26
+ }
27
ctx->done = 0;
28
29
for (i = 0; i < nb_workers; i++) {
30
WorkerContext *w = &ctx->workersi;
31
int ret;
32
w->ctx = ctx;
33
- pthread_mutex_init(&w->mutex, NULL);
34
- pthread_cond_init(&w->cond, NULL);
35
+ ret = pthread_mutex_init(&w->mutex, NULL);
36
+ if (ret) {
37
+ ctx->nb_threads = main_func ? i : i + 1;
38
+ avpriv_slicethread_free(pctx);
39
+ return AVERROR(ret);
40
+ }
41
+ ret = pthread_cond_init(&w->cond, NULL);
42
+ if (ret) {
43
+ pthread_mutex_destroy(&w->mutex);
44
+ ctx->nb_threads = main_func ? i : i + 1;
45
+ avpriv_slicethread_free(pctx);
46
+ return AVERROR(ret);
47
+ }
48
pthread_mutex_lock(&w->mutex);
49
w->done = 0;
50
51
ffmpeg-3-3.4.13.tar.xz/libavutil/softfloat.h -> ffmpeg-3-3.4.14.tar.xz/libavutil/softfloat.h
Changed
21
1
2
3
/**
4
* Rounding-to-nearest used.
5
+ *
6
+ * @param a angle in units of (1ULL<<30)/M_PI radians
7
+ * @param s pointer to where sine in units of (1<<30) is returned
8
+ * @param c pointer to where cosine in units of (1<<30) is returned
9
*/
10
static av_unused void av_sincos_sf(int a, int *s, int *c)
11
{
12
13
(int64_t)av_sintbl_4_sf(idx & 0x1f) + 1 * (a & 0x7ff) +
14
0x400) >> 11);
15
16
- *c = (int)(((int64_t)cv * ct + (int64_t)sv * st + 0x20000000) >> 30);
17
+ *c = (int)(((int64_t)cv * ct - (int64_t)sv * st + 0x20000000) >> 30);
18
19
*s = (int)(((int64_t)cv * st + (int64_t)sv * ct + 0x20000000) >> 30);
20
}
21
ffmpeg-3-3.4.13.tar.xz/libavutil/tests/base64.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/tests/base64.c
Changed
18
1
2
printf("Failed: decode to NULL buffer\n");
3
return 1;
4
}
5
+ if (data_size > 0 && (data2_size = av_base64_decode(data2, encoded, data_size - 1)) != data_size - 1) {
6
+ printf("Failed: out of array write\n"
7
+ "Encoded:\n%s\n", encoded);
8
+ return 1;
9
+ }
10
+ if (data_size > 1 && (data2_size = av_base64_decode(data2, encoded, data_size - 2)) != data_size - 2) {
11
+ printf("Failed: out of array write\n"
12
+ "Encoded:\n%s\n", encoded);
13
+ return 1;
14
+ }
15
if (strlen(encoded)) {
16
char *end = strchr(encoded, '=');
17
if (!end)
18
ffmpeg-3-3.4.13.tar.xz/libavutil/tests/dict.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/tests/dict.c
Changed
20
1
2
3
//valgrind sensible test
4
printf("\nTesting av_dict_set() with existing AVDictionaryEntry.key as key\n");
5
- av_dict_set(&dict, "key", "old", 0);
6
+ if (av_dict_set(&dict, "key", "old", 0) < 0)
7
+ return 1;
8
e = av_dict_get(dict, "key", NULL, 0);
9
- av_dict_set(&dict, e->key, "new val OK", 0);
10
+ if (av_dict_set(&dict, e->key, "new val OK", 0) < 0)
11
+ return 1;
12
e = av_dict_get(dict, "key", NULL, 0);
13
printf("%s\n", e->value);
14
- av_dict_set(&dict, e->key, e->value, 0);
15
+ if (av_dict_set(&dict, e->key, e->value, 0) < 0)
16
+ return 1;
17
e = av_dict_get(dict, "key", NULL, 0);
18
printf("%s\n", e->value);
19
av_dict_free(&dict);
20
ffmpeg-3-3.4.13.tar.xz/libavutil/tests/opt.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/tests/opt.c
Changed
21
1
2
{
3
TestContext test_ctx = { 0 };
4
char *buf;
5
+ int ret;
6
test_ctx.class = &test_class;
7
8
av_log_set_level(AV_LOG_QUIET);
9
10
av_opt_free(&test_ctx);
11
memset(&test_ctx, 0, sizeof(test_ctx));
12
test_ctx.class = &test_class;
13
- av_set_options_string(&test_ctx, buf, "=", ",");
14
+ ret = av_set_options_string(&test_ctx, buf, "=", ",");
15
av_free(buf);
16
+ if (ret < 0)
17
+ printf("Error ret '%d'\n", ret);
18
if (av_opt_serialize(&test_ctx, 0, 0, &buf, '=', ',') >= 0) {
19
printf("%s\n", buf);
20
av_free(buf);
21
ffmpeg-3-3.4.13.tar.xz/libavutil/tests/softfloat.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/tests/softfloat.c
Changed
10
1
2
av_sincos_sf(i*(1ULL<<32)/36/4, &s, &c);
3
errs = (double)s/ (1<<30) - sin(i*M_PI/36);
4
errc = (double)c/ (1<<30) - cos(i*M_PI/36);
5
- if (fabs(errs) > 0.00000002 || fabs(errc) >0.001) {
6
+ if (fabs(errs) > 0.000000004 || fabs(errc) >0.000000004) {
7
printf("sincos FAIL %d %f %f %f %f\n", i, (float)s/ (1<<30), (float)c/ (1<<30), sin(i*M_PI/36), cos(i*M_PI/36));
8
}
9
10
ffmpeg-3-3.4.13.tar.xz/libavutil/timecode.c -> ffmpeg-3-3.4.14.tar.xz/libavutil/timecode.c
Changed
10
1
2
{
3
if (!rate.den || !rate.num)
4
return -1;
5
- return (rate.num + rate.den/2) / rate.den;
6
+ return (rate.num + rate.den/2LL) / rate.den;
7
}
8
9
int av_timecode_check_frame_rate(AVRational rate)
10
ffmpeg-3-3.4.13.tar.xz/libswscale/output.c -> ffmpeg-3-3.4.14.tar.xz/libswscale/output.c
Changed
287
1
2
3
for (i = 0; i < ((dstW + 1) >> 1); i++) {
4
int j;
5
- int Y1 = -0x40000000;
6
- int Y2 = -0x40000000;
7
+ unsigned Y1 = -0x40000000;
8
+ unsigned Y2 = -0x40000000;
9
int U = -(128 << 23); // 19
10
int V = -(128 << 23);
11
int R, G, B;
12
13
}
14
15
// 8 bits: 12+15=27; 16 bits: 12+19=31
16
- Y1 >>= 14; // 10
17
+ Y1 = (int)Y1 >> 14; // 10
18
Y1 += 0x10000;
19
- Y2 >>= 14;
20
+ Y2 = (int)Y2 >> 14;
21
Y2 += 0x10000;
22
U >>= 14;
23
V >>= 14;
24
25
B = U * c->yuv2rgb_u2b_coeff;
26
27
// 8 bits: 30 - 22 = 8 bits, 16 bits: 30 bits - 14 = 16 bits
28
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y1) >> 14) + (1<<15), 16));
29
- output_pixel(&dest1, av_clip_uintp2((( G + Y1) >> 14) + (1<<15), 16));
30
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y1) >> 14) + (1<<15), 16));
31
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + Y1) >> 14) + (1<<15), 16));
32
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + Y1) >> 14) + (1<<15), 16));
33
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + Y1) >> 14) + (1<<15), 16));
34
if (eightbytes) {
35
output_pixel(&dest3, av_clip_uintp2(A1 , 30) >> 14);
36
- output_pixel(&dest4, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
37
- output_pixel(&dest5, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
38
- output_pixel(&dest6, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
39
+ output_pixel(&dest4, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
40
+ output_pixel(&dest5, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
41
+ output_pixel(&dest6, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
42
output_pixel(&dest7, av_clip_uintp2(A2 , 30) >> 14);
43
dest += 8;
44
} else {
45
- output_pixel(&dest3, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
46
- output_pixel(&dest4, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
47
- output_pixel(&dest5, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
48
+ output_pixel(&dest3, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
49
+ output_pixel(&dest4, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
50
+ output_pixel(&dest5, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
51
dest += 6;
52
}
53
}
54
55
av_assert2(uvalpha <= 4096U);
56
57
for (i = 0; i < ((dstW + 1) >> 1); i++) {
58
- int Y1 = (buf0i * 2 * yalpha1 + buf1i * 2 * yalpha) >> 14;
59
- int Y2 = (buf0i * 2 + 1 * yalpha1 + buf1i * 2 + 1 * yalpha) >> 14;
60
+ unsigned Y1 = (buf0i * 2 * yalpha1 + buf1i * 2 * yalpha) >> 14;
61
+ unsigned Y2 = (buf0i * 2 + 1 * yalpha1 + buf1i * 2 + 1 * yalpha) >> 14;
62
int U = (ubuf0i * uvalpha1 + ubuf1i * uvalpha - (128 << 23)) >> 14;
63
int V = (vbuf0i * uvalpha1 + vbuf1i * uvalpha - (128 << 23)) >> 14;
64
int R, G, B;
65
66
A2 += 1 << 13;
67
}
68
69
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y1) >> 14) + (1<<15), 16));
70
- output_pixel(&dest1, av_clip_uintp2((( G + Y1) >> 14) + (1<<15), 16));
71
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y1) >> 14) + (1<<15), 16));
72
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + Y1) >> 14) + (1<<15), 16));
73
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + Y1) >> 14) + (1<<15), 16));
74
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + Y1) >> 14) + (1<<15), 16));
75
if (eightbytes) {
76
output_pixel(&dest3, av_clip_uintp2(A1 , 30) >> 14);
77
- output_pixel(&dest4, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
78
- output_pixel(&dest5, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
79
- output_pixel(&dest6, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
80
+ output_pixel(&dest4, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
81
+ output_pixel(&dest5, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
82
+ output_pixel(&dest6, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
83
output_pixel(&dest7, av_clip_uintp2(A2 , 30) >> 14);
84
dest += 8;
85
} else {
86
- output_pixel(&dest3, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
87
- output_pixel(&dest4, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
88
- output_pixel(&dest5, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
89
+ output_pixel(&dest3, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
90
+ output_pixel(&dest4, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
91
+ output_pixel(&dest5, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
92
dest += 6;
93
}
94
}
95
96
97
if (uvalpha < 2048) {
98
for (i = 0; i < ((dstW + 1) >> 1); i++) {
99
- int Y1 = (buf0i * 2 ) >> 2;
100
- int Y2 = (buf0i * 2 + 1) >> 2;
101
+ SUINT Y1 = (buf0i * 2 ) >> 2;
102
+ SUINT Y2 = (buf0i * 2 + 1) >> 2;
103
int U = (ubuf0i - (128 << 11)) >> 2;
104
int V = (vbuf0i - (128 << 11)) >> 2;
105
int R, G, B;
106
107
Y2 += (1 << 13) - (1 << 29);
108
109
if (hasAlpha) {
110
- A1 = abuf0i * 2 << 11;
111
- A2 = abuf0i * 2 + 1 << 11;
112
+ A1 = abuf0i * 2 * (1 << 11);
113
+ A2 = abuf0i * 2 + 1 * (1 << 11);
114
115
A1 += 1 << 13;
116
A2 += 1 << 13;
117
118
G = V * c->yuv2rgb_v2g_coeff + U * c->yuv2rgb_u2g_coeff;
119
B = U * c->yuv2rgb_u2b_coeff;
120
121
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y1) >> 14) + (1<<15), 16));
122
- output_pixel(&dest1, av_clip_uintp2((( G + Y1) >> 14) + (1<<15), 16));
123
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y1) >> 14) + (1<<15), 16));
124
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + Y1) >> 14) + (1<<15), 16));
125
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + Y1) >> 14) + (1<<15), 16));
126
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + Y1) >> 14) + (1<<15), 16));
127
if (eightbytes) {
128
output_pixel(&dest3, av_clip_uintp2(A1 , 30) >> 14);
129
- output_pixel(&dest4, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
130
- output_pixel(&dest5, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
131
- output_pixel(&dest6, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
132
+ output_pixel(&dest4, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
133
+ output_pixel(&dest5, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
134
+ output_pixel(&dest6, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
135
output_pixel(&dest7, av_clip_uintp2(A2 , 30) >> 14);
136
dest += 8;
137
} else {
138
- output_pixel(&dest3, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
139
- output_pixel(&dest4, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
140
- output_pixel(&dest5, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
141
+ output_pixel(&dest3, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
142
+ output_pixel(&dest4, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
143
+ output_pixel(&dest5, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
144
dest += 6;
145
}
146
}
147
148
const int32_t *ubuf1 = ubuf1, *vbuf1 = vbuf1;
149
int A1 = 0xffff<<14, A2 = 0xffff<<14;
150
for (i = 0; i < ((dstW + 1) >> 1); i++) {
151
- int Y1 = (buf0i * 2 ) >> 2;
152
- int Y2 = (buf0i * 2 + 1) >> 2;
153
+ SUINT Y1 = (buf0i * 2 ) >> 2;
154
+ SUINT Y2 = (buf0i * 2 + 1) >> 2;
155
int U = (ubuf0i + ubuf1i - (128 << 12)) >> 3;
156
int V = (vbuf0i + vbuf1i - (128 << 12)) >> 3;
157
int R, G, B;
158
159
Y2 += (1 << 13) - (1 << 29);
160
161
if (hasAlpha) {
162
- A1 = abuf0i * 2 << 11;
163
- A2 = abuf0i * 2 + 1 << 11;
164
+ A1 = abuf0i * 2 * (1 << 11);
165
+ A2 = abuf0i * 2 + 1 * (1 << 11);
166
167
A1 += 1 << 13;
168
A2 += 1 << 13;
169
170
G = V * c->yuv2rgb_v2g_coeff + U * c->yuv2rgb_u2g_coeff;
171
B = U * c->yuv2rgb_u2b_coeff;
172
173
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y1) >> 14) + (1<<15), 16));
174
- output_pixel(&dest1, av_clip_uintp2((( G + Y1) >> 14) + (1<<15), 16));
175
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y1) >> 14) + (1<<15), 16));
176
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + Y1) >> 14) + (1<<15), 16));
177
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + Y1) >> 14) + (1<<15), 16));
178
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + Y1) >> 14) + (1<<15), 16));
179
if (eightbytes) {
180
output_pixel(&dest3, av_clip_uintp2(A1 , 30) >> 14);
181
- output_pixel(&dest4, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
182
- output_pixel(&dest5, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
183
- output_pixel(&dest6, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
184
+ output_pixel(&dest4, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
185
+ output_pixel(&dest5, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
186
+ output_pixel(&dest6, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
187
output_pixel(&dest7, av_clip_uintp2(A2 , 30) >> 14);
188
dest += 8;
189
} else {
190
- output_pixel(&dest3, av_clip_uintp2(((R_B + Y2) >> 14) + (1<<15), 16));
191
- output_pixel(&dest4, av_clip_uintp2((( G + Y2) >> 14) + (1<<15), 16));
192
- output_pixel(&dest5, av_clip_uintp2(((B_R + Y2) >> 14) + (1<<15), 16));
193
+ output_pixel(&dest3, av_clip_uintp2(((int)(R_B + Y2) >> 14) + (1<<15), 16));
194
+ output_pixel(&dest4, av_clip_uintp2(((int)( G + Y2) >> 14) + (1<<15), 16));
195
+ output_pixel(&dest5, av_clip_uintp2(((int)(B_R + Y2) >> 14) + (1<<15), 16));
196
dest += 6;
197
}
198
}
199
200
B = U * c->yuv2rgb_u2b_coeff;
201
202
// 8bit: 30 - 22 = 8bit, 16bit: 30bit - 14 = 16bit
203
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y)>>14) + (1<<15), 16));
204
- output_pixel(&dest1, av_clip_uintp2((( G + Y)>>14) + (1<<15), 16));
205
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y)>>14) + (1<<15), 16));
206
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + (unsigned)Y)>>14) + (1<<15), 16));
207
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + (unsigned)Y)>>14) + (1<<15), 16));
208
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + (unsigned)Y)>>14) + (1<<15), 16));
209
if (eightbytes) {
210
output_pixel(&dest3, av_clip_uintp2(A, 30) >> 14);
211
dest += 4;
212
213
214
if (uvalpha < 2048) {
215
for (i = 0; i < dstW; i++) {
216
- int Y = (buf0i) >> 2;
217
+ SUINT Y = (buf0i) >> 2;
218
int U = (ubuf0i - (128 << 11)) >> 2;
219
int V = (vbuf0i - (128 << 11)) >> 2;
220
int R, G, B;
221
222
Y += (1 << 13) - (1 << 29);
223
224
if (hasAlpha) {
225
- A = abuf0i << 11;
226
+ A = abuf0i * (1 << 11);
227
228
A += 1 << 13;
229
}
230
231
G = V * c->yuv2rgb_v2g_coeff + U * c->yuv2rgb_u2g_coeff;
232
B = U * c->yuv2rgb_u2b_coeff;
233
234
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y) >> 14) + (1<<15), 16));
235
- output_pixel(&dest1, av_clip_uintp2((( G + Y) >> 14) + (1<<15), 16));
236
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y) >> 14) + (1<<15), 16));
237
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + Y) >> 14) + (1<<15), 16));
238
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + Y) >> 14) + (1<<15), 16));
239
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + Y) >> 14) + (1<<15), 16));
240
if (eightbytes) {
241
output_pixel(&dest3, av_clip_uintp2(A, 30) >> 14);
242
dest += 4;
243
244
const int32_t *ubuf1 = ubuf1, *vbuf1 = vbuf1;
245
int A = 0xffff<<14;
246
for (i = 0; i < dstW; i++) {
247
- int Y = (buf0i ) >> 2;
248
+ SUINT Y = (buf0i ) >> 2;
249
int U = (ubuf0i + ubuf1i - (128 << 12)) >> 3;
250
int V = (vbuf0i + vbuf1i - (128 << 12)) >> 3;
251
int R, G, B;
252
253
Y += (1 << 13) - (1 << 29);
254
255
if (hasAlpha) {
256
- A = abuf0i << 11;
257
+ A = abuf0i * (1 << 11);
258
259
A += 1 << 13;
260
}
261
262
G = V * c->yuv2rgb_v2g_coeff + U * c->yuv2rgb_u2g_coeff;
263
B = U * c->yuv2rgb_u2b_coeff;
264
265
- output_pixel(&dest0, av_clip_uintp2(((R_B + Y) >> 14) + (1<<15), 16));
266
- output_pixel(&dest1, av_clip_uintp2((( G + Y) >> 14) + (1<<15), 16));
267
- output_pixel(&dest2, av_clip_uintp2(((B_R + Y) >> 14) + (1<<15), 16));
268
+ output_pixel(&dest0, av_clip_uintp2(((int)(R_B + Y) >> 14) + (1<<15), 16));
269
+ output_pixel(&dest1, av_clip_uintp2(((int)( G + Y) >> 14) + (1<<15), 16));
270
+ output_pixel(&dest2, av_clip_uintp2(((int)(B_R + Y) >> 14) + (1<<15), 16));
271
if (eightbytes) {
272
output_pixel(&dest3, av_clip_uintp2(A, 30) >> 14);
273
dest += 4;
274
275
Y -= c->yuv2rgb_y_offset;
276
Y *= c->yuv2rgb_y_coeff;
277
Y += 1 << 21;
278
- R = (unsigned)Y + V*c->yuv2rgb_v2r_coeff;
279
- G = (unsigned)Y + V*c->yuv2rgb_v2g_coeff + U*c->yuv2rgb_u2g_coeff;
280
- B = (unsigned)Y + U*c->yuv2rgb_u2b_coeff;
281
+ R = (unsigned)Y + V*(unsigned)c->yuv2rgb_v2r_coeff;
282
+ G = (unsigned)Y + V*(unsigned)c->yuv2rgb_v2g_coeff + U*(unsigned)c->yuv2rgb_u2g_coeff;
283
+ B = (unsigned)Y + U*(unsigned)c->yuv2rgb_u2b_coeff;
284
if ((R | G | B) & 0xC0000000) {
285
R = av_clip_uintp2(R, 30);
286
G = av_clip_uintp2(G, 30);
287
ffmpeg-3-3.4.13.tar.xz/libswscale/slice.c -> ffmpeg-3-3.4.14.tar.xz/libswscale/slice.c
Changed
10
1
2
for (j = 0; j < n; ++j) {
3
// chroma plane line U and V are expected to be contiguous in memory
4
// by mmx vertical scaler code
5
- s->planei.linej = av_malloc(size * 2 + 32);
6
+ s->planei.linej = av_mallocz(size * 2 + 32);
7
if (!s->planei.linej) {
8
free_lines(s);
9
return AVERROR(ENOMEM);
10
ffmpeg-3-3.4.13.tar.xz/libswscale/swscale.c -> ffmpeg-3-3.4.14.tar.xz/libswscale/swscale.c
Changed
20
1
2
int i;
3
int32_t *dst = (int32_t *) _dst;
4
for (i = 0; i < width; i++)
5
- dsti = (dsti*(14071/4) + (33561947<<4)/4)>>12;
6
+ dsti = ((int)(dsti*(14071U/4) + (33561947<<4)/4)) >> 12;
7
}
8
9
10
11
12
if ((srcSliceY & (macro_height-1)) ||
13
((srcSliceH& (macro_height-1)) && srcSliceY + srcSliceH != c->srcH) ||
14
- srcSliceY + srcSliceH > c->srcH) {
15
+ srcSliceY + srcSliceH > c->srcH ||
16
+ (isBayer(c->srcFormat) && srcSliceH <= 1)) {
17
av_log(c, AV_LOG_ERROR, "Slice parameters %d, %d are invalid\n", srcSliceY, srcSliceH);
18
return AVERROR(EINVAL);
19
}
20
ffmpeg-3-3.4.13.tar.xz/libswscale/utils.c -> ffmpeg-3-3.4.14.tar.xz/libswscale/utils.c
Changed
28
1
2
filteri * filterSize + j = coeff;
3
xx++;
4
}
5
- xDstInSrc += 2 * xInc;
6
+ xDstInSrc += 2LL * xInc;
7
}
8
}
9
10
11
}
12
13
for (i = 0; i < 4; i++)
14
- FF_ALLOCZ_OR_GOTO(c, c->dither_errori, (c->dstW+2) * sizeof(int), fail);
15
+ FF_ALLOCZ_OR_GOTO(c, c->dither_errori, (c->dstW+3) * sizeof(int), fail);
16
17
c->needAlpha = (CONFIG_SWSCALE_ALPHA && isALPHA(c->srcFormat) && isALPHA(c->dstFormat)) ? 1 : 0;
18
19
20
21
/* unscaled special cases */
22
if (unscaled && !usesHFilter && !usesVFilter &&
23
- (c->srcRange == c->dstRange || isAnyRGB(dstFormat))) {
24
+ (c->srcRange == c->dstRange || isAnyRGB(dstFormat) || isBayer(srcFormat))) {
25
ff_get_unscaled_swscale(c);
26
27
if (c->swscale) {
28
ffmpeg-3-3.4.13.tar.xz/libswscale/yuv2rgb.c -> ffmpeg-3-3.4.14.tar.xz/libswscale/yuv2rgb.c
Changed
10
1
2
cbu = (cbu * contrast * saturation) >> 32;
3
cgu = (cgu * contrast * saturation) >> 32;
4
cgv = (cgv * contrast * saturation) >> 32;
5
- oy -= 256 * brightness;
6
+ oy -= 256LL * brightness;
7
8
c->uOffset = 0x0400040004000400LL;
9
c->vOffset = 0x0400040004000400LL;
10
ffmpeg-3-3.4.13.tar.xz/tests/fate/subtitles.mak -> ffmpeg-3-3.4.14.tar.xz/tests/fate/subtitles.mak
Changed
9
1
2
3
FATE_SUBTITLES-$(call DEMDEC, SCC, CCAPTION) += fate-sub-scc
4
fate-sub-scc: CMD = fmtstdout ass -ss 57 -i $(TARGET_SAMPLES)/sub/witch.scc
5
+fate-sub-scc: CMP = diff
6
7
FATE_SUBTITLES-$(call ENCMUX, ASS, ASS) += $(FATE_SUBTITLES_ASS-yes)
8
FATE_SUBTITLES += $(FATE_SUBTITLES-yes)
9
ffmpeg-3-3.4.13.tar.xz/tools/coverity.c -> ffmpeg-3-3.4.14.tar.xz/tools/coverity.c
Changed
30
1
2
3
#define NULL (void *)0
4
5
+typedef long long int64_t;
6
+
7
+enum AVRounding {
8
+ AV_ROUND_ZERO = 0,
9
+ AV_ROUND_INF = 1,
10
+ AV_ROUND_DOWN = 2,
11
+ AV_ROUND_UP = 3,
12
+ AV_ROUND_NEAR_INF = 5,
13
+ AV_ROUND_PASS_MINMAX = 8192,
14
+};
15
+
16
// Based on https://scan.coverity.com/models
17
void *av_malloc(size_t size) {
18
int has_memory;
19
20
__coverity_mark_as_afm_freed__(ptr, "av_free");
21
}
22
23
+
24
+int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd) {
25
+ __coverity_negative_sink__(b);
26
+ __coverity_negative_sink__(c);
27
+
28
+ return (double)a * (double)b / (double)c;
29
+}
30