From 7a6cf79f0c59ea0a080fac7313b4dcaab55ded6d Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期三, 22 八月 2018 14:51:51 +0800
Subject: [PATCH] 单号【2727】特殊任务的添加和表现

---
 System/MainInterfacePanel/PlayerMainDate.cs  |   35 +++++
 System/MainInterfacePanel/SideMission.cs     |  132 ++++++++++++++++++++--
 System/MainInterfacePanel/TaskListTip.cs     |   57 ++++++++-
 System/MainInterfacePanel/FlyingShoesTask.cs |  108 ++++++++++++-----
 4 files changed, 281 insertions(+), 51 deletions(-)

diff --git a/System/MainInterfacePanel/FlyingShoesTask.cs b/System/MainInterfacePanel/FlyingShoesTask.cs
index 067699e..66291d4 100644
--- a/System/MainInterfacePanel/FlyingShoesTask.cs
+++ b/System/MainInterfacePanel/FlyingShoesTask.cs
@@ -120,36 +120,27 @@
             m_ImgSelected.SetActive(true);
 
             taskmodel.GetNowTaskID = Task_ID;
+
+            if (mainModel.TaskId_Skill1.Contains(Task_ID))
+            {
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    taskmodel.CompletionOfTask(Task_ID);
+                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                }
+                else
+                {
+                    StateDetermination();
+                    ContentText.ExcuteHref();
+                }
+                return;
+            }
             switch ((int)taskmodel.GetTaskStatus(Task_ID))
             {
                 case -5:
                 case 0:
-                    DropItemManager.StopMissionPickup = true;//涓诲姩鍋滄鎷惧彇鐗╁搧
-                    if (PlayerDatas.Instance.extersion.bossState == 1)
-                    {
-                        string strNpc = string.Empty;
-                        strNpc = ContentText.GetHrefMessage("movenpc");
-                        int npcId = 0;
-                        int mapID = PlayerDatas.Instance.baseData.MapID;
-                        if (int.TryParse(strNpc, out npcId))
-                        {
-                            var npcConfig = Config.Instance.GetAllValues<mapnpcConfig>();
-                            foreach (var value in npcConfig)
-                            {
-                                if (value.NPCID == npcId && value.MapID != mapID)
-                                {
-                                    SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
-                                    return;
-                                }
-                            }
-                            var MonsterConfig = Config.Instance.Get<MonsterRefreshPointConfig>(npcId);
-                            if (MonsterConfig != null && MonsterConfig.MapId != mapID)
-                            {
-                                SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
-                                return;
-                            }
-                        }
-                    }
+                    StateDetermination();
                     ContentText.ExcuteHref();
                     OpenPanel(Task_ID);
                     break;
@@ -202,12 +193,47 @@
                     break;
                 case 3:
                     taskmodel.CompletionOfTask(Task_ID);
+                    if (mainModel.TaskId_Skill.Contains(Task_ID))
+                    {
+                        WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                    }
                     break;
                 default:
                     break;
-
             }
         }
+
+        private void StateDetermination()//鐘舵�佸垽瀹�
+        {
+            DropItemManager.StopMissionPickup = true;//涓诲姩鍋滄鎷惧彇鐗╁搧
+            if (PlayerDatas.Instance.extersion.bossState == 1)
+            {
+                string strNpc = string.Empty;
+                strNpc = ContentText.GetHrefMessage("movenpc");
+                int npcId = 0;
+                int mapID = PlayerDatas.Instance.baseData.MapID;
+                if (int.TryParse(strNpc, out npcId))
+                {
+                    var npcConfig = Config.Instance.GetAllValues<mapnpcConfig>();
+                    foreach (var value in npcConfig)
+                    {
+                        if (value.NPCID == npcId && value.MapID != mapID)
+                        {
+                            SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
+                            return;
+                        }
+                    }
+                    var MonsterConfig = Config.Instance.Get<MonsterRefreshPointConfig>(npcId);
+                    if (MonsterConfig != null && MonsterConfig.MapId != mapID)
+                    {
+                        SysNotifyMgr.Instance.ShowTip("Task_Transfer1");
+                        return;
+                    }
+                }
+            }
+
+        }
+
         private void OnClickDeliveryButton()//浼犻�佺
         {
             mainModel.FlyShoseTaskID = Task_ID;
@@ -293,16 +319,32 @@
             }
             string str = taskmodel.allMissionDict[TaskID].InforList;
             var taskinfo = Config.Instance.Get<TASKINFOConfig>(str);
-            if (taskinfo != null)
+            if (mainModel.TaskId_Skill1.Contains(TaskID))//鐗规畩浠诲姟
             {
-                m_ContentText.text = taskinfo.show_writing;
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
+                string Str_B = Language.Get("PassiveSkillTask2");
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    m_ContentText.text = Str_B;
+                }
+                else
+                {
+                    m_ContentText.text = Str_A;
+                }
             }
             else
             {
-                DebugEx.LogError("浠诲姟琛ㄦ牸PyTaskInfo閰嶇疆缂哄け");
-                return;
-            }
-
+                if (taskinfo != null)
+                {
+                    m_ContentText.text = taskinfo.show_writing;
+                }
+                else
+                {
+                    DebugEx.LogError("浠诲姟琛ㄦ牸PyTaskInfo閰嶇疆缂哄け");
+                    return;
+                }
+            }          
             bool isOPenTransferButton = HrefAnalysis.Inst.ContainsKey(taskinfo.show_writing, "flynpc");
             if (isOPenTransferButton && !IsKaJiBool)
             {
diff --git a/System/MainInterfacePanel/PlayerMainDate.cs b/System/MainInterfacePanel/PlayerMainDate.cs
index e49ebe1..d791053 100644
--- a/System/MainInterfacePanel/PlayerMainDate.cs
+++ b/System/MainInterfacePanel/PlayerMainDate.cs
@@ -123,6 +123,7 @@
             OneKeyList.Add(Listmap[i]);
         }
         NetworkState = (int)SDKUtility.Instance.NetworkType;
+        GetPassiveSkillTask();
     }
     //----------鍏充簬鏌愪簺鍓湰鍙互杩涜鍦板浘鎸傛満
     public List<int> OneKeyList = new List<int>();
@@ -130,6 +131,40 @@
     //----------浣跨敤濞茬殗鍗疯酱鍚庣殑Buff琛ㄧ幇
     public static event Action EmperorBuffEvent;
     public bool IsEmperor = false;
+
+    //---------鍏充簬浠诲姟闇�瑕佺殑鏁版嵁
+    public List<int> TaskId_Skill = new List<int>();
+    public List<int> TaskId_Skill1 = new List<int>();
+    public int ItemID = 0;
+    public int UnitPrice = 0;
+    public int ItemNumber = 0;
+
+
+    private void GetPassiveSkillTask()//鑾峰彇浠诲姟鏁版嵁
+    {
+        TaskId_Skill.Clear();
+        TaskId_Skill1.Clear();
+        var PassiveSkillTaskconfig = Config.Instance.Get<FuncConfigConfig>("PassiveSkillTask");
+        int[] TaskId_SkillInt = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical1);
+        for (int i = 0; i < TaskId_SkillInt.Length; i++)
+        {
+            TaskId_Skill.Add(TaskId_SkillInt[i]);
+        }
+        int[] TaskId_SkillInt1 = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical2);
+        for (int i = 0; i < TaskId_SkillInt1.Length; i++)
+        {
+            TaskId_Skill1.Add(TaskId_SkillInt1[i]);
+        }
+        int[] PassiveSkillTask = ConfigParse.GetMultipleStr<int>(PassiveSkillTaskconfig.Numerical3);
+        if (PassiveSkillTask.Length >= 3)
+        {
+            ItemID = PassiveSkillTask[0];
+            UnitPrice = PassiveSkillTask[1];
+            ItemNumber = PassiveSkillTask[2];
+        }     
+    }
+
+
     private void UseItemSuccessAct(int Index, int ItemID)
     {
         if (ItemID == 221)
diff --git a/System/MainInterfacePanel/SideMission.cs b/System/MainInterfacePanel/SideMission.cs
index 8c168cf..b9ec018 100644
--- a/System/MainInterfacePanel/SideMission.cs
+++ b/System/MainInterfacePanel/SideMission.cs
@@ -9,9 +9,11 @@
 using TableConfig;
 using System.Collections.Generic;
 //浠诲姟闈㈡澘鐨勬敮绾夸换鍔�
-namespace Snxxz.UI {
+namespace Snxxz.UI
+{
 
-    public class SideMission:MonoBehaviour {
+    public class SideMission : MonoBehaviour
+    {
         [SerializeField] ScrollerController _TaskRamusList;
         //鍙充晶闈㈡澘
         [SerializeField] Text _Text_TaskName;//浠诲姟鍚�
@@ -25,11 +27,15 @@
         PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<PlayerTaskDatas>()); } }
         ItemTipsModel _itemTipsModel;
         ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel<ItemTipsModel>()); } }
+        PlayerPackModel _playerPack;
+        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
+        PlayerMainDate m_MainModel;
+        PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
         private List<RewardAnalysis.RewardInfo> rewardList = new List<RewardAnalysis.RewardInfo>();
         private int TaskIdNow = 0;
         private void Awake()
         {
-            
+
         }
         private void Start()
         {
@@ -39,25 +45,108 @@
         {
             TaskIdNow = 0;
             _TaskRamusList.OnRefreshCell += OnRefreshGridCell;
+            playerPack.RefreshItemCountAct += RefreshItemCountAct;
+            playerPack.ItemCntReduceAct += ItemCntReduceAct;
             OnCreateGridLineCell(_TaskRamusList);
         }
 
         private void OnDisable()
         {
             _TaskRamusList.OnRefreshCell -= OnRefreshGridCell;
+            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
+            playerPack.ItemCntReduceAct -= ItemCntReduceAct;
+        }
+
+        private void ItemCntReduceAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        _TaskRamusList.m_Scorller.RefreshActiveCellViews();//鍒锋柊褰撳墠鍙
+                    }
+                }
+            }
+        }
+
+        private void RefreshItemCountAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        _TaskRamusList.m_Scorller.RefreshActiveCellViews();//鍒锋柊褰撳墠鍙
+                    }
+                }
+            }
         }
 
         private void ForwardButton()
         {
+            if (mainModel.TaskId_Skill1.Contains(TaskIdNow))
+            {
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    taskmodel.CompletionOfTask(TaskIdNow);
+                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                }
+                else
+                {
+                    int Gold = (int)UIHelper.GetMoneyCnt(1);//浠欑帀
+                    int GoldPaper = (int)UIHelper.GetMoneyCnt(2);//缁戠帀
+                    string strNull = string.Empty;
+                    int needNumber = (mainModel.ItemNumber - itemNumber) * mainModel.UnitPrice;//鎵�闇�閲戦
+                    if (GoldPaper >= needNumber)
+                    {
+                        strNull = string.Format(Language.Get("PassiveSkillTask3"), needNumber);
+                    }
+                    else
+                    {
+                        strNull = string.Format(Language.Get("PassiveSkillTask4"), needNumber, GoldPaper, needNumber- GoldPaper);
+                    }
+                    ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), strNull, (bool isOk) =>
+                    {
+                       
+                        if (isOk)
+                        {
+                            if (Gold + GoldPaper >= needNumber)
+                            {
+                                taskmodel.CompletionOfTask(TaskIdNow);
+                                WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                            }
+                            else
+                            {
+                                if (VersionConfig.Get().isBanShu)
+                                {
+                                    SysNotifyMgr.Instance.ShowTip("GoldErr");
+                                    return;
+                                }
+                                WindowCenter.Instance.Open<RechargeTipWin>();
+                            }
+                        }                    
+                    });
+
+                }
+                return;
+            }
             if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)
             {
                 taskmodel.CompletionOfTask(TaskIdNow);
+                if (mainModel.TaskId_Skill.Contains(TaskIdNow))
+                {
+                    WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.SkillFunc2);
+                }
             }
             else
             {
                 _Text_TaskTarget.ExcuteHref();
             }
-            
+
             WindowCenter.Instance.CloseImmediately<TaskWin>();
             WindowCenter.Instance.Open<MainInterfaceWin>();
         }
@@ -92,17 +181,17 @@
                 var taskname = taskmodel.SideQuestsDic[TaskId].Name;
                 if (Config.Instance.Get<TASKINFOConfig>(taskname) == null)
                 {
-                    DebugEx.LogError("TASKINFO浠诲姟琛ㄦ牸娌℃湁鑾峰彇鍒拌浠诲姟鍚嶇О"+ taskname);
+                    DebugEx.LogError("TASKINFO浠诲姟琛ㄦ牸娌℃湁鑾峰彇鍒拌浠诲姟鍚嶇О" + taskname);
                     return;
                 }
-                sideMissionTitleBtton.TitleName.text= Config.Instance.Get<TASKINFOConfig>(taskname).show_writing;//浠诲姟鍚�
+                sideMissionTitleBtton.TitleName.text = Config.Instance.Get<TASKINFOConfig>(taskname).show_writing;//浠诲姟鍚�
                 if (!taskmodel.SideQuestsDic.ContainsKey(TaskId))
                 {
                     return;
                 }
                 sideMissionTitleBtton.Text_RamusState.text = GegionalTaskStatus(taskmodel.SideQuestsDic[TaskId].MissionState);
                 sideMissionTitleBtton.SideMissionTitleBtton1.RemoveAllListeners();
-                sideMissionTitleBtton.SideMissionTitleBtton1.AddListener(()=> 
+                sideMissionTitleBtton.SideMissionTitleBtton1.AddListener(() =>
                 {
                     if (TaskId != TaskIdNow)
                     {
@@ -122,24 +211,43 @@
             _Text_TaskName.text = Config.Instance.Get<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Name).show_writing;//浠诲姟鍚�
             _Text_TaskDescribe.text = Config.Instance.Get<TASKINFOConfig>(taskmodel.SideQuestsDic[taskID].Desclist).show_writing;//浠诲姟鎻忚堪
             string strINfor = taskmodel.SideQuestsDic[taskID].InforList;
-            string str = Config.Instance.Get<TASKINFOConfig>(strINfor).show_writing;
+            string str = string.Empty;
+            if (mainModel.TaskId_Skill1.Contains(taskID))
+            {
+                int itemNumber = playerPack.GetItemCountByID(PackType.rptItem, mainModel.ItemID);//鑾峰彇鐗规畩鐗╁搧
+                if (itemNumber >= mainModel.ItemNumber)
+                {
+                    string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, mainModel.ItemNumber);
+                    str = Str_A;
+                }
+                else
+                {
+                    string Str_A = string.Format(Language.Get("PassiveSkillTask1"), mainModel.ItemID, itemNumber);
+                    str = Str_A;
+                }
+            }
+            else
+            {
+                str = Config.Instance.Get<TASKINFOConfig>(strINfor).show_writing;
+            }       
             str = WordAnalysis.Color_Start_Regex.Replace(str, string.Empty);
             str = WordAnalysis.Color_End_Regex.Replace(str, string.Empty);
             _Text_TaskTarget.text = str;//浠诲姟鐩爣
-            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3)
+           
+            if ((int)taskmodel.GetTaskStatus(TaskIdNow) == 3 || mainModel.TaskId_Skill1.Contains(taskID))//鑳藉杩涜绔嬪嵆瀹屾垚鐨勬敮绾夸换鍔�
             {
-                _Text_Forward.text = string.Format(Language.Get("FinishAtOnce_Z")) ;
+                _Text_Forward.text = string.Format(Language.Get("FinishAtOnce_Z"));
             }
             else
             {
                 _Text_Forward.text = TaskStatus(taskmodel.SideQuestsDic[taskID].MissionState);
             }
-            
+
             if (taskmodel._DicTaskInformation.ContainsKey(taskID))
             {
                 _Text_TaskTarget.SetReplaceInfo(taskmodel._DicTaskInformation[taskID]);
             }
-          
+
             if (taskmodel.SideQuestsDic[taskID].RewardList == null)
             {
                 if (_Grid.childCount != 0)
diff --git a/System/MainInterfacePanel/TaskListTip.cs b/System/MainInterfacePanel/TaskListTip.cs
index 5981779..a7f6553 100644
--- a/System/MainInterfacePanel/TaskListTip.cs
+++ b/System/MainInterfacePanel/TaskListTip.cs
@@ -33,6 +33,10 @@
         TreasureModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<TreasureModel>()); } }
         PlayerTaskDatas m_TaskModel;
         PlayerTaskDatas taskmodel { get { return m_TaskModel ?? (m_TaskModel = ModelCenter.Instance.GetModel<PlayerTaskDatas>()); } }
+        PlayerPackModel _playerPack;
+        PlayerPackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); } }
+        PlayerMainDate m_MainModel;
+        PlayerMainDate mainModel { get { return m_MainModel ?? (m_MainModel = ModelCenter.Instance.GetModel<PlayerMainDate>()); } }
         List<int> RenzhuTaskIDList = new List<int>();//娉曞疂浠诲姟鏁扮粍ID
         List<int> ListSort = new List<int>();//鐢ㄤ簬鎺掑垪椤哄簭(鏈崱绾�)
         List<int> ListSort1 = new List<int>();//鐢ㄤ簬鎺掑簭锛堝崱绾э級
@@ -104,12 +108,12 @@
             PlayerTaskDatas.Event_TaskRefreshes += TaskRefreshes;//浠诲姟鐨勫埛鏂�
             PlayerTaskDatas.Event_TaskToDelete += OnTaskToDelete;//浠诲姟鐨勫垹闄�
             PlayerTaskDatas.Event_TaskInformation += TaskInformation;//浠诲姟瀛楀吀淇℃伅
-            //PlayerTaskDatas.CardLevelChange += CardLevelChange;//浠诲姟鍗$骇鐘舵�佹敼鍙�
             PlayerTaskDatas.MainCardLevelChange += MainCardLevelChange;//鍗$骇浠诲姟淇敼
             model.collectingTreasureChangeEvent += OnCollectingTreasureChangeEvent;
             FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
             TreasureNewGotWin.CloseTreasureNewGotWinEvent += CloseTreasureNewGotWinEvent;
-
+            playerPack.RefreshItemCountAct += RefreshItemCountAct;
+            playerPack.ItemCntReduceAct += ItemCntReduceAct;
             OnCollectingTreasureChangeEvent(TreasureCategory.Human);
             TaskScheduling();//浠诲姟鎺掑簭  1
             TheTaskToGenerate();//浠诲姟鐢熸垚
@@ -139,11 +143,55 @@
             FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
             TreasureNewGotWin.CloseTreasureNewGotWinEvent -= CloseTreasureNewGotWinEvent;
             PlayerTaskDatas.MainCardLevelChange -= MainCardLevelChange;//鍗$骇浠诲姟淇敼
+            playerPack.RefreshItemCountAct -= RefreshItemCountAct;
+            playerPack.ItemCntReduceAct -= ItemCntReduceAct;
+        }
+
+        private void ItemCntReduceAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3== mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        TaskIdUpdate(key);
+                    }
+                }
+            }
+            
+        }
+
+        private void RefreshItemCountAct(PackType arg1, int arg2, int arg3)
+        {
+            if (arg1 == PackType.rptItem && arg3 == mainModel.ItemID)
+            {
+                foreach (var key in taskmodel.SideQuestsDic.Keys)
+                {
+                    if (mainModel.TaskId_Skill1.Contains(key))
+                    {
+                        TaskIdUpdate(key);
+                    }
+                }
+            }
+        }
+
+        private void TaskIdUpdate(int taskId)
+        {
+            int leng = Content.childCount;
+            for (int i = 0; i < leng; i++)
+            {
+                GameObject childObj = Content.GetChild(i).gameObject;
+                TaskType childObjTaskType = Content.GetChild(i).gameObject.GetComponent<TaskType>();
+                if (childObj.activeSelf && childObjTaskType.TaskID == taskId)
+                {
+                    childObj.GetComponent<FlyingShoesTask>().FlyingShoes_Task(taskId);
+                }
+            }
         }
 
         private void MainCardLevelChange(int _id)
         {
-
             TaskScheduling();
             bool IsDefault = true;
             var State = taskmodel.GetTaskStatus(_id);
@@ -348,7 +396,6 @@
             {
                 _list.Sort(Compare1);//鍗$骇鎺掑簭   
             }
-
         }
         int Compare(int x, int y)//榛樿鎺掑簭(鏃犲崱绾�)
         {
@@ -401,8 +448,6 @@
                 var _position = (_list.Count - type) * m_SizeHeight + (_list.Count - type - 1) * 2;
                 _position -= 196;
                 m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(_position / ((Content as RectTransform).sizeDelta.y - 196));
-                // m_ScrollRect.verticalNormalizedPosition = Mathf.Clamp01(m_ScrollRect.verticalNormalizedPosition + ((Content as RectTransform).sizeDelta.y - 196));
-                //m_ScrollRect.verticalNormalizedPosition = ((float)1 - (float)(type + 1) / _list.Count);
             }
         }
     }

--
Gitblit v1.8.0